Ошибка загрузки геометрии полигонов с использованием хранилища данных файла формы с помощью geotools 24.0

#polygon #geotools

#полигон #geotools

Вопрос:

Недавно я обновил свои зависимости geotools с 23.2 до 24.0. у меня возникает следующая ошибка, когда я пытаюсь загрузить FeatureCollection из хранилища данных файла формы с геометрией полигона, кажется, эта проблема была введена в выпуске 24.0 geotools, кто-нибудь теперь, как решить эту проблему, пожалуйста

 java.lang.NoSuchMethodError: org.locationtech.jts.geom.Polygon.getExteriorRing()Lorg/locationtech/jts/geom/LineString;
 

Комментарии:

1. Похоже, вы не обновили свою зависимость от JTS — можете ли вы добавить зависимости из своего файла pom

2. Я просто исправляю проблему, добавив зависимость jts 1.16.1 в мою группу компиляции проекта gradle: ‘org.locationtech.jts’, имя: ‘jts-core’, версия: ‘1.16.1’ я думаю, что решение состоит в том, чтобы понизить версию jts, поскольку она не работает с geolatte в последних версиях.

3. Я думаю, что проблема была в несовместимости между geolatte-geom 1.6.0 и jts-core 1.17.0, недавно я прочитал статью ООН об этом: gitmemory.com/issue/GeoLatte/geolatte-geom/111/655654867 , причина в том, что причина в том, что в версии 1.17.0 JTS класс org.locationtech.jts.geom. Polygon возвращает LinearRing вместо LineString в методе getExteriorRing.

4. Точно, поэтому вы не можете запускать GeoTools 24.x, пока GeoLatte не обновит его версию JTS

5. Но сейчас я использую geotools 24.0 с jts 1.16.1, у меня все работает нормально.

Ответ №1:

GeoTools обновил JTS до версии 1.17.0 с версией 24.0 — это изменило тип возвращаемого getExteriorRing значения to LinearRing from LineString . Предполагается, что это всего лишь двоичное изменение, поэтому вы сможете справиться с ним, просто перекомпилировав код, использующий этот метод.