QGIS में दोहराव वाले कार्य कैसे करें?


11

मैं कई फीचर फाइलों पर एक उपचार करने की कोशिश कर रहा हूं, इसलिए मैं इसे स्वचालित करना चाहूंगा।

वास्तव में, मेरे पास कुछ प्रजातियों के स्थानिक वितरण के साथ एक आकृति है, और एक वनस्पति प्रकार के साथ है।

मैं प्रजातियों के आकार में एक प्रजाति (विशेषता के अनुसार) का चयन करना चाहूंगा, फिर सभी वनस्पतियों के क्षेत्रों का चयन करूंगा जो उनके वितरण क्षेत्र के साथ प्रतिच्छेद करते हैं। अंत में, मैं नाम, प्रजातियों के नाम के साथ, और आवृत वनस्पति प्रकारों की विशेषताओं और रूपों के साथ एक आकृति बनाना चाहूंगा। और मैं इसे सभी प्रजातियों (100 से अधिक) के लिए दोहराना चाहूंगा, और यदि संभव हो तो इसे आसान तरीके से करें (इसलिए यह किसी अन्य व्यक्ति द्वारा किया जा सकता है)।

मैंने पहले ही इस कार्य को Sextante प्लगइन का उपयोग करने की कोशिश की है, लेकिन मेरे पास अंत में आकार नाम के रूप में प्रजाति का नाम नहीं हो सकता है।

क्या कोई इसके लिए कोई विधि सुझा सकता है?


1
आपके विवरण से संपूर्ण कार्य पोस्टगिस या स्पैटियालाइट जैसे पूर्ण-विशेषताओं वाले जियोडैटबेस के लिए अधिक उपयुक्त होगा। लेकिन जो आपको चाहिए वह करने के लिए एक संपूर्ण समाधान तुच्छ नहीं हो सकता है।
19ek को

जवाबों:


5

यह ब्लॉग प्रविष्टि यह समझने में मदद कर सकती है कि इसे SEXTANTE में कैसे किया जाए:

http://qgissextante.blogspot.fr/2013/01/using-selection-algorithms.html

आशा है ये मदद करेगा


नमस्ते, इसके लिए धन्यवाद, मैं इसे आज़माना चाहता हूं, लेकिन मैं इस तरह की स्क्रिप्ट का विशेषज्ञ नहीं हूं, तो क्या आप बता सकते हैं कि हमें इस स्क्रिप्ट के साथ क्या करना है? हमें इसे कहाँ कॉपी करना चाहिए? धन्यवाद।
ओनेसीमे

महान, बहुत बहुत धन्यवाद, मैंने इसे (पायथन कंसोल के माध्यम से) आज़माया और यह अच्छी तरह से काम करता है। अगले चरण में, मैं इसे एक सेक्स्टांटे मॉडलर के रूप में अनुकूलित करने का प्रयास करूंगा। यह नुकसान है कि ऐसे उपकरण में कोई कमांड नहीं है जैसे कि Sextante (कुछ चर के साथ आउटपुट फ़ाइल का नाम सेट करें)।
13

3

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

आर में मैं इसे इस तरह की कोशिश करूँगा। आपको कोड को संशोधित करना पड़ सकता है क्योंकि मुझे आपकी डेटा संरचना और चर नहीं पता हैं।

library(raster);library(rgdal);library(sp)         # Load in required packages

vegetation <- readOGR("H:/Examplefolder",          # To load a vegetation polygon shape here 
                      "vegi")                      # called vegi.shp    

setwd(harddriveD)                                  # Now, switch to the directory containing your species shapes
                                                   # and use the following code 
species_files <- grep( ".shp",                     # to extract all shape names
                       dir(),
                       ignore.case=T,
                       value=T)

                                                   # Now read in your speciesfiles in a loop 
for(name in species_files){                        # and do a  vegetation data
                                                   # overlay with your basename
    spec_name <- strsplit(name,split=".shp")[[1]]  # to get only the load in
                                                   # your species name shape. 

    spec_shp <- readOGR(".",spec_name)             # I assume that you have point data. Otherwise change the code.
    ov <- over(spec_shp,vegetation)                # Make a overlay with your vegetation data, 
                                                   # returns a dataframe of the overlaying vegetation shape attributes, 
                                                   # which are within your species shape. 
                                                   # This dataframe has the same number of rows as your input species shape. 
   cd <- coordinates(spec_shp);                    # Therefore you could just append the needed information to your species shape.
   proj <- proj4string(spec_shp)                   # save coordinates and proj.

                                                   # Append your vegetation data to your species shape
   spec_shp$Vegetation <- ov$ShrubSpecies          # Or whatever you want to get. 

   spp <- SpatialPointsDataFrame(                  # In the end export your shape again. 
                    coords=cd,                     # I would advise you to use a different folder. 
                    data=as.data.frame(spec_shp),  # In case you have polygons instead of Point data
                    proj4string=CRS(proj) )        # use the SpatialPolygonDataFrame function. -> help ?SpatialPolygonDataFrame
  writeOGR(spp,                                    #Should result in a new shape 
           "foldername",                           # which has your species name.
           spec_name,
           driver="ESRI Shapefile")                      

}

मैंने आपके लक्ष्य और आपके डेटासेट की संरचना के बारे में कई धारणाएँ बनाई हैं। सबसे अधिक संभावना है कि आपको इसे आज़माने से पहले अपनी आवश्यकताओं के लिए कोड को सही करना होगा।


आपकी मदद के लिए धन्यवाद, मैं इसे आज़माऊंगा। मेरी प्रजाति का डेटा बहुभुज (प्रजाति वितरण) में है, लेकिन मुझे लगता है कि यह काफी समान है? बहुत धन्यवाद
Onesime

आपको बस कुछ फ़ंक्शन (उदाहरण के लिए SpatialPolygonsDataFrame) को बदलने की आवश्यकता है और सबसे अधिक संभावना डेटाफ़्रेम या कुछ और की सूची देता है।
कर्लेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.