填坑:Maven工程引用GeoTools依赖

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

    <dependencies>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-shapefile</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-swing</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-epsg-hsql</artifactId>
            <version>${geotools.version}</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>maven2-repository.dev.java.net</id>
            <name>Java.net repository</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
        <repository>
            <id>osgeo</id>
            <name>Open Source Geospatial Foundation Repository</name>
            <url>http://download.osgeo.org/webdav/geotools/</url>
        </repository>
        <repository>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <id>boundless</id>
          <name>Boundless Maven Repository</name>
          <url>http://repo.boundlessgeo.com/main</url>
        </repository>
    </repositories>

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

CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326");
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:3785");

MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS);

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

image.png

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

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

    <mirror> 
      <id>alimaven</id> 
      <name>aliyun maven</name> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>*,!osgeo,!maven2-repository.dev.java.net,!boundless</mirrorOf> 
    </mirror>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,165评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,174评论 19 139
  • |-1-更新内容[6.从仓库解析依赖的机制(重要)] 1Maven仓库作用 仓库用来存储所有项目使用到构件,在ma...
    zlcook阅读 11,434评论 0 25
  • 阿呜阿呜阅读 1,553评论 0 0
  • 官网原文:https://www.fusetools.com/learn/fusejs FuseJS简介 Fuse...
    赵赵811阅读 11,455评论 0 2

友情链接更多精彩内容