ดำเนินการ QGIS modeler หลายการคำนวณแรสเตอร์ด้วยข้อมูลจาก CSV ภายนอกหรือไม่


20

ฉันต้องทำการคำนวณหลายครั้งในชุด rasters ตามค่าในไฟล์ CSV ข้อมูลเมตา

ฉันใช้ตัวสร้างภาพกราฟิก QGIS และสามารถเรียกใช้ฟิลด์ที่ระบุใน CSV ด้วยTableและTable Fieldอินพุต

เนื่องจากฉันมีหลายแรสเตอร์และแต่ละแรสเตอร์มีค่าที่สอดคล้องกันใน CSV ฉันจะเรียกแถวที่ระบุได้อย่างไร (คล้ายกับการค้นหาตัวอย่าง)

ฉันไม่ต้องการเพิ่มสคริปต์หากไม่จำเป็นต้องใช้งานง่าย


1
มันอาจจะง่ายกว่าที่จะเข้าใกล้สิ่งนี้โดยการแปลงแรสเตอร์เป็นไฟล์ชี้ จากนั้นการเชื่อมโยงที่จำเป็นระหว่างสองไฟล์จะทำได้ง่ายขึ้น webhelp.esri.com/arcgisdesktop/9.3/…
Jamie2483

3
ทำรายการ (pseudocode) ของงานของคุณ สิ่งนี้จะบอกคุณว่าคุณต้องการใช้สคริปต์เพื่อทำงานของคุณหรือไม่ การทำซ้ำหรือขั้นตอนตามเงื่อนไขเป็นตัวบ่งชี้ว่าคุณต้องใช้สคริปต์ ทำกับสคริปต์โครงสร้างเป็นเพื่อนของคุณ
ragnvald

คำตอบ:


2

โพสต์เก่าจริงๆ แต่ฉันคิดว่าทางออกที่น่าจะเป็นไปได้สำหรับกรณีของคุณใช้สคริปต์ใน modeler ของคุณซึ่ง:

  • ดึงชื่อเลเยอร์แรสเตอร์ที่โหลดทั้งหมด
  • ทำซ้ำผ่านเมทาดาทาซึ่งมีคอลัมน์ที่มีชื่อแรสเตอร์
  • จับคู่ชื่อแรสเตอร์ที่โหลดกับชื่อในข้อมูลเมตา
  • หากพบการแข่งขันใด ๆ ค่าที่สอดคล้องของแรสเตอร์จะถูกดึงออกมา

  1. คุณสามารถสร้างสคริปต์จาก:

    Processing Toolbox > Scripts > Tools > Create new script
    

    จากนั้นใช้สิ่งต่อไปนี้ซึ่ง:

    ##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. จากนั้นเพิ่มสคริปต์ลงในตัวสร้างโมเดลของคุณ (ฉันทำตัวอย่างง่าย ๆ ด้วยอินพุตเพียงสองตัว):

    ผู้ออกแบบเครื่องแต่งก่าย

    หากฉันรันโมเดลนี้โดยใช้สคริปต์ด้านบนมันจะพิมพ์ค่าเอาต์พุตจากข้อมูลเมตาที่สอดคล้องกับชื่อของแรสเตอร์:

    ผลลัพธ์


  1. คุณสามารถทำการคำนวณแบบแรสเตอร์หลายครั้งทั้งนี้ขึ้นอยู่กับว่าโมเดลของคุณมีโครงสร้างอย่างไรและอาจปรับเปลี่ยนสคริปต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.