文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

项目中需要在浏览器端直接上传SHP后服务端进行数据的自动入PG库以及发布至geoserver。本方法是以geotools为开发工具实现入库,以geoserver manager来实现服务的自动发布。这里着重描述geotools编写SHP入库的方法。

2.Geotools介绍

2.1总体介绍

Geotools是Java语言编写的开源GIS工具包,其功能涵盖了地理信息数据读写、处理、坐标转换、查询分析、格式化输出等多个方面。该项目已有十多年历史,生命力旺盛,代码非常丰富,包含多个开源GIS项目,并且基于标准的GIS接口。Geotools主要提供各种GIS算法,各种数据格式的读写和显示。在显示方面要差一些,只是用Swing实现了地图的简单查看和操作。但是用户可以根据Geotools提供的算法自己实现地图的可视化。OpenJump和udig就是基于Geotools的。
    Geotools用到的两个较重要的开源GIS工具包是JTS和GeoAPI。前者主要是实现各种GIS拓扑算法,也是基于GeoAPI的。但是由于两个工具包的GeoAPI分别采用不同的Java代码实现,所以在使用时需要相互转化。Geotools又根据两者定义了部分自己的GeoAPI,所以代码显得臃肿,有时容易混淆。由于GeoAPI进展缓慢,Geotools自己对其进行了扩充。另外,Geotools现在还只是基于2D图形的,缺乏对3D空间数据算法和显示的支持。

Geotools The Open Source Java GIS Toolkit的相关学习网站如下:

http://geotools.org/   Geotools官方网站
http://docs.geotools.org/latest/javadocs/          Geotools API在线文档
http://docs.codehaus.org/display/GEOTDOC/Home Geotools用户指南
http://repo.opengeo.org                              Geotools的maven仓库
http://download.osgeo.org/webdav/geotools/        maven仓库地址

2.2整体架构

org.geotools.data包负责地理数据的读写(如:ShapefileReader用于读取shpfile数据)。

org.geotools.geometry包负责提供对JTS的调用接口,以将地理数据封装成JTS中定义的几何对象(Geometry)。

org.geotools.feature包负责封装空间几何要素对象(Feature),对应于地图中一个实体,包含:空间数据(Geometry)、属性数据(Aitribute)、参考坐标系(Refereneedsystem)、最小外包矩形(EnveloPe)等属性,是GlS操作的核心数据模型。

2.3geotools中的核心Jar说明

a.GT核心库

其中红色的包含了要素定义、SHP读取、EPSG获取等相关方法的jar。

b.hsqldb

需要配合gt-epsg-hsql来使用,可以查询对应的epsg编码。

c. Image I/O-Ext

支持跟GIS有关的图片格式。

d.jts

JTS提供了这些空间数据类Point、MultiPointLineString、LinearRing(封闭的线条)、MultiLineString (多条线)、PolygonMultiPolygon 、 GeometryCollection(包括点,线,面)。JTS包结构为计算交点(noding包)、几何图形操作(operation包)、平面图(planargraph包)、多边形化(polygnize包)、精度(precision)、工具(util包)。

e.jsr、vecmath

做投影相关运算时需要这两个jar: jsr-275-1.0-beta-2.jar和vecmath-1.3.1.jar。

f. opengis库

h.其他各类jar

包含数据库驱动的jar,log4j,XML解析的jar等等。可以实现读取不同数据库的数据,对xml格式的文件比如SLD的解析等等。

3.SHP各文件的简介

shape文件由ESRI开发,一个ESRI(Environmental Systems Research Institute)的shape文件包括一个主文件,一个索引文件,和一个dBASE表,其中主文件的后缀就是.shp。

主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的shape。

索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移。

dBASE表包含记录的feature的特征。几何和属性间的一一对应关系是基于记录数目的。在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。

4.ST_Geometry函数

ST_Geometry SQL 数据类型用于存储在 DB2、Informix、Oracle 和 PostgreSQL 的地理数据库中。此数据类型可在地理数据库中使用,另外还可通过 SQL 访问第三方应用程序的简单要素类几何。ST_Geometry 执行空间的 OGC 和 ISO SQL 多媒体规范。

Oracle中安装了SDE后,能支持ST_Geometry函数。Oracle Spatial版本则有其自带的SDO_Geometry相关函数。这里,我们在PostgreSQL上安装了PostGIS,使其支持ST_Geometry函数。对于空间数据的描述,PG中支持标准的OpenGIS的两种空间数据组织格式:Well-Known Text (WKT) 和 Well-Known Binary (WKB) 。

PostGIS在线文档:http://postgis.net/docs/manual-1.4/

空间函数文档:http://postgis.net/docs/manual-1.4/ch04.html

5.具体实现

5.1读取所有格式SHP并入库

5.2读取SHP的DBF文件

                  -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                 

转载于:https://www.cnblogs.com/naaoveGIS/p/6098515.html

简析服务端通过geotools导入SHP至PG的方法相关推荐

  1. CAS流程简析 服务端校验Ticket

    相关阅读 CAS基础组件 简介 CAS流程简析 服务端处理未携带Service登录请求 CAS流程简析 服务端处理携带Service登录请求 CAS基础组件 客户端过滤器 简介 用户访问客户端的请求若 ...

  2. nett服务器接收消息的方法,C#(一沙框架) .net core3.1 SignalR 服务端推送消息至客户端的实现方法,用弹窗插件进行显示,非常美观实用...

    C#(一沙框架) .net core3.1 SignalR 服务端推送消息至客户端的实现方法,用弹窗插件进行显示,非常美观实用 运行效果: 1.安装Microsoft.AspNetCore.Signa ...

  3. react 使用express实现简单的分页接口,以及服务端返回public文件夹里的图片方法

    前言 本文基于 react ("react": "^16.13.1") , express("express": "~4.16.1 ...

  4. 七日杀服务器自动保存时间,七日杀服务端架设 免主机跳出存档清空解决方法和技巧...

    一些玩家在玩七日杀的时候,使用主机用进入游戏创建游戏让朋友加进来玩的话,有时候主机会跳出,因此存档就没有保存成功,可能大家都已经试过很多次了,今天本站小编就为大家来介绍下七日杀服务端架设,主机退出免存 ...

  5. (亲测可用)修改VisualSVN Server地址为ip地址,修改svn服务端地址为ip或者域名地址的方法

    svn服务端搭建成功之后,地址太长很麻烦,想搞一个服务器专门做svn服务端,修改svn地址为ip地址 无奈网上教程不靠谱,于是自己研究了下 1.修改VisualSVN 的地址  2修改地址并保存 很多 ...

  6. 服务器配置公网ftp服务端(软件和python代码两种方法)

    FileZilla Server超详细配置 前言 一.配置教程 1.General settings(常规设置) 2.Passive mode settings(被动传输模式设置) 3.Securit ...

  7. 服务端事件EventSource揭秘 – royalrover – 博客园

    服务端事件EventSource揭秘 阅读目录 服务端推 EventSource规范简析 参考资料 服务端推 服务端推,指的是由服务器主动的向客户端发送消息(响应).在应用层的HTTP协议实现中,&q ...

  8. httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过htt......

    为什么80%的码农都做不了架构师?>>>    package url;import io.IoStreamUtil;import java.io.File; import java ...

  9. java客户端带证书访问服务端_客户端与服务器SSL双向认证(客户端:java-服务端:java)...

    客户端与服务器SSL双向认证(java-java):含源码 (一)实现技术: JSSE(Java Security Socket Extension) 是Sun为了解决在Internet上的实现安全信 ...

最新文章

  1. 探索MySQL高可用架构之MHA(6)
  2. 营销增长大揭密丨市场人应具备的101种硬核营销姿势
  3. winform 代码定义事件
  4. MySQL数据库密码重置
  5. java agent_如何脚踏实地构建Java Agent
  6. excel连接mysql 数据库
  7. [解决方案]在Sql Server 2008/2005 数据库还原出现 3154错误
  8. halcon 深度学习英伟达显卡部署
  9. 双层pdf软件free_如何一键下载网上文档以及pdf
  10. 『ACM』国家集训队论文集(最新)(1999-2017)(全)
  11. UI设计现状与发展趋势是什么
  12. 最近在玩跑跑卡丁车!
  13. 最激励人心\作为一个程序员
  14. 操作系统分类及Linux
  15. 印象笔记的使用技巧总结
  16. Windows 打开 Docker Desktop 出现错误:Docker failed to initialize
  17. 联想安装Ubuntu16.04LTS(双系统)知识点汇总(六个小时才下好
  18. 如何使用 Director 编写“拼图游戏”
  19. 人工智能科技如何为航空业“保驾护航”?
  20. 微信小程序——微信小程序分包

热门文章

  1. 从网上找到一个清晰CSS视频教程和大家分享一下
  2. 弹出窗口, 不显示工具栏等。
  3. 立体匹配算法实现之:AdaptWeight
  4. MPEG-7 视觉描述符
  5. WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
  6. Codeforces Round #312 (Div. 2)
  7. intel x540-at2 openstack 下桥接故障
  8. POJ 图算法(3)
  9. JAVA中字符串连接效率的测试(续)
  10. a,b互换,不使用中间变量