2015-09-27 484 views
3

我有多边形形状,我想将其转换为MultiLineString。请注意,通常方向不同:从点,坐标,线条等使用GeometryFactory构建多边形。我开始思考GeometryTransformer但它是很难理解的文档存在。所以我有这样的:JTS:如何将多边形转换为MultiLineString

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

如何继续在TODO

+0

你想提取多边形的边界?如果不是,请更好地解释你的意思 –

+0

@TommasoDiBucchianico是的,多边形是由线条构成的,并且所有线条构成一个多线串 – michael

回答

5

方法Polygon.getBoundary()计算多边形的边界。如果多边形没有孔(也只有一个边界),则返回LinearRing类型的对象。 如果多边形有孔 - 也有多个边界 - 则返回MultiLineString类型的对象。

使用梅索德Polygon.getNumInteriorRing(),以检查是否多边形有洞,比建一个MULTILINESTRING是必要的:

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(); 
} 
+0

Hello。相反是可能的吗?将多线串转换为多边形?谢谢。 – George