2016-12-13 11 views
1

ダブルスの配列からJTSポリゴンを直接アセンブルする方法はありますか?ダブルスの配列からJTSポリゴンを直接アセンブルしますか?

現在、私はCoordinateSequence からLinearRingを作成するCoordinate

  • の配列からCoordinateSequenceを作成Coordinateインスタンス
  • の配列を作成するために、点の配列をループ

    1. ています
    2. からPolygonを作成する

    私のプロファイリングによれば、最も遅いステップは、ループ内に多くのCoordinateインスタンスを作成することです。

    私は、MatlabからJTSライブラリを呼び出していることを言及する必要があります。そのため、純粋なJava実装と比べると、ループで発生する追加コストが発生する可能性があります。あなたはこのコンストラクタを使用することができます

    % assemble linear ring for exterior poly 
    [numExtPoints, ~] = size(exteriorCoords); 
    jExtCoords(numExtPoints) = jts.geom.Coordinate(); % pre-allocate 
    for ic = 1:numExtPoints 
        jExtCoords(ic) = jts.geom.Coordinate(exteriorCoords(ic,1), exteriorCoords(ic,2)); 
    end 
    
    jCoordinateSequence = jts.geom.impl.CoordinateArraySequence(jExtCoords); 
    jExtLinearRing = jts.geom.LinearRing(jCoordinateSequence, jts.geom.GeometryFactory()); 
    
    % build polygon 
    obj.jGeometry = jts.geom.Polygon(jExtLinearRing, [], jts.geom.GeometryFactory()); 
    
  • 答えて

    0

    :ここ

    は、MATLABコードである

    org.geotools.geometry.jts.GeometryBuilderDocumentation)から

    public Polygon polygon(double... ord)

    例:

    Polygon p = new GeometryBuilder().polygon(new double[]{0,0,10,0,10,10}); 
    
    関連する問題