填坑:Maven工程引用GeoTools依赖

x33g5p2x  于2022-05-19 转载在 Java  
字(2.2k)|赞(0)|评价(0)|浏览(961)

这两天在做一个系统的后台,需要用到GeoTools做后端空间分析,记录一下自己遇到的问题。
项目通过Maven进行构建,参照文档Maven Quickstart添加GeoTools依赖和远程仓库地址。

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.geotools</groupId>
  4. <artifactId>gt-shapefile</artifactId>
  5. <version>${geotools.version}</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.geotools</groupId>
  9. <artifactId>gt-swing</artifactId>
  10. <version>${geotools.version}</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.geotools</groupId>
  14. <artifactId>gt-epsg-hsql</artifactId>
  15. <version>${geotools.version}</version>
  16. </dependency>
  17. </dependencies>
  18. <repositories>
  19. <repository>
  20. <id>maven2-repository.dev.java.net</id>
  21. <name>Java.net repository</name>
  22. <url>http://download.java.net/maven/2</url>
  23. </repository>
  24. <repository>
  25. <id>osgeo</id>
  26. <name>Open Source Geospatial Foundation Repository</name>
  27. <url>http://download.osgeo.org/webdav/geotools/</url>
  28. </repository>
  29. <repository>
  30. <snapshots>
  31. <enabled>true</enabled>
  32. </snapshots>
  33. <id>boundless</id>
  34. <name>Boundless Maven Repository</name>
  35. <url>http://repo.boundlessgeo.com/main</url>
  36. </repository>
  37. </repositories>

但是我的maven没有把依赖下载成功,于是我就用笨办法,将GeoTools对应的编译版本下载下来,并利用《填坑:IDEA导入Maven工程无法下载依赖项》方法,将依赖的jar包注册到本地仓库中。问题就随之而来了。
在引用到GeoTools类库中,定义坐标系,并建立坐标系转换关系时,报错!

  1. CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326");
  2. CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:3785");
  3. MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS);

对比参考文档CRS Lab Application,并没发现什么不同。但从报错结果看,是定义的EPSG坐标系无法实例化,折腾再三,将geotools文件夹放入src目录下,然后再项目classpath目录下引用对应的jar包,这样能够运行起来,但是将项目打包后却仍然报错。
最终,发现引入以上三个GeoTools库的依赖关系时,它会自动构建和其他包的依赖并将这些依赖包含在它的次层级内,如图所示

从本地仓库中,也可以看出这种依赖关系

最后还是翻墙,老老实实将依赖下载下来。如果你配置了阿里的镜像,可以在自己的maven配置文件修改一下,直接从GeoTools的远程库中下载。

  1. <mirror>
  2. <id>alimaven</id>
  3. <name>aliyun maven</name>
  4. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  5. <mirrorOf>*,!osgeo,!maven2-repository.dev.java.net,!boundless</mirrorOf>
  6. </mirror>

相关文章

最新文章

更多