PostGIS के साथ बाउंडिंग बॉक्स द्वारा चयन करना


12

मेरे पास PostGIS डेटाबेस में एक बड़ा डेटासेट है। मैं इसे एक वेब इंटरफ़ेस के माध्यम से देख रहा हूं जो डेटा को जियोजन्स के रूप में लोड करता है। क्लाइंट को एक बार में सभी डेटा देने के लिए बहुत अधिक डेटा है (10 एमबी की कीमत ...) इसलिए मैं विंडो के किनारों द्वारा गठित बाउंडिंग बॉक्स के भीतर डेटा का एक क्षेत्र प्राप्त करना चाहूंगा (नीचे दी गई छवि में बिंदीदार रेखा )। अंक f और g के लिए निर्देशांक प्राप्त करना आसान है।

प्रश्न 1: क्या यह चीजों को करने का एक अच्छा तरीका है? क्या मुझे उन्हें टाइल के रूप में कैशिंग करने के बारे में सोचना चाहिए या क्या यह विधि पर्याप्त रूप से कुशल होने की संभावना है?

प्रश्न 2: मैं इस बाउंडिंग बॉक्स के भीतर सिर्फ डेटा कैसे प्राप्त करूं?

प्रश्न 3: यदि कोई आकृति बाउंडिंग बॉक्स के किनारे को ओवरलैप करती है (जैसे आकार ए नीचे) तो इसे क्रॉप करने का एक सरल तरीका है क्योंकि यह दूसरी छवि की तरह क्वियर है?

यहाँ छवि विवरण दर्ज करें


आप ग्राहक को किस दर्शक के रूप में चला रहे हैं?
UnderDark

Mapstraction। मैं वर्तमान में प्रदाता के रूप में OpenLayers का उपयोग कर रहा हूं।
Mr_Chimp

जवाबों:


8

बस प्रश्नों के क्रम को बदलें और आपके पास एक प्रक्रिया है:

2) केवल उसी का चयन करें जो bbox ( ST_Intersects) को इंटरसेप्ट करता है ।
3) बहुभुज ( ST_Intersection) को क्लिप करने के लिए इसे बॉक्स के साथ जोड़ दें ।
1) परिणामों के साथ एक नई तालिका बनाएं ( CREATE TABLE newtable AS SELECT...)।

ST_Intersection डॉक्स में एक कोड नमूना होता है। आपको इसे अनुकूलित करना होगा और बॉक्स के रूप में ST_PolygonFromText का उपयोग करना होगा।


4

मुझे लगता है कि अधिकांश (सभी) वेब-क्लाइंट (और डेस्कटॉप जीआईएस) भी ऐसा कर रहे हैं। आप संपूर्ण डेटासेट नहीं भेज सकते।

यदि आपको किसी प्रकार का कैशिंग सेट करना चाहिए, तो यह निर्भर करता है कि आपका डेटा अलग-अलग है या यदि यह बदल रहा है।

यह बाउंडिंग बॉक्स बनाने के लिए डेटा प्राप्त करने के लिए चेक बहुत तेज़ होगा (यदि आपके पास स्थानिक सूचकांक है), लेकिन निश्चित रूप से यह मुफ़्त नहीं है। आप कुछ सीपीयू-पावर के साथ भुगतान करेंगे।

जैसा कि पहले कहा गया था: अपनी सीमा के अंदर बहुभुजों को खोजने के लिए आप ST_Intersects का उपयोग करते हैं।

अपनी सीमा के अंदर के हिस्से को पाने के लिए ST_Intersection का उपयोग करें, लेकिन ऐसा न करें। ST_Intersection एक महंगी प्रक्रिया है। जब तक आपके पास बहुत बड़े बहुभुज न हों, मुझे लगता है कि पूरे बहुभुज को भेजना बेहतर है।

लेकिन मुझे लगता है कि आप इसे टेबल पर रखने के बजाय फ्लाई पर करना चाहते हैं

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