2016-12-13 4 views
1

Есть ли способ, чтобы собрать многоугольник JTS непосредственно из массива двойников?Соберите многоугольник JTS непосредственно из массива двойников?

В настоящее время я

  1. Перебор массива точек, чтобы создать массив Coordinate экземпляров
  2. Создание CoordinateSequence из массива Coordinate s
  3. Создание LinearRing из CoordinateSequence
  4. Создание 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()); 

ответ

0

Вы можете использовать этот конструктор:

public Polygon polygon(double... ord)

из

org.geotools.geometry.jts.GeometryBuilder (Documentation)

Пример:

Polygon p = new GeometryBuilder().polygon(new double[]{0,0,10,0,10,10}); 
Смежные вопросы