2011-07-04 40 views

回答

10

使用這些行代碼:

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

我希望這將有助於:)

+8

我想知道爲什麼你需要2個GeometryFactory來製作一個多邊形? –

+2

如果你想設置一個特定的SRID,你必須以這種方式創建一個GeometryFactory:GeometryFactory fac = new GeometryFactory(new PrecisionModel(),_srid_);用你想要的SRID替換_srid_。 – russellhoff

24

接受的答案可能會在2012年至今仍然在有效(仍尷尬),但現在你應該這樣做只是像這樣:

// 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

但它是用3D創建多邊形。如何強制爲2D? – janwen

+2

JTS是2D的。座標對象有第三個字段,但始終是NaN。座標不是JTS中的幾何圖形。點將是,它只有x和y。 – bugmenot123

+1

是的,bugmenot123是正確的,在當前版本的JTS中,您不需要創建linearRing來創建多邊形,但一個簡單的createPolygon就足夠了。請記住,座標必須形成一個封閉的環(第一個和最後一個點是相同的),否則您將得到一個異常。 –

相關問題