วิธีการรวมรูปหลายเหลี่ยมสองรูปแบบใน OpenLayers


11

ฉันมีรูปหลายเหลี่ยมสองอัน

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

ฉันจะรวมรูปหลายเหลี่ยมทั้งสองเข้าด้วยกันโดยใช้ OpenLayers ได้อย่างไร

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


1
โปรดอธิบายคำถามของคุณฉันไม่แน่ใจว่าคุณหมายถึงอะไร
drnextgis

คำตอบ:


14

สำหรับการจัดการรูปทรงเรขาคณิตในฝั่งไคลเอ็นต์คุณสามารถใช้JSTS โทโพโลยีสวีท นี่คือตัวอย่างเล็ก ๆ น้อย ๆ ของฉันในการแก้ปัญหาของคุณ: สหภาพตัวอย่างเช่น รหัสแหล่งที่มา:

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) เรียนรู้สิ่งใหม่ที่นี่เสมอ JSTS ดูมีประโยชน์มาก
CaptDragon

ตัวอย่างซอดีที่มีประโยชน์ รุ่งโรจน์ :)
Rob Quincey

1

สิ่งที่ฉันเข้าใจจากคำถามของคุณคือคุณต้องการผสานคุณสมบัติรูปหลายเหลี่ยมสองแบบ ฉันคิดว่าคุณต้องทำสิ่งนี้ในฝั่งเซิร์ฟเวอร์ด้วย ST_Union feauture ซึ่งอยู่ในฟังก์ชันประมวลผลเรขาคณิตของ PostGIS จากนั้นคุณสามารถรับผลลัพธ์และเพิ่มลงในแอปของคุณ สิ่งที่คุณต้องการ เพื่อรวม ...

ใน postgis คุณสามารถรวมรูปหลายเหลี่ยมจำนวนมากเช่นนี้:

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

ก่อนอื่นคุณต้องทำการร้องขอ openlayers สำหรับคอลเล็กชันทางภูมิศาสตร์ของคุณ

และใน GeoDjango คุณสามารถทำได้อย่างง่ายดายด้วย GeoDjango Topological Methods ..

polygon.union( secondpolygon )


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

ฉันหวังว่านี่จะช่วยคุณ ...


0

รูปหลายเหลี่ยมทุกรูปถือเป็นคุณสมบัติเดียว เมื่อคุณเพิ่มรูปหลายเหลี่ยมในเลเยอร์เวกเตอร์คุณลักษณะนั้นจะถูกเก็บไว้ที่นั่น และคุณสามารถรับคุณสมบัติอิสระจากวัตถุชั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.