postgis-jdbc-jtsparser和geotools不兼容?

问题描述

我正在尝试将postgis-jdbc-jtsparser与geotools gt-epsg-hsql一起使用-以下是从我的sbt文件获取的(数据与相关的Maven声明相同

val postgisJts = "net.postgis" % "postgis-jdbc-jtsparser" % "2.5.0"
val `gt-main` = "org.geotools" % "gt-main" % "24.0"
val `gt-epsg-hsql` = "org.geotools" % "gt-epsg-hsql" % "24.0"

在运行测试时,出现此错误

 java.lang.NoSuchMethodError: org.locationtech.jts.geom.polygon.getExteriorRing()Lorg/locationtech/jts/geom/Linestring;

调查一下,似乎postgis使用的是jts 1.16.1或更高版本,而geotools的版本为1.13.0

大概在某个时候getExteriorRing发生了变化。 我们正在使用最新的postgres / postgis版本。

这是一个已知问题吗?有没有简单的解决方法?我们仅使用geotools进行网格参考转换(通过hsql库)

解决方法

GeoTools在July 8th 2020上从1.16迁移到1.17,因此您需要确保使用的是之前的版本,如果我正确阅读git历史记录,则为23.x版本。

,

JTS 版本不同,因此您可以通过 Geolatte -> Geom 1.7.0(实现 JTS 1.17)下载正确的版本。 您不需要只依赖 hibernate-spatial 依赖项,如果 hibernate-spatial 没有提供,请下载库以适应。