PostGIS整合Hibernate4.0+Spring(Maven,Kepler)

本文档详细介绍了如何在Maven和Kepler环境下整合PostGIS、Hibernate4.0及Spring,包括PostGIS的基本概念、安装步骤、创建空间数据表,以及使用Hibernate Spatial进行空间数据操作。通过实例展示了如何建立测试数据、保存空间类型数据、查询方圆500公里内的城市。同时,文中还解决了整合过程中遇到的异常问题。
摘要由CSDN通过智能技术生成

PostGIS整合Hibernate4.0+Spring(Maven,Kepler)

 

这里我主要讲实际操作和环境的搭配,一些基本概念,请查看维基百科和百度百科。

 

一 PostGIS基本概念:

PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。

二 使用的地方:比如查询方圆5公里以内的商店,比如两个城市间的距离等这些跟空间操作有关的功能。

 

三postGIS的安装:

这里我以postgres9.3版本为蓝图讲解下基本的安装。

1 如果你是已经安装好postgres9.3数据库,而需要额外加载postGIS,请去postGIS官网下载

http://postgis.net/install/

 

2 WINDOW请选择Windows Downloads这个选项,进入下载页面,选择相应版本下载安装。

 

3 安装完成后,会在你的数据库拓展里面看到postgis,posgis_topology等跟postgis有关的拓展。

 

4 选择postgis建立拓展。

这样基本的安装就完成了,在插件里面,会发现多了一个PostGIS Shapefile and DBF loader 2.1的插件。

 

 

 

 

 

 而在数据库表中也会多一张叫spatial_ref_sys的表,这个表中包含基本的坐标系的空间信息。


至此,基本的postGIS已经安装成功了。如果有相关疑问或者失败的情况,请参考官方文档:

http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_tut01

里面介绍的很详细。

接下来是自己建立测试数据表,用于测试。我截取一部分从官放快速开发的内容,其他请参阅官方文档。

http://live.osgeo.org/zh/quickstart/postgis_quickstart.html

四 手工建立空间数据表格

  空间数据库已经建立,现在可以建立具有空间信息的表格。

  首先建立一个常规的表格存储有关城市(cities)的信息。这个表格有两栏,一个是 ID 编号,一个是城市名:

demo=# CREATE TABLE cities ( id int4, name varchar(50));

  现在添加一个空间栏用于存储城市的位置。习惯上这个栏目叫做 the_geom 。它记录了数据为什么类型(点、线、面)、有几维(这里是二维)以及空间坐标系统。此处使用 EPSG:4326 坐标系统:

demo=# SELECT AddGeometryColumn ('cities', 'the_geom',4326, 'POINT', 2);

  完成后,查询 cities 表单应当显示这个新栏目。同时页面将显示当前表达没有记录(0 rows)。

demo=# SELECT * from cities;

 id | name |the_geom

----+------+----------

(0 rows)

  为添加记录,需要使用 SQL 命令。对于空间栏,使用 PostGIS 的 ST_GeomFromText 可以将文本转化为坐标与参考系号的记录:

demo=# INSERT INTO cities (id, the_geom, name) VALUES(1,ST_GeomFromText('POINT(-0.1257 51.508)',4326),'London, England');

demo=# INSERT INTO cities (id, the_geom, name) VALUES(2,ST_GeomFromText('POINT(-81.233 42.983)',4326),'London, Ontario');

demo=# INSERT INTO cities (id, the_geom, name) VALUES(3,ST_GeomFromText('POINT(27.91162491 -33.01529)',4326),'East London,SA');

  当然,这样的输入方式难以操作。其它方式可以更快的输入数据。就目前来说,表格内已经有了一些城市数据,可以先进行查询等操作。

PS:你也可以在你已经存在的表中添加空间坐标字段,添加语句如下:

 

SELECT AddGeometryColumn ('cities', 'the_geom', 4326, 'POINT', 2);

 

第一个参数是你要添加的表名,第二个是表中你要添加的字段名称,第三个是SRID信息,之后是空间数据类型,是POINT还是其他。这些在官方文档都有API,请自行查阅。

 

 

至此,数据的安装和测试表的建立都已经完成。开始主要部分,环境的搭建和测试。正好也在熟悉下MAVEN搭建hibernate和Spring.

 

五 Maven搭建hibernate项目。

首先我单独讲,怎么用maven搭建hibernate项目,不使用spring.循序渐进才能知其然也知其所以然。

这里构建hibernate项目会和普通的hibernate项目有所不同,需要添加很多额外的JAR包用于支持postGIS的操作。

 

至于怎么用manven建立web项目,其实有很多技术同志已经写的很好,并且很详细。这里我推荐两个我实践过的。大家自己去看。

http://blog.csdn.net/clj198606061111/article/details/20221133

http://blog.csdn.net/yuguiyang1990/article/details/8796726

 

建立好的基本web项目,pom配置如下:

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.esiee.postGis</groupId>

  <artifactId>postGis</artifactId>

  <packaging>war</packaging>

  <version>0.0.1-SNAPSHOT</version>

  <name>postGis Maven Webapp</name>

  <url>http://maven.apache.org</url>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.11</version>

      <scope>test</scope>

    </dependency>

    <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>servlet-api</artifactId>

            <version>2.3</version>

            <scope>provided</scope>

   </dependency>

   <dependency>

            <groupId>log4j</groupId>

            <artifactId>log4j</artifactId>

            <version>1.2.17</version>

   </dependency>

  </dependencies>

  <build>

    <finalName>postGis</finalName>

    <plugins>

            <plugin>

                <artifactId>maven-compiler-plugin</artifactId>

                <configuration>

                    <source>1.6</source>

                    <target>1.6</target>

                </configuration>

            </plugin>

            <plugin>

                <groupId>org.codehaus.mojo</groupId>

                <artifactId>tomcat-maven-plugin</artifactId>

                <configuration>

                    <warFile>target/postGis.war</warFile>

                </configuration>

            </plugin>

  </plugins>

  </build>

 

</project>

 

基本目录格式如下:

 

 

现在我们开始进行支持postGIS的Hibernate的配置,Hbiernate要能支持postGIS,需要用到以下几个工具的帮助。

JTS,Hibernate-Spatial, postgis-jdbc

我的版本如下:

  • hibernate-spatial 4.0
  • PostGIS JDBC 1.3.3
  • postgresql-9.3-1100-jdbc41
  • Hibernate 4.2.13.Final
  • JTS 1.8

 

 

首先在pom.xml中加入版本控制信息

 <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <hibernate.version>4.2.13.Final</hibernate.version>

        <maven.tomcat.port>8088</maven.tomcat.port>

  </properties>

 

这里,我们使用4.2.13版本,因为4.3版本有BUG,不能支持Hibernate-Spatial,具体BUG文档,请参阅:

https://hibernate.atlassian.net/browse/HSEARCH-1386

 

现在开始配置:

首先基本的hibernate配置文件如下:

        <dependency>

            <groupId>org.hibernate</groupId>

            <artifactId>hibernate-core</artifactId>

            <version>${hibe

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值