Làm cách nào để hợp nhất hai Đa giác trong OpenLayers?


11

Tôi có hai đa giác.

polygon1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing1]))
polygon2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing2]))

Làm cách nào tôi có thể hợp nhất hai đa giác thành một bằng cách sử dụng OpenLayers?

http://i.stack.imgur.com/SrqYF.png


1
Vui lòng giải thích câu hỏi của bạn, tôi không chắc ý của bạn là gì.
drnextgis

Câu trả lời:


14

Để thao tác hình học ở phía máy khách, bạn có thể sử dụng JSTS Topology Suite . Dưới đây là ví dụ nhỏ của tôi về việc giải quyết vấn đề của bạn: ví dụ về Liên minh . Mã nguồn:

var reader = new jsts.io.WKTReader();  

var a = reader.read('POLYGON((10 10, 100 10, 100 100, 10 100, 10 10))');
var b = reader.read('POLYGON((50 50, 200 50, 200 200, 50 200, 50 50))');

var union = a.union(b);

var parser = new jsts.io.OpenLayersParser();

union = parser.write(union);

var map = new OpenLayers.Map('map', {
  maxExtent: new OpenLayers.Bounds(0, 0, 300, 300),
  maxResolution: 100,
  units: 'm',
 controls: [new OpenLayers.Control.MousePosition(), new OpenLayers.Control.Navigation()]
});

var layer = new OpenLayers.Layer.Vector('test', {isBaseLayer: true});
map.addLayer(layer);

var unionOutput = new OpenLayers.Feature.Vector(union, null, { fillColor: 'green', fillOpacity: 1});

layer.addFeatures([unionOutput ]);
map.zoomToMaxExtent();

4
(+1) Luôn học hỏi điều gì đó mới ở đây. JSTS trông rất tiện dụng.
CaptDragon

Ví dụ đẹp tiện dụng fiddle. Kudos :)
Rob Quincey

1

Điều tôi hiểu từ câu hỏi của bạn là bạn muốn hợp nhất hai tính năng đa giác. Tôi nghĩ rằng bạn phải thực hiện việc này ở phía máy chủ với chức năng xác thực ST_Union trong Chức năng xử lý hình học của PostGIS. Sau đó, bạn có thể nhận được kết quả và thêm nó vào ứng dụng của bạn. bất cứ điều gì bạn muốn. Gộp lại...

Trong postgis, bạn có thể kết hợp nhiều đa giác như thế này:

SELECT ST_AsText(ST_Union(ST_GeomFromText('POINT(1 2)'),
    ST_GeomFromText('POINT(1 2)') ) );

Trước hết, bạn phải thực hiện một số yêu cầu trình mở cho bộ sưu tập địa lý của mình.

Và trong GeoDjango, bạn có thể thực hiện việc này một cách dễ dàng với Phương pháp tô pô GeoDjango ..

polygon.union( secondpolygon )


GEOSGeometry.union(other)
Returns a GEOSGeometry representing all the points in this geometry and the other.

Tôi hy vọng cái này sẽ giúp bạn...


0

Mỗi đa giác được coi là một tính năng. bất cứ khi nào bạn thêm đa giác vào lớp vectơ, tính năng đó được lưu trữ ở đó. và bạn có thể nhận được các tính năng độc lập từ đối tượng lớp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.