【问题标题】:Combining WKT geometries via union in JTS通过联合在 JTS 中组合 WKT 几何
【发布时间】:2017-03-16 10:34:13
【问题描述】:

我正在尝试读取 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 似乎没有接受/添加几何的方法 - 如何使用几何“填充”几何集合?
  3. 无法添加几何体数组,我还没有找到通过构造函数实现的方法
  4. 我无法在几何上调用 union

除了问题:如果我要合并的某些多边形是不相交的,那会导致多多边形吗?没关系,只是好奇。

谢谢!

【问题讨论】:

    标签: java geometry jts


    【解决方案1】:

    这对我有用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多