2011-07-04 31 views

Trả lời

10

Sử dụng những dòng mã:

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

Tôi hy vọng nó sẽ giúp :)

+8

Tôi tự hỏi tại sao bạn cần 2 GeometryFactories để tạo đa giác? –

+2

Nếu bạn muốn thiết lập một SRID đặc biệt, bạn phải tạo một GeometryFactory theo cách này: GeometryFactory fac = new GeometryFactory (new PrecisionModel(), _srid_) ;, thay thế _srid_ bằng SRID mong muốn của bạn. – russellhoff

24

Câu trả lời được chấp nhận có thể vẫn được hợp lệ (vẫn còn vụng về) vào năm 2012 nhưng ngày nay bạn thực sự nên làm điều đó đơn giản như thế này:

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

Nhưng nó tạo ra đa giác với 3D.How để lực lượng 2D? – janwen

+2

JTS là 2D. Đối tượng tọa độ có trường thứ ba nhưng luôn là NaN. Tọa độ không phải là Hình học trong JTS. Điểm sẽ là và nó chỉ có x và y. – bugmenot123

+1

Có, bugmenot123 là đúng, với phiên bản hiện tại của JTS bạn không cần phải tạo một linearRing để tạo một đa giác, một createPolygon đơn giản là đủ. Chỉ cần ghi nhớ rằng các tọa độ phải tạo thành một vòng khép kín (đầu tiên và điểm cuối cùng là như nhau) hoặc bạn sẽ nhận được một ngoại lệ. –

Các vấn đề liên quan