Преобразование геометрии java.lang.String в геометрию jts

У меня есть геометрия в формате java.lang.String. Я имею в виду, что беру его прямо из БД как java.lang.String, который хранится в переменной. Я хочу как-то преобразовать его в тип jts Geometry. Есть ли способ сделать это, или то, что я пытаюсь сделать, - это просто глупый подход?


jts
person user1120946    schedule 29.12.2011    source источник


Ответы (2)


Я предполагаю, что ваша геометрия имеет формат WKT (хорошо известный текст). Если нет, вы можете получить его в формате WKT, используя метод ST_AsText (требуется пространственная БД, которую, я полагаю, вы используете).

Простой пример того, как получить геометрию из строки WKT:

String wktString = "LINESTRING (0 0, 0 10)";
WKTReader reader = new WKTReader();
Geometry geom = reader.read(wktString);
person Lars    schedule 13.07.2016
comment
Спасибо. Какой файл jar мне нужно импортировать, чтобы использовать WKTReader? Чтобы обойти эту проблему, я вызываю процедуру сохранения в PostgreSQL / PostGIS. Я работаю в Grails 4 и Java 8. Заранее благодарю вас за любой ответ. - person Juan Salvador; 07.08.2019
comment
‹! - mvnrepository.com/artifact/org.locationtech.jts/jts- ядро - ›<dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> <version>1.16.1</version> </dependency> - person Lars; 07.08.2019

Вам нужно будет сначала преобразовать из String в Coordinates, прежде чем вы сможете преобразовать его в Geometry.

Если значения разделены запятыми, вы можете разделить их и создать массив координат.

String[] split=stringgeometry.split(",");
Coordinate[] coordinates = new Coordinate[split.length/2];
index = 0;  
for(int i=0;i<split.length;i+=2)
{
    coordinates[index]=new Coordinate(split[i], split[i+1]);
    index++;
}

После этого вы можете создать любую геометрию, которую захотите, используя класс GeometryFactory (). Например, чтобы создать строку строки,

Geometry geometry = new GeometryFactory().createLineString(coordinates);

Это то, что ты хочешь сделать?

person Joyson    schedule 25.09.2012