Harici CSV verileri ile QGIS modelleyici çoklu tarama hesaplamaları mı yapıyorsunuz?


20

Bir CSV meta veri dosyasındaki değerlere dayalı bir raster kümesi üzerinde birden çok hesaplama yapmak gerekiyor.

QGIS grafik modelleyici kullanıyorum ve Tableve Table Fieldgirişleri ile bir CSV belirli bir alanı çağırabilirsiniz .

Birden fazla rasterim olduğundan ve her raster CSV'de karşılık gelen bir değere sahip olduğundan, belirli bir satırı nasıl arayabilirim? (örneğin, aramaya benzer).

Kullanım kolaylığı için bir komut dosyası eklemek istemiyorsam.


1
Büyük olasılıkları, rasterleri nokta dosyalarına dönüştürerek yaklaşmak daha kolay olurdu. Oradan iki dosya arasında gerekli bağlantıları yapmak daha kolay olurdu. webhelp.esri.com/arcgisdesktop/9.3/…
Jamie2483

3
Görevinizin bir listesini (sözde kodu) oluşturun. Bu, işinizi yapmak için bir senaryoya başvurmanız gerekip gerekmediğini size söyleyecektir. Yinelemeler veya koşullu yordamlar, komut dosyalarına başvurmanız gerektiğinin göstergeleridir. Yapı betikleri ile yapılan arkadaşlarınızdır.
Ragnvald

Yanıtlar:


2

Gerçekten eski yazı ama ne yazık ki sizin durumunuz için, modelleyici bir komut dosyası kullanmak için olası bir çözüm sanırım:

  • Yüklenen tüm raster katmanlarının adlarını alır.
  • Raster adlarına sahip bir sütun içeren meta veriler üzerinden yineleyin.
  • Yüklenen raster adlarını meta verilerdekilerle eşleştirir.
  • Herhangi bir eşleşme bulunursa, raster'in karşılık gelen değeri çıkarılır.

  1. Aşağıdakilerden bir komut dosyası oluşturabilirsiniz:

    Processing Toolbox > Scripts > Tools > Create new script
    

    Sonra aşağıdakine benzer bir şey kullanın:

    ##Example=name
    ##Table=table
    ##Field=Field Table
    ##Output_value=output Number
    
    from qgis.core import QgsMapLayer, QgsMapLayerRegistry
    import csv
    
    raster_list = [layer.name() for layer in QgsMapLayerRegistry.instance().mapLayers().values() if layer.type() == QgsMapLayer.RasterLayer]
    with open(Table) as f:
        reader = csv.reader(f)
        for row in reader:
            for raster in raster_list:
                if raster in row[0]:
                    Output_value = row[1]
                    print Output_value
    

  1. Sonra komut dosyasını modelleyicinize ekleyin (sadece iki girişle basit bir örnek yaptım):

    modelci

    Bu modeli yukarıdaki komut dosyasını kullanarak çalıştırırsam, raster adına karşılık gelen meta verilerden çıktı değerini yazdırır:

    Sonuç


  1. Modelinizin nasıl yapılandırıldığına ve muhtemelen betiği değiştirdiğine bağlı olarak, birden fazla raster hesaplama yapabilirsiniz.
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.