जवाबों:
ऑस्मोसिस डॉक्स के लिए, मैं कमांड विकल्प देखता हूं :
--bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
PostGIS के लिए आप एक बाउंडिंग बॉक्स बनाने के लिए ST_MakeEvelopvelop (बाएँ, नीचे, दाएं, ऊपर, श्रीड) का उपयोग कर सकते हैं , फिर &&
बाउंडिंग बॉक्स ऑपरेटर को यह पता लगाने के लिए कि बाउंडिंग बॉक्स कहाँ प्रतिच्छेद करें:
SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(10.9351, 49.3866, 11.201, 49.5138, 4326);
SRID 4326 WGS84 Lat / Long के लिए है, और केवल PostGIS 1.5 के लिए आवश्यक है; इसे बाद के संस्करणों के लिए छोड़ा जा सकता है।
मुझे लगता है कि यह कुछ इस तरह होगा: PostGIS में बाउंडिंग बॉक्स द्वारा बनाया गया है
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid>)
क्वेरी उप-वर्ग के साथ ST_Intersection का उपयोग करेगी।
SELECT bbox_nodes.id, bbox_nodes.tag, nodes_geom
FROM (SELECT nodes.id, nodes.tag,
ST_Intersection(nodes.the_geom,
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid> )).geom AS nodes_geom
FROM nodes
WHERE ST_Intersects(nodes.the_geom,
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid> )) AS bbox_nodes
WHERE ST_Dimension(bbox_nodes.nodes_geom)=0;
मैंने कम या ज्यादा इसे पोस्टगिस मदद पृष्ठों से लिया है ।
एक दूसरी क्वेरी, तरीकों की मेज पर, ऊपर के समान डिज़ाइन की गई (लेकिन ST_Dimension () = 1) के तरीकों से मिलनी चाहिए।
HTH, मीका
यहाँ एक विषय है जो यहाँ आपके प्रश्न के समान है ...
ST_Intersection - (T) एक ज्यामिति लौटाता है जो जियोमा और जियोमबी के साझा हिस्से का प्रतिनिधित्व करता है। भूगोल कार्यान्वयन, चौराहे को करने के लिए ज्यामिति में परिवर्तन करता है और फिर वापस WGS84 में बदल जाता है।
1. आप ज्यामिति निर्माण कार्यों के बारे में भी कुछ जानकारी यहाँ प्राप्त कर सकते हैं ।
SELECT ST_AsText(ST_Intersection(
ST_Buffer('POINT(0 0)', 2),
ST_Buffer('POINT(3 0)', 2)
));
2. गहन जानकारी के बारे में यहां गहन जानकारी : PostGIS - ST_Intersects, ST_Intersection ...
SELECT b.the_geom As bgeom, p.the_geom As pgeom,
ST_Intersection(b.the_geom, p.the_geom) As intersect_bp
FROM buildings b INNER JOIN parcels p ON ST_Intersection(b,p)
WHERE ST_Overlaps(b.the_geom, p.the_geom)
LIMIT 1;
मुझे उम्मीद है इससे आपको मदद मिली होगी...
यह @ मीका के कोड पर एक टिप्पणी है।
के लिए समन्वय जोड़े POLYGON
एक घड़ी की (या एक काउंटर दक्षिणावर्त) आदेश का पालन करना चाहिए: ऊपरी, बाएँ ऊपरी दाएँ, सही कम, छोड़ दिया, निचले ऊपरी फिर से छोड़ दिया है।
तो, दक्षिणावर्त, फ़ंक्शन कॉल होना चाहिए:
ST_GeomFromText('POLYGON((ulx uly, urx ury, lrx lry, llx llr, ulx uly))', <srid>)
या दक्षिणावर्त काउंटर:
ST_GeomFromText('POLYGON((ulx uly, llx llr, lrx lry, urx ury, ulx uly))', <srid>)