JTS / Geotools纠正多个几何体的并集/差异

时间:2013-05-03 13:48:42

标签: java geotools jts

问题:

我有一个包含目标区域(黄色)的形状文件。

我有一个包含建筑物的形状文件(绿色)。

我需要黄色区域的空白区域。

picture :: //db.tt/kjjXZlQF

我的解决方案:

  1. 获取该地区的所有建筑物

    Filter inPolygon = CQL.toFilter("WITHIN(the_geom,"+wktwriter.write(targetarea) + ")");

    FeatureCollection<SimpleFeatureType, SimpleFeature> collection = featureSource.getFeatures(inPolygon);//this works

  2. 从每个建筑物中获取它的几何图形并在目标区域上使用差异

    toCover = toCover.Difference(building);

  3. 第二解决方案:

    每栋建筑的联盟,最后差异。

    第三解决方案:

    将它们全部放在GeomtryCollection调用union中,然后使用差异

    这些解决方案中的每一个都给我提供如下图片

    图片:https://dl.dropboxusercontent.com/u/639458/stackoverflow/stfr2.png

    很明显,我尝试了几种方法来解决这个问题,方法是使用不同的方法来创建/制作或使用它。即使使用下面站点中的给定代码,它也无法正常工作。

    http://docs.geotools.org/latest/userguide/library/jts/combine.html

1 个答案:

答案 0 :(得分:1)

我的问题最终解决了,就像@mdup建议使用

一样
.buffer(0)