QGIS'de tekrarlanan görevler nasıl gerçekleştirilir?


11

Birçok özellik dosyası üzerinde bir tedavi yapmaya çalışıyorum, bu yüzden otomatikleştirmek istiyorum.

Aslında, bazı türlerin uzamsal dağılımına sahip bir şekil dosyam ve bitki türüne sahip bir şekil dosyam var.

Türler Şekil Dosyasındaki bir türü (niteliğe göre) seçmek, sonra dağıtım alanıyla kesişen tüm bitki alanlarını (bölgeye göre) seçmek istiyorum. Son olarak, ad olarak türün adı ve sık bitki örtüsü türlerinin özellikleri ve formları ile bir şekil dosyasına sahip olmak istiyorum. Ve bunu tüm türler için tekrarlamak istiyorum (100'den fazla) ve mümkünse bunu kolay bir şekilde yapın (böylece başka bir kişi tarafından yapılabilir).

Bu görevi Sextante eklentisini kullanarak zaten denedim, ancak türün adını sonunda bir şekil dosyası adı olarak alamıyorum.

Birisi bunun için bir yöntem önerebilir mi?


1
Açıklamanızdan, tüm çalışma PostGIS veya SpatiaLite gibi tam özellikli bir coğrafi veritabanı için daha uygun olacaktır. Ancak ihtiyacınız olanı gerçekleştirmek için eksiksiz bir çözüm önemsiz olmayabilir.
steko

Yanıtlar:


5

Bu blog girişi SEXTANTE içinde nasıl yapılacağını anlamanıza yardımcı olabilir:

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

Umarım yardımcı olur


Merhaba, bunun için teşekkürler, denemek istiyorum, ama bu tür bir senaryo konusunda uzman değilim, bu yüzden bu senaryo ile ne yapmamız gerektiğini açıklayabilir misiniz? nereye kopyalamalıyız? Teşekkürler.
Onesime

Harika, çok teşekkür ederim, denedim (Python Konsolu aracılığıyla) ve iyi çalışıyor. Bir sonraki adım, onu bir Sextante modelcisi olarak uyarlamaya çalışacağım. Sextante gibi bir araçta böyle bir komutun olmaması hasardır (çıktı dosyasının adını bazı değişkenlerle ayarlayın).
Onesime

3

Bu küçük bir senaryo gerektirir. Tekrarlanabilir olmasını sağlamak için bunu R'de yapmaya çalışacağım . Bir Sextante modelinde toplu yürütme (fonksiyon üzerinde sağ tıklama) kullanılarak QGis ve Sextante ile de mümkün olmalıdır. Burada önce vektör kavşak aracını ve daha sonra bir tür uzamsal birleşimi kullanabilirsiniz.

R ben böyle denemek istiyorum. Veri yapınızı ve değişkenlerinizi bilmediğim için kodu değiştirmeniz gerekebilir.

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")                      

}

Hedefiniz ve veri kümenizin yapısı hakkında birçok varsayım yaptım. Büyük olasılıkla, denemeden önce kodu ihtiyaçlarınıza göre düzeltmeniz gerekir.


Yardımın için teşekkürler, deneyeceğim. Tür verilerim poligonda (tür dağılımı), ancak bence bu tamamen aynı mı? çok teşekkürler
Onesime

Sadece bazı işlevleri değiştirmeniz gerekir (örneğin SpatialPolygonsDataFrame) ve büyük olasılıkla üzerinde bir veri çerçeveleri listesi veya başka bir şey döndürür.
Curlew
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.