पायथन कंसोल से QGIS जोनल स्टैट्स प्लगइन का उपयोग करना?


9

मैं QGIS में जोनल स्टैट्स प्लगइन का उपयोग कर रहा हूं ताकि बहुभुजों को ओवरले करने से रेखापुंज आँकड़े निकाले जा सकें (मेरे पास प्रजातियों के वितरण के आकार-प्रकार हैं और मैं प्रत्येक प्रजाति की सीमा के भीतर से पर्यावरणीय डेटा निकालना चाहता हूं)। मेरे पास 300 या तो ऐसी फाइलें हैं जिनसे मुझे डेटा प्राप्त करने की आवश्यकता है और इसलिए अजगर कंसोल में चलने के लिए एक स्क्रिप्ट लिखना चाहता हूं, हालांकि मैं अजगर के साथ एक पूर्ण नौसिखिया हूं और मुझे नहीं पता कि यह कैसे करना है।



चाड - हाँ यह एक ऐसा ही प्रश्न है, लेकिन इसके अधिक विशिष्ट है। किसी ने भी अन्य प्रश्न का उत्तर नहीं दिया, इसके बजाय उन्होंने समस्या को हल करने के अन्य तरीकों का सुझाव दिया। मैं नहीं जानता कि अन्य पोस्ट को कैसे हटाएं
थॉमस

दूसरे प्रश्न में मैंने आपको एक r- स्क्रिप्ट की ओर इशारा किया, जो आप चाहते हैं और सिल्वेस्टर स्नेकली ने आपको अजगर में सटीक विधि का नाम दिया। यदि आपको अजगर या आर में कोड करने के लिए उपयोग नहीं किया जाता है, तो आगे के सभी संकेत आपकी मदद नहीं करेंगे। आपको एक स्व-कोडित स्क्रिप्ट या बहुत सारे मूसली की आवश्यकता है। कुछ कोडिंग सीखें, उदाहरणों को आज़माएँ और रिपोर्ट करें, अगर कुछ काम नहीं करता है।
कर्लेव

@ कुरलेव - सिल्वेस्टर की विधि, जबकि यह बहुत अच्छा लगता है, मेरे लिए एक बड़े पैमाने पर सीखने की अवस्था का प्रतिनिधित्व करेगा और मेरे पास फिलहाल ऐसा करने का समय नहीं है। मैं सिल्वेस्टर की मदद की सराहना करता हूं, लेकिन यह सीधा जवाब नहीं था जो मैं था। हालाँकि, मेरे पास मेरे अन्य प्रश्न ( gis.stackexchange.com/questions/23203/… ) में उल्लिखित पोस्ट के बाद मेरे पास अधिकांश कोड था । यदि सिल्वेस्टर की विधि अजगर में ऐसा करने का एकमात्र तरीका है तो शायद मैंने कम करके आंका कि यह कितना मुश्किल होगा।
थॉमस

@ कुरलेव - आपकी आर स्क्रिप्ट वास्तव में काम करती है, धन्यवाद। केवल एक चीज जो मैंने अभी तक काम की है, वह यह है कि मेरे आकार-प्रकार के फ़ाइल के लिए R .dbf फ़ाइल में लौटाए गए परिणामों को कैसे जोड़ा जाए (इसके साथ कोई मदद बहुत सराहना की जाएगी)।
थॉमस

जवाबों:


13

नीचे दिए गए कोड ने मेरे लिए QGis 1.8.0 काम किया

तुम कुछ पाश के साथ कई फ़ाइलों को समायोजित करने के लिए इसे संशोधित कर सकते हैं ..

from qgis.analysis import QgsZonalStatistics

#specify polygon shapefile vector
polygonLayer = QgsVectorLayer('F:/temp/zonalstat/zonePoly.shp', 'zonepolygons', "ogr") 

# specify raster filename
rasterFilePath = 'F:/temp/zonalstat/raster1.tif'

# usage - QgsZonalStatistics (QgsVectorLayer *polygonLayer, const QString &rasterFile, const QString &attributePrefix="", int rasterBand=1)
zoneStat = QgsZonalStatistics (polygonLayer, rasterFilePath, 'pre-', 1)
zoneStat.calculateStatistics(None)

महान। बहुत बहुत धन्यवाद, विनय, मैं वास्तव में यही था।
थॉमस

वैकल्पिक समाधान के लिए यहाँ भी देखें
थॉमस

खुशी है कि यह आपकी मदद की!
विनयन

@vinayan QProgressDialog दृश्य वातावरण के लिए उपयोगी है, जहाँ आप यह देखना चाहते हैं कि गणना कितनी आगे बढ़ चुकी है। कमांड लाइन से इसका कोई उपयोग नहीं है। आप Noneपैरामीटर के रूप में उपयोग कर सकते हैं और यह ठीक काम करता है। फिर आपको PyQt4..लाइन या लाइन से आवश्यकता नहीं है progressDialog = । इसी तरह की पोस्ट gis.stackexchange.com/questions/23203/…
rudivonstaden

@rudivonstaden - कि अब समझ में आता है..मैंने जवाब को अद्यतन किया
विन्नयन

2

यहाँ एसएजीए जीआईएस में जो आप चाहते हैं उसे प्राप्त करने का तरीका है। यह संभवतः वह समाधान नहीं है जो आप चाहते हैं, लेकिन यह काम करता है। मैं उन कारणों को देखूंगा कि मेरे प्लगइन्स विफल क्यों हैं और जितनी जल्दी हो सके इसे अपडेट करें।

एसएजीए जीआईएस स्थापित करें (यह आपके लिनक्स वितरण में एप्ट-गेट या एप्टिट्यूड के माध्यम से भी उपलब्ध होना चाहिए)।

  • SAGA प्रारंभ करें, अपने रेखापुंज और वेक्टर आकार (मेनू मॉड्यूल -> फ़ाइल -> GDAL / OGR आयात) में लोड करें। आप नीचे दी गई प्रक्रिया देख सकते हैं।
  • निष्पादन मॉड्यूल "बहुभुज के लिए ग्रिड आँकड़े" (मेनू मॉड्यूल -> आकार -> ग्रिड -> ग्रिड-मान)। मान सीधे तालिका में जोड़े जाते हैं। डायलॉग को इस तरह देखना चाहिएयहां छवि विवरण दर्ज करें
  • कार्यक्षेत्र में टैब "डेटा" पर जाएं, अपनी वेक्टर परत पर राइट-क्लिक करें और जोड़े गए विशेषताओं के साथ आकार को निर्यात करने के लिए " सहेजें " के रूप में चुनें । आप राइटक्लब के माध्यम से विशेषता तालिका भी प्रदर्शित कर सकते हैं और फिर टेबल शो पर क्लिक कर सकते हैं

यह मेरे द्वारा भेजे गए डेटासेट के लिए काम करता है। SATANTE के माध्यम से QGIS में SAGA मॉड्यूल को BATCH प्रक्रिया के रूप में कॉल करना भी संभव है। ऐसा करने के लिए केवल SGAANTE विकल्पों में SAGA मॉड्यूल को सक्रिय करें।


सुझाव के लिए धन्यवाद, लेकिन मैं पहले से ही गाथा की कोशिश कर चुका हूं - जो परिणाम उत्पन्न हुए वे असंगत थे यानी एक ही काम को दो बार करने से अलग परिणाम मिले। मुझे पता है कि QGIS कामों में ZonalStats प्लगइन है, इसलिए मैं ZonalStats को स्वचालित करने का एक तरीका हूं।
थॉमस

@vinayan में जो कोड है जो यू ने जोनल स्टैटिकटिक्स के लिए दिया है, लेकिन यह बहुभुज वेक्टर लेयर में कॉलम बना रहा है, लेकिन परिकलित मानों को अपडेट नहीं कर रहा है। ऐसा क्यों है?
user99

2
zoneStat = QgsZonalStatistics (polygonLayer, rasterFilePath, 'pre-', 1)
zoneStat.calculateStatistics(None)

डिफ़ॉल्ट रूप से गणना केवल गणना, सम और मीन (जैसा कि आप Raster -> Zonal StatisticsQGIS डेस्कटॉप से बता सकते हैं , यह बहुत अधिक कर सकता है)।

यदि आप, उदाहरण के लिए, आपके द्वारा उपयोग किए जाने वाले साधन की गणना करना चाहते हैं:

zoneStat = QgsZonalStatistics (polygonLayer, rasterFilePath, 'pre-', 1, QgsZonalStatistics.Mean)
zoneStat.calculateStatistics(None)

सभी विकल्पों के लिए एपीआई देखें ।


क्या कोई पसंद के दो आँकड़े प्राप्त करने के लिए वाक्यविन्यास में मदद कर सकता है, एक ही समय में मिन एंड मैक्स कह सकते हैं? मैं अलग-अलग तरीकों से कोशिश कर रहा हूं, लेकिन कोई सफलता नहीं
dorakiara

Qgis 3 में आपको रेखापुंज फ़ाइल पथ को रास्टर फ़ाइल से बदलने की आवश्यकता है! इसलिए, rasterFilePath = 'F: /temp/zonalstat/raster1.tif' बन जाता है: rasterFile = QgsRasterLayer ('F: /temp/zonalstat/raster1.if', 'raster') तब आप rasterFilePath को ज़ोन फ़र्स्टफ़ाइल में rasterFile में बदल देते हैं। कमांड ज़ोनस्टैट = QgsZonalStatistics (बहुभुज, rasterFile, 'प्री-', 1) ज़ोनस्टैट.क्लाकैटस्टैटिस्टिक्स (कोई नहीं)
philsch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.