क्यूजीआईएस एपीआई में एक स्थानिक सूचकांक की बचत?


9

मैं Qgis API का उपयोग करके कुछ शेपफाइल्स के लिए एक स्थानिक सूचकांक बनाने की कोशिश कर रहा हूं। मैंने नेथन वुड्रो के ब्लॉग ( https://nathanw.net/2013/01/04/use-a-qgis-spatial-index-to-speed-up-your-code/ ) में वर्णित चरणों का पालन किया है और यह बहुत अच्छा काम करता है :

layer = QgsVectorLayer(path, name, 'ogr')
idx = QgsSpatialIndex()
all_features = layer.getFeatures()
map(idx.insertFeature, all_features)

मेरी समस्या यह है कि मेरे पास कोई परिणामी फ़ाइल नहीं है (.qix? .Sbn? .Sbx?)

मैं इस स्थानिक सूचकांक को कैसे सहेज सकता हूं, ताकि भविष्य के उपयोगकर्ताओं को इसका लाभ मिल सके?

जवाबों:


11

यदि आप अपनी परत में सभी विशेषताओं के लिए एक स्थानिक सूचकांक बनाना चाहते हैं, तो आप निम्नलिखित का उपयोग करके देख सकते हैं:

layer.dataProvider().createSpatialIndex()

यह .qixस्थानिक सूचकांक फ़ाइल बनाएगा ।


संपादित करें:

जैसा कि नीचे दिए गए अपने टिप्पणियों में मथायस कुहन ने उल्लेख किया है , QgsSpatialIndex वर्ग का उपयोग केवल अस्थायी रूप से उस ब्लॉग में किया जाता है जैसा कि आप जिस ब्लॉग से जुड़े हैं; जबकि createSpatialIndex () फ़ंक्शन डेटा स्रोत पर एक स्थानिक इंडेक्स बनाता है और qixआकृति फाइल के लिए फ़ाइल में परिणाम करता है ।


2
मुझे लगता है कि एक निरंतर (फ़ाइल-आधारित) और अस्थायी, रनटाइम इंडेक्स (QgsSpatialIndex) के बीच अंतर को उजागर करना अच्छा होगा।
मथायस कुहन

1
धन्यवाद दोस्तों ! मैं केवल QgsSpatialIndex के बारे में जानकारी पा सकता हूं। createSpatialIndex वही है जो मैं देख रहा था।
लॉरफ

@ लॉरफ - बहुत बढ़िया, खुशी हुई कि इसने मदद की :)
जोसेफ

4 के बाद इस टिप्पणी में कुछ व्यापक लिखने की कोशिश करता है, मुझे आत्मसमर्पण करना होगा और स्वीकार करना होगा कि इसके लिए पर्याप्त कुछ की आवश्यकता होगी। मैं जो कहना चाहता था, वह यह है कि QgsSpatialIndex लगातार चलने वाली जानकारी बिना किसी अतिरिक्त स्पष्टीकरण के बहुत सी जानकारी पहले ही दे देती है।
मथियास कुह्न

@MatthiasKuhn - धन्यवाद, मैंने एक संक्षिप्त विवरण शामिल करने के लिए पोस्ट को संपादित किया है;)
जोसेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.