2017-03-16 15 views
2

私はWKTポリゴン(何十万ものもの)を読んで、より大きな "ポリゴン"を組み合わせてデータサイズを減らそうとしています。私は、簡潔にするために私が使用するループを省いているので、2つのポリゴンが例として役立つはずです。 JTSでユニオンを使って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. ジオメトリの配列をに追加することはできません、と私はコンストラクタを介してそれを行うための方法を発見していない
    3. 私はジオメトリ
    別に

    質問に労働組合を呼び出すことはできません。もし私が組合を探しているポリゴンのいくつかは分離しています。その結果、多ポリゴンになりますか?それはうまくいくだろう、ただ好奇心が強い。

    ありがとうございます!

  • 答えて

    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(); 
    } 
    
    関連する問題