shp数据插入sde连接的PostgreSQL库(一)----基于 IntelliJ IDE的GeoTools快 ...

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

前言

   早就听闻大名鼎鼎的GeoTools,因为自己不搞Java,所以之前没用过,
背景

   最近有个需求,一个白模系统,具体是数据是用SDE导入到postgresql中,然后用arcgis server发布了矢量,最后用 arcgis api  for js 4.x拉伸,得到有高度的白模。以前的数据都是通过sde导入的,现在的需求是要通过前端,用户自己去更新矢量数据。本系列只涉及读取shp数据并插入到SDE连接的PostgreSQL已有表中。
  正常来说客户的数据量不大,可以用前端来做的,前端也有库解析shp文件,然后利用FeatureLayer.applyEdits() 实现跟数据库的操作,但是我还是想尝试下GeoTools,是个学习的机会,另外就是觉得前端不适合处理数据,
环境

  Windows 10
   IntelliJ IDE Ultimate 2021.3
  PostgreSql 9.4
  PostGIS Bundle 2.2 for PostgreSQL ×64 9.4
  ArcGIS 10.4.1
  ArcGIS Server 10.4.1
  ArcGIS API for JavaScript 4.24
 步骤

一.找到GeoTools官网

  会看到给出了官网列出几种环境的搭建方式,我们选择在IntelliJ IDE搭建环境:
 
               
  二.安装jdk

  jdk版本有很多,目前已经到Java20,但是感觉主流还是Java8,至少搭建GeoTools环境还是推荐用jdk1.8,尤其新手不要自找麻烦。下表展示了GeoTools与Java版本的对应关系(表格来源《GeoTools 地理信息系统开发》表2-1):
 
  
           
     另外注意设置环境变量
三.新建工程

  1.顺序依次为:新建工程,选择Maven,单击"Create from archetype",选择“org.apache.maven.archetypes:maven-archetype-quickstart
          
   2.单击Next,填写信息:
         
    3.保持默认,单击Finish:
          
    4.创建后的工程为(红可以看到色框在转圈像是下载包):
  

   5.完全结束后是这样子:

   6.运行下App文件,会打印处我们熟悉的“Hello World”:

 四.将Jar包添加到工程

  首先官方文档有个提示,启用离线模式。原文是“如果您按照本教程进行操作,则可能已经提供了预加载的 Maven 存储库。我们可以使用离线模式来确保 Maven 不会尝试下载任何依赖项”, 让设置里面把"Work offline”打个勾。但是我们根据官方教程操作,发现没有预加载库,所以这个选项务必不要打勾,否则依赖会下载失败!我们需要在线下载依赖。
 
 

 
 
  1.打开项目根目录下的 pom.xml 文件。您可以看到我们之前通过向导输入的一些信息。主要涉及到GeoTools的版本、依赖,存储库。不过为了加快速度,直接复制一份过去得了:
  
  1.   1 <?xml version="1.0" encoding="UTF-8"?>
  2.   2
  3.   3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.   4   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.   5   <modelVersion>4.0.0</modelVersion>
  6.   6
  7.   7   <groupId>org.geotools</groupId>
  8.   8   <artifactId>tutorial</artifactId>
  9.   9   <version>1.0-SNAPSHOT</version>
  10. 10
  11. 11   <name>tutorial</name>
  12. 12   
  13. 13   <url>http://www.example.com</url>
  14. 14
  15. 15   <properties>
  16. 16     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17. 17     <maven.compiler.source>1.7</maven.compiler.source>
  18. 18     <maven.compiler.target>1.7</maven.compiler.target>
  19. 19     <geotools.version>28-SNAPSHOT</geotools.version>
  20. 20     <maven.deploy.skip>true</maven.deploy.skip>
  21. 21   </properties>
  22. 22
  23. 23   <dependencies>
  24. 24     <dependency>
  25. 25       <groupId>junit</groupId>
  26. 26       <artifactId>junit</artifactId>
  27. 27       <version>4.11</version>
  28. 28       <scope>test</scope>
  29. 29     </dependency>
  30. 30     <dependency>
  31. 31       <groupId>org.geotools</groupId>
  32. 32       <artifactId>gt-shapefile</artifactId>
  33. 33       <version>${geotools.version}</version>
  34. 34     </dependency>
  35. 35     <dependency>
  36. 36       <groupId>org.geotools</groupId>
  37. 37       <artifactId>gt-swing</artifactId>
  38. 38       <version>${geotools.version}</version>
  39. 39     </dependency>
  40. 40     <dependency>
  41. 41       <groupId>org.geotools.jdbc</groupId>
  42. 42       <artifactId>gt-jdbc-postgis</artifactId>
  43. 43       <version>${geotools.version}</version>
  44. 44     </dependency>
  45. 45   </dependencies>
  46. 46
  47. 47   <repositories>
  48. 48     <repository>
  49. 49       <id>osgeo</id>
  50. 50       <name>OSGeo Release Repository</name>
  51. 51       <url>https://repo.osgeo.org/repository/release/</url>
  52. 52       <snapshots><enabled>false</enabled></snapshots>
  53. 53       <releases><enabled>true</enabled></releases>
  54. 54     </repository>
  55. 55     <repository>
  56. 56       <id>osgeo-snapshot</id>
  57. 57       <name>OSGeo Snapshot Repository</name>
  58. 58       <url>https://repo.osgeo.org/repository/snapshot/</url>
  59. 59       <snapshots><enabled>true</enabled></snapshots>
  60. 60       <releases><enabled>false</enabled></releases>
  61. 61     </repository>
  62. 62   </repositories>
  63. 63
  64. 64
  65. 65   <build>
  66. 66     <pluginManagement>
  67. 67       <plugins>
  68. 68         
  69. 69         <plugin>
  70. 70           <artifactId>maven-clean-plugin</artifactId>
  71. 71           <version>3.1.0</version>
  72. 72         </plugin>
  73. 73         
  74. 74         <plugin>
  75. 75           <artifactId>maven-resources-plugin</artifactId>
  76. 76           <version>3.0.2</version>
  77. 77         </plugin>
  78. 78         <plugin>
  79. 79           <artifactId>maven-compiler-plugin</artifactId>
  80. 80           <version>3.8.0</version>
  81. 81         </plugin>
  82. 82         <plugin>
  83. 83           <artifactId>maven-surefire-plugin</artifactId>
  84. 84           <version>2.22.1</version>
  85. 85         </plugin>
  86. 86         <plugin>
  87. 87           <artifactId>maven-jar-plugin</artifactId>
  88. 88           <version>3.0.2</version>
  89. 89         </plugin>
  90. 90         <plugin>
  91. 91           <artifactId>maven-install-plugin</artifactId>
  92. 92           <version>2.5.2</version>
  93. 93         </plugin>
  94. 94         <plugin>
  95. 95           <artifactId>maven-deploy-plugin</artifactId>
  96. 96           <version>2.8.2</version>
  97. 97         </plugin>
  98. 98         
  99. 99         <plugin>
  100. 100           <artifactId>maven-site-plugin</artifactId>
  101. 101           <version>3.7.1</version>
  102. 102         </plugin>
  103. 103         <plugin>
  104. 104           <artifactId>maven-project-info-reports-plugin</artifactId>
  105. 105           <version>3.0.0</version>
  106. 106         </plugin>
  107. 107       </plugins>
  108. 108     </pluginManagement>
  109. 109   </build>
  110. 110 </project>
复制代码
pom.xml  复制完毕后发现会有报错现象:

   2.右键项目,选择Maven,选择"Reload project":

   3.我们发现可以了:

   4.可以到C盘相关文件夹里面看到相关的文件都下载完成(其它两个27和30版本是之前踩坑留下的,为了写博客重新用了28版本):

   搭建环境部分到此结束,如果想测试环境是否可以运行,到官网后面有个“Quickstart Application”根据1~6步进行操作,会显示出地图的。

 
 
参考资料

有些资料可能没参考,只是觉得不错,所以收藏一下
1.《GeoTools 地理信息系统开发》 王项 刘钧文 王新宁 孙运娟
2.  Getting started with geotools.org using IntelliJ IDEA 2020(油管视频)
3.Geotools简介以及quickstsrt加载shp文件并显示
4.geoTools18.4开发环境快速搭建,使用java可视化读取shapefile文件_idea配置geotools_GIS开发者的博客-CSDN博客(不使用Maven)
5.GeoTools, the Java GIS toolkit Files (geotools包离线下载)
6. Introduction to GeoTools(概要,及一些常用的用法)
7.IDEA运行时报错“类文件具有错误的版本 55.0, 应为 52.0”的解决方法
8.GeoTools应用:提取Shape文件属性列头信息(1)(本地导入依赖

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表