gpt4 book ai didi

java - 通过 JTS 中的 union 组合 WKT 几何

转载 作者:行者123 更新时间:2023-11-30 10:32:12 32 4
gpt4 key购买 nike

我正在尝试读取 WKT 多边形(数十万个)并将它们组合成更大的“包含”多边形以减少数据大小。为了简洁起见,我省略了要使用的循环,所以这两个多边形应该作为示例。

我从未使用过 JTS,所以我天真的方法是这样的:

static Geometry combineIntoOneGeometry()
{
WKTReader wkt = new WKTReader();
Geometry[] geometries;
try
{
Geometry polygon1 = (Geometry) wkt.read("...");
Geometry polygon2 = (Geometry) wkt.read("...");
geometries = new Geometry[] { }; //add them here ?
geometries.add(polygon1, polygon2); //add doesn't exist, of course...
}
catch (ParseException e)
{
e.printStackTrace();
}

GeometryCollection gc = new GeometryFactory().createGeometryCollection(geometries); //can't instantiate GeometryFactory
return gc.union();
}

有几个问题:

  1. 我无法实例化 GeometryCollection
  2. GeometryCollection 似乎没有接受/添加几何图形的方法 - 我怎样才能用几何图形“填充”GeometryCollection?
  3. 无法添加几何图形数组,而且我还没有找到通过构造函数执行此操作的方法
  4. 我不能在 Geometry 上调用 union

旁白问题:如果我要联合的一些多边形是分离的,那会导致多多边形吗?那很好,只是好奇。

谢谢!

最佳答案

这对我有用:

static Geometry combineIntoOneGeometry()
{
WKTReader wkt = new WKTReader();
GeometryFactory geoFac = new GeometryFactory();
ArrayList<Geometry> geometries = new ArrayList<>();

try
{
Geometry polygon1 = wkt.read("POLYGON ((...))");
Geometry polygon2 = wkt.read("POLYGON ((...))");
Geometry polygon3 = wkt.read("POLYGON ((...))");
Geometry polygon4 = wkt.read("POLYGON ((...))");
geometries.add(polygon1);
geometries.add(polygon2);
geometries.add(polygon3);
geometries.add(polygon4);
}
catch (ParseException e)
{
e.printStackTrace();
}
GeometryCollection geometryCollection = (GeometryCollection) geoFac.buildGeometry(geometries);

return geometryCollection.union();
}

关于java - 通过 JTS 中的 union 组合 WKT 几何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42831536/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com