是否有一种高性能的方法可以直接从 double 组组装 JTS 多边形?
目前,我
- 循环点数组以创建
坐标
实例数组 - 从
坐标
数组创建一个坐标序列
- 从
CoordinateSequence
创建LinearRing
- 从
LinearRing
创建Polygon
根据我的分析,迄今为止最慢的步骤是在循环中创建许多 Cooperative
实例。
我应该提到,我是从 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());
最佳答案
您可以使用此构造函数:
公共(public)多边形多边形(双... ord)
来自
org.geotools.geometry.jts.GeometryBuilder
(Documentation)
示例:
Polygon p = new GeometryBuilder().polygon(new double[]{0,0,10,0,10,10});
关于java - 直接从 double 组组装 JTS 多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127827/