postgis-jdbc-jtsparser 和 geotools 不兼容?

postgis-jdbc-jtsparser and geotools incompatiblity?

我正在尝试将 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 没有提供,请下载库进行适配。