Я потратил довольно много времени в поисках четкого ответа на эту тему и до сих пор не смог достичь своей цели - получить доступ к PyQGIS в отдельном скрипте.
Части ответов были предоставлены по многим различным вопросам, таким как:
Автономные приложения, использующие QGIS и переменные среды
pyQgis в автономном скрипте, ошибка загрузки вектора
Написание автономных скриптов Python с использованием PyQGIS?
Самый подробный ответ, который я нашел, был предоставлен @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.