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 बहुत काम लगता है।
कैप्टनड्रैगन

अच्छा काम बेला उदाहरण। कुदोस :)
रोब क्वाइन

1

आपके प्रश्न से मुझे जो समझ में आता है, वह यह है कि आप दो बहुभुज विशेषताओं का विलय करना चाहते हैं। मुझे लगता है कि आपको यह सर्वर पर ST_Union feauture के साथ करना होगा जो PostGIS ज्यामिति प्रसंस्करण कार्यों में है। फिर आप परिणाम प्राप्त कर सकते हैं और इसे अपने ऐप में जोड़ सकते हैं। जो तुम्हे चाहिये। विलय करने के लिए...

पोस्टगिस में आप बहुत सारे पॉलीगॉन को इस तरह से जोड़ सकते हैं:

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

सबसे पहले आपको अपने जियो कलेक्शन के लिए कुछ ओपनर्स से अनुरोध करना होगा।

और GeoDjango में आप GeoDjango Topological Methods के साथ आसानी से ऐसा कर सकते हैं।

polygon.union( secondpolygon )


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

मैं आशा करता हूं कि इससे तुम्हें सहायता मिलेगी...


0

प्रत्येक बहुभुज को एक विशेषता माना जाता है। जब आप कभी भी वेक्टर लेयर में बहुभुज जोड़ते हैं, तो यह सुविधा वहां पर जमा हो जाती है। और आप लेयर ऑब्जेक्ट से स्वतंत्र सुविधाएं प्राप्त कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.