PostGIS टेबल के लिए बाउंडिंग बॉक्स


19

क्या PostGIS में संपूर्ण तालिका के लिए बाउंडिंग बॉक्स प्राप्त करने का एक आसान तरीका है?

जवाबों:


26

ST_Extent को ट्रिक करनी चाहिए।

ST_Extent - एक समुच्चय फलन जो कि ज्यामिति की पंक्तियों को बांधने वाला बाउंडिंग बॉक्स लौटाता है।

इस तरह लागू:

SELECT ST_Extent(the_geom) as table_extent FROM your_table;

13

जैसा कि @underdark ने उत्तर दिया , ST_Extent काम करेगा, लेकिन ध्यान रखें कि यह एक ज्यामिति वापस नहीं करता है, लेकिन ए box2d। यदि आपको एक ज्यामिति प्रकार की आवश्यकता है तो आपको कुछ का उपयोग करना चाहिए

SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;

इसके अलावा, अगर आपको जरूरत है तो प्रत्येक पंक्तियों के बाउंडिंग बॉक्स को आप भी इस्तेमाल कर सकते हैं ST_Extentऔर इस तरह से एक नकली GROUP BY :

SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;

मान लें कि gid तालिका की प्राथमिक कुंजी है

लेकिन ST_Envelope एक बेहतर काम करेगा जैसा कि @ Bugmenot123 ने टिप्पणियों में बताया है

SELECT ST_Envelope(geom) FROM your_table ;

1
यदि आपको प्रत्येक पंक्ति के लिए कोई एकत्रीकरण के साथ एक बाउंडिंग बॉक्स की आवश्यकता है, तो बस उपयोग करें ST_Envelope! हालांकि यह नहीं पूछा गया था।
Bugmenot123

1
आप st_envelope मैं जवाब अद्यतन के बारे में सही हैं। "के लिए नहीं पूछा गया" के बारे में, कभी-कभी संबंधित उत्तर देने की कोशिश की जाती है क्योंकि लोगों के लिए जो अच्छी तरह से अंग्रेजी नहीं बोलते हैं (मेरे जैसे) उत्तर खोजने के लिए सही खोज पाठ चुनना मुश्किल है। संभवतः मैं इस प्रश्न में गिर गया कि दूसरे विषय के लिए उत्तर खोज रहा हूं।
बजे फ्रांसिस्को पुगा

4

ST_Envelopeफ़ंक्शन का उपयोग करने के लिए एक और संभावना है , जो एसआरआईडी के साथ एक ज्यामिति लौटाता है,

ST_Envelope - आपूर्ति की गई ज्यामिति के बाउंडिंग बॉक्स का प्रतिनिधित्व करने वाला एक ज्यामिति देता है

ST_Unionसभी ज्यामितीय (या उनके संबंधित लिफाफे के संघ) को प्राप्त करने के लिए समुच्चय समारोह के साथ निम्नानुसार है:

SELECT ST_Envelope(ST_Union(geom)) AS table_extent FROM your_table

या

SELECT ST_Envelope(ST_Union(ST_Envelope(geom))) AS table_extent FROM your_table

दूसरा विकल्प तेज होना चाहिए क्योंकि यह अलग-अलग ज्यामितीयों के लिफाफे का उपयोग करके यूनियन ऑपरेशन को सरल बनाता है।

देखने के स्रोत


1
ST_Extent दृष्टिकोण परिमाण में तेजी से होता है क्योंकि यह विशुद्ध रूप से संख्याओं पर काम कर सकता है और इसके लिए कोई जटिल ज्यामितीय गणना नहीं करनी होती है। जब भी आप कर सकते हैं ST_Union से बचें।
Bugmenot123

2

किसी स्थानिक एकत्रीकरण को लागू करने का तरीका त्वरित नहीं होना चाहिए:

select
  min(ST_XMin(geom)) as l,
  min(ST_YMin(geom)) as b,
  max(ST_XMax(geom)) as r,
  max(ST_YMax(geom)) as t
from x

1
ST_Extent में भी स्थानिक कुछ नहीं करना है। यह मेरे डेटा (~ 400k बहुभुज) के लिए आपके दृष्टिकोण से 2-3 गुना तेज है। शायद इसलिए क्योंकि यह सब एक ही बार में कर सकता है, जबकि आपके दृष्टिकोण को प्रत्येक भू के कई पहलुओं को देखना होगा और फिर अंत में एकत्र करना होगा।
Bugmenot123
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.