直接从一系列双打组装JTS多边形?

时间:2016-12-13 18:10:03

标签: java matlab jts

是否有直接从双打数组中组装JTS多边形的高效方法?

目前,我

  1. 循环遍历点数组以创建Coordinate实例
  2. 数组
  3. CoordinateSequence s
  4. 数组中创建Coordinate
  5. LinearRing
  6. 创建CoordinateSequence
  7. Polygon
  8. 创建LinearRing

    根据我的分析,到目前为止最慢的步骤是在循环中创建许多Coordinate个实例。

    我应该提到我从Matlab调用JTS库,因此与纯Java实现相比,我的循环可能会产生一些额外的成本。

    这是MATLAB代码:

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

1 个答案:

答案 0 :(得分:0)

您可以使用此构造函数:

public Polygon polygon(double... ord)

来自

org.geotools.geometry.jts.GeometryBuilderDocumentation

示例:

Polygon p = new GeometryBuilder().polygon(new double[]{0,0,10,0,10,10});