Собрать JTS Polygon прямо из массива пар?
Есть ли эффективный способ собрать JTS Polygon непосредственно из массива пар?
В настоящее время я
- Цикл массива точек для создания массива
Coordinate
экземпляры - Создание
CoordinateSequence
из массиваCoordinate
s - Создание
LinearRing
отCoordinateSequence
- Создание
Polygon
отLinearRing
Согласно моему профилированию, самый медленный шаг - создание множества Coordinate
экземпляры в цикле.
Я должен упомянуть, что я вызываю библиотеку JTS из Matlab, поэтому в моем цикле могут возникнуть дополнительные расходы по сравнению с реализацией на чистом 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 ответ
Вы можете использовать этот конструктор:
public Polygon polygon(double... ord)
от
org.geotools.geometry.jts.GeometryBuilder
( Документация)
Пример:
Polygon p = new GeometryBuilder().polygon(new double[]{0,0,10,0,10,10});