การเขียนสคริปต์ที่สามารถโทรได้ทั้ง Arcpy และ PyQGIS?


11

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

มีการให้คำตอบบางส่วนไว้ในคำถามต่าง ๆ มากมายเช่น:

แอปพลิเคชันแบบสแตนด์อโลนที่ใช้ QGIS และตัวแปรสภาพแวดล้อม

pyQgis ในสคริปต์สแตนด์อะโลนข้อผิดพลาดในการโหลดเวกเตอร์

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

ส่วนใหญ่ thourough คำตอบที่ฉันได้พบถูกจัดให้โดย @gene ที่นี่

สิ่งที่ฉันสนใจเป็นพิเศษคือสามารถเขียนสคริปต์ที่สามารถเรียกใช้ทั้ง Arcpy และ PyQGIS ฉันได้ตั้งค่าตัวแปรระบบทั้ง PATH และ PYTHONPATH ตามเอกสารประกอบตำรา PyQGIS เป็น:

 C:\OSGeo4W\apps\qgis\bin,%PATH%;C:\Python27\ArcGIS10.2\Lib\site-packages\PyQt4;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\

และ

C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages

ตามลำดับ

ฉันเริ่มต้นด้วยสคริปต์นี้:

from qgis.core import *

QgsApplication.setPrefixPath("C:\OSGeo4W\bin\qgis.bat", True)
QgsApplication.initQgis()
# or your solution
# read a shapefile 
layer = QgsVectorLayer('H:\DATA\Airfields_AB.shp', 'Airfields', 'ogr')
layer.isValid()
True
# loop through layer 
for elem in layer.getFeatures():
    geom= elem.geometry()
    attr =elem.attributes()
    (processing)

ฉันกำลังมองหาที่จะหลีกเลี่ยงแบทช์สคริปต์ที่ตั้งค่าที่เหมาะสม แต่ควรเรียกพวกเขาจากภายในสคริปต์ Python สถานการณ์ที่ดีที่สุดสำหรับฉันคือการใช้ IDLE ในโฟลเดอร์ ArcGIS 10.2 เพื่อเรียกใช้รหัสก่อนหน้า ฉันใช้เครื่อง Windows 7 พร้อม ArcGIS 10.2 และ QGIS 2.01

ปัจจุบันผลลัพธ์ของรหัสนี้คือ:

Traceback (most recent call last):
  File "F:\Users\...\PyQGIS_Test_01.py", line 1, in <module>
    from qgis.core import *
ImportError: DLL load failed: The specified module could not be found.

คำตอบ:


4

คุณจะต้องตรวจสอบให้แน่ใจว่าตัวแปรสภาพแวดล้อม PATH ของคุณรวมโฟลเดอร์ที่มี python dll อยู่ มักจะอยู่ภายใต้[QGIS_install_folder] \ apps \ qgis \ binเช่น

C:\Program Files (x86)\QGIS Valmiera\apps\qgis\bin

ดูที่Configure PyScripter เพื่อใช้กับ QGIS (และยังคงใช้ arcpy) บนโพสต์เก่าของWindows Quite ตอนนี้ แต่ควรให้แนวคิดพื้นฐานเกี่ยวกับสิ่งที่จำเป็นในการตั้งค่า


3

ฉันใช้ OSGeo4W สำเร็จแล้ว สิ่งที่คุณต้องทำคือกำหนด:

PATH=C:\OSGeo4W\apps\qgis\bin;%PATH%

และการอ้างอิงในรหัส:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)

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