postgis-jdbc-jtsparser и геоинструменты несовместимы?

Я пытаюсь использовать postgis-jdbc-jtsparser с геоинструментами 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.

Это известная проблема? Есть ли какое-нибудь простое решение? Мы используем геоинструменты только для преобразования ссылок на сетки (через библиотеку hsql).


person Tim Pigden    schedule 11.10.2020    source источник
comment
Geotools имеет версию 1.17, поэтому вам нужно вернуться к версии 22 или около того, чтобы получить 1.15.   -  person Ian Turton    schedule 11.10.2020


Ответы (2)



версии JTS разные, для этого вы можете скачать правильную версию через Geolatte -> Geom 1.7.0 (это реализует JTS 1.17). Вам не нужно зависеть только от зависимостей hibernate-spatial, скачайте библиотеки для адаптации, если hibernate-spatial не предоставляет.

person Narcieliton Lopes    schedule 22.02.2021
comment
спасибо, интересно. Я не сталкивался с геолатте-геом. И привязки scala тоже :-) - person Tim Pigden; 23.02.2021