【问题标题】:JTS: How to convert polygon into MultiLineStringJTS:如何将多边形转换为 MultiLineString
【发布时间】:2023-03-11 15:22:02
【问题描述】:

我有多边形形状,我想将它转换为 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继续?

【问题讨论】:

  • 您要提取多边形的边界吗?如果不是,请更好地解释您的意思是哪个多线字符串
  • @TommasoDiBucchianico 是的,多边形是由线条构成的,所有线条共同构成一个多线串

标签: java gis geotools jts


【解决方案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();
}

【讨论】:

  • 你好。相反的可能?将多线串转换为多边形?谢谢。
猜你喜欢
  • 2011-02-27
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多