Bu konuya net bir cevap aramak için biraz zaman harcadım ve hala tek başına bir senaryoda PyQGIS'e erişme hedefime ulaşamadım.
Yanıtların bir kısmı aşağıdaki gibi birçok farklı soruda verilmiştir:
QGIS ve ortam değişkenlerini kullanan bağımsız uygulamalar
tek başına komut dosyasında pyQgis, vektör yükleme hatası
PyQGIS kullanarak bağımsız Python betikleri mi yazıyorsunuz?
Bulduğum en güzel cevap burada @gene tarafından sağlandı .
Özellikle ilgilendiğim şey, hem Arcpy hem de PyQGIS için çağrılabilecek komut dosyaları yazabilmektir. PyQGIS yemek kitabı belgelerine göre hem PATH hem de PYTHONPATH sistem değişkenlerini ayarladım:
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\
ve
C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages
Sırasıyla.
Bu script ile başlıyorum:
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)
Uygun ayarları yapan toplu komut dosyalarından kaçınmak yerine Python betiğinin içinden çağırmak istiyorum. Benim için en uygun senaryo, önceki kodu çalıştırmak için ArcGIS 10.2 klasöründeki IDLE'yi kullanmak olacaktır. ArcGIS 10.2 ve QGIS 2.01 ile bir Windows 7 makinesi kullanıyorum.
Şu anda bu kodun sonuçları:
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.