Bagaimana cara menggabungkan dua Poligon di OpenLayers?

11

Saya punya dua poligon.

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

Bagaimana saya bisa menggabungkan dua poligon menjadi satu menggunakan OpenLayers?

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

Michelle Chan
sumber
1
Tolong jelaskan pertanyaan Anda, saya tidak yakin apa maksud Anda.
drnextgis

Jawaban:

14

Untuk manipulasi geometri di sisi klien Anda dapat menggunakan JSTS Topology Suite . Ini adalah contoh kecil saya untuk menyelesaikan masalah Anda: Contoh Union . Kode sumber:

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();
drnextgis
sumber
4
(+1) Selalu belajar sesuatu yang baru di sini. JSTS terlihat sangat berguna.
CaptDragon
Contoh biola berguna yang bagus. Kudos :)
Rob Quincey
1

Yang saya mengerti dari pertanyaan Anda adalah bahwa Anda ingin menggabungkan dua fitur poligon. Saya pikir Anda harus melakukan ini di sisi server dengan ST_Union feauture yang ada di PostGIS Geometry Processing Functions. Kemudian Anda bisa mendapatkan hasilnya dan menambahkan ini ke aplikasi Anda. Apapun yang kamu mau. Menggabungkan...

Dalam postgis Anda dapat menggabungkan banyak poligon seperti ini:

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

Pertama-tama Anda harus membuat beberapa permintaan openlayers untuk koleksi geo Anda.

Dan di GeoDjango Anda dapat melakukan ini dengan mudah dengan Metode Topologi GeoDjango ..

polygon.union( secondpolygon )


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

Saya harap ini membantu Anda ...

Aragon
sumber
0

Setiap poligon dianggap sebagai satu fitur. kapan pun Anda menambahkan poligon ke lapisan vektor, fitur itu disimpan di sana. dan Anda bisa mendapatkan fitur independen dari objek layer.

hcn
sumber