JTS: как преобразовать полигон в MultiLineString

У меня есть форма многоугольника, и я хочу преобразовать ее в MultiLineString. Обратите внимание, что обычно направление отличается: от точек, координат, линий и т. д. с использованием GeometryFactory построения полигона. Я начал думать о GeometryTransformer, но это сложно чтобы понять документацию там... Итак, у меня есть это:

import com.vividsolutions.jts.geom.*;
...
GeometryFactory gFactory = new GeometryFactory();
GeometryTransformer gTransform = new GeometryTransformer();
Polygon polygon = gFactory.createPolygon(someLinearRing, null);
MultiLineString mlString = polygon.TODO?

Как продолжить в TODO?


person michael    schedule 27.09.2015    source источник
comment
Вы хотите извлечь границы полигона? Если нет, объясните лучше, какую многострочную строку вы имеете в виду   -  person Tom-db    schedule 28.09.2015
comment
@TommasoDiBucchianico Да, многоугольник состоит из линий, и все линии вместе составляют одну многострочную строку.   -  person michael    schedule 28.09.2015


Ответы (1)


Метод Polygon.getBoundary() вычисляет границы полигона. Если в многоугольнике нет отверстий (также только одна граница), возвращается объект типа LinearRing. Если полигоны имеют дыры, а также более одной границы, возвращается объект типа MultiLineString.

Используйте метод Polygon.getNumInteriorRing(), чтобы проверить, есть ли в многоугольнике дыры, и затем необходимо построить многострочную строку:

GeometryFactory gFactory = new GeometryFactory();
if (polygon.getNumInteriorRing() == 0){
  // polygon has not holes, so extract the exterior ring
  // and build a multilinestring
  return gFactory.createMultiLineString(polygon.getExteriorRing());
}

else{
  // Polygon has holes, also several boundaries. 
  // Simply run getBoundary(), it will return a multilinestring
  return polygon.getBoundary();
}
person Tom-db    schedule 28.09.2015
comment
Здравствуйте.Возможно обратное?Преобразовать многострочную строку в многоугольник?Спасибо. - person George; 18.07.2017