2011-07-04 13 views

Odpowiedz

10

korzystać z tych linii kodów:

GeometryFactory fact = new GeometryFactory(); 
LinearRing linear = new GeometryFactory().createLinearRing(coordinates); 
Polygon poly = new Polygon(linear, null, fact); 

mam nadzieję, że to pomoże :)

+8

Zastanawiam się, dlaczego potrzebujesz 2 GeometryFactories do stworzenia wielokąta? –

+2

Jeśli chcesz ustawić specyficzny SRID, musisz utworzyć GeometryFactory w następujący sposób: GeometryFactory fac = new GeometryFactory (new PrecisionModel(), _srid_) ;, zastępując _srid_ pożądanym SRID. – russellhoff

24

Zaakceptowanych odpowiedź mogła być nadal aktualne (jeszcze niewygodne) w 2012 roku, ale w dzisiejszych czasach naprawdę należy zrobić to po prostu tak:

// Create a GeometryFactory if you don't have one already 
GeometryFactory geometryFactory = new GeometryFactory(); 

// Simply pass an array of Coordinate or a CoordinateSequence to its method 
Polygon polygonFromCoordinates = geometryFactory.createPolygon(coordinates); 
+0

Ale tworzy się wielokąt z 3D. Jak wymusić na 2D? – janwen

+2

JTS jest 2D. Obiekty współrzędnych mają trzecie pole, ale zawsze jest NaN. Współrzędna nie jest geometrią w WST. Punkt byłby i ma tylko x i y. – bugmenot123

+1

Tak, bugmenot123 ma rację, przy obecnej wersji JTS nie trzeba tworzyć linearRing, aby utworzyć wielokąt, wystarczy prosty createPolygon. Pamiętaj, że współrzędne muszą tworzyć zamknięty pierścień (pierwszy i ostatni punkt są takie same) lub otrzymasz wyjątek. –

Powiązane problemy