ฉันใช้เวลาสักครู่เพื่อค้นหาคำตอบที่ชัดเจนในหัวข้อนี้และยังไม่สามารถบรรลุเป้าหมายของฉันในการเข้าถึง 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.