การเขียนสคริปต์ Python แบบสแตนด์อโลนโดยใช้ PyQGIS?


17

ฉันได้รับการเรียนรู้วิธีการใช้คอนโซลการหลามใน QGIS โดยใช้การอ้างอิงจากqgisworkshop.org ฉันคุ้นเคยกับการเขียนสคริปต์แบบสแตนด์อโลนใน ArcGIS และต้องการเรียนรู้วิธีการทำเช่นเดียวกันกับ QGIS

ตัวอย่างเช่นใน ArcGIS 10 สคริปต์หลามแบบสแตนด์อโลนอย่างง่ายจะเป็น:

import arcpy 

setFolder = ''

doProcess

ฉันเข้าใจวิธีการใช้คอนโซล python ใน QGIS แต่ฉันไม่สามารถหาตัวอย่างเพื่อทำตามขั้นตอนเดียวกันโดยใช้สคริปต์แบบสแตนด์อโลน ฉันสงสัยว่าฉันเพิ่งโชคร้ายกับการค้นหาของฉัน มีตัวอย่างที่ชัดเจนเกี่ยวกับวิธีการออนไลน์นี้หรือไม่?

คำตอบ:


15

ฉันยังไม่ได้เขียนสคริปต์แบบสแตนด์อโลนตาม QGIS API แต่ตำรา PyQGISใช้การเริ่มต้นต่อไปนี้:

ก่อนอื่นคุณต้องนำเข้าโมดูล qgis, ตั้งค่าเส้นทาง QGIS ที่จะค้นหาทรัพยากร - ฐานข้อมูลของโปรเจคเตอร์, ผู้ให้บริการ ฯลฯ เมื่อคุณตั้งค่าเส้นทางส่วนนำหน้าด้วยอาร์กิวเมนต์ที่สองตั้งค่าเป็น True, QGIS จะเริ่มต้นเส้นทางทั้งหมดด้วย dir มาตรฐาน . ฟังก์ชั่นการเรียก initQgis () เป็นสิ่งสำคัญเพื่อให้ QGIS ค้นหาผู้ให้บริการที่มีอยู่

from qgis.core import *

# supply path to where is your qgis installed
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)

# load providers
QgsApplication.initQgis()

ตอนนี้คุณสามารถทำงานกับ QGIS API - โหลดเลเยอร์และทำการประมวลผลหรือเพิ่ม GUI ด้วยผ้าใบแผนที่ ความเป็นไปได้ไม่มีที่สิ้นสุด :-)

เมื่อคุณใช้ห้องสมุด QGIS เสร็จแล้วให้เรียก exitQgis () เพื่อตรวจสอบให้แน่ใจว่าทุกอย่างเรียบร้อยแล้ว (เช่นล้างแผนที่เลเยอร์แผนที่และลบเลเยอร์):

QgsApplication.exitQgis()

1
ขอบคุณ @underdark - มันมีประโยชน์ ฉันพบว่ามันไม่สำคัญที่จะได้from qgis.core import *ทำงานกับ OSX ดังนั้นฉันวางแผนที่จะถามคำถามใหม่ในหัวข้อนี้
djq

ขออภัยที่จะติดแท็กคำถามอื่นที่นี่ แต่มีเอกสารออนไลน์ของโมดูล qgis? ทั้งหมดที่ฉันสามารถหาได้คือการอ้างอิงถึงมันคล้ายกับ c ++ docs แต่ไม่มีลิงก์จริงไปยังเอกสาร python
djq

ข้อมูลเฉพาะของ Python อยู่ใน pyQGIS Cookbook มิฉะนั้นคุณสามารถพึ่งพาเอกสาร API C ++ API ปกติ - มันไม่เหมือนกัน แต่ก็เหมือนกัน
underdark

สำหรับผู้ใช้ ubuntu อ้างอิง: gis.stackexchange.com/questions/52919/…สำหรับเส้นทางการติดตั้ง (เป็น "/ usr")
Mr Purple
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.