У меня есть геометрия в формате java.lang.String. Я имею в виду, что беру его прямо из БД как java.lang.String, который хранится в переменной. Я хочу как-то преобразовать его в тип jts Geometry. Есть ли способ сделать это, или то, что я пытаюсь сделать, - это просто глупый подход?
Преобразование геометрии java.lang.String в геометрию jts
Ответы (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
Спасибо. Какой файл jar мне нужно импортировать, чтобы использовать WKTReader? Чтобы обойти эту проблему, я вызываю процедуру сохранения в PostgreSQL / PostGIS. Я работаю в Grails 4 и Java 8. Заранее благодарю вас за любой ответ.
- person Juan Salvador; 07.08.2019
‹! - 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