Написание скриптов, которые могут вызывать как Arcpy, так и PyQGIS?

11

Я потратил довольно много времени в поисках четкого ответа на эту тему и до сих пор не смог достичь своей цели - получить доступ к 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.
CWDWILSO
источник

Ответы:

4

Вам нужно будет убедиться, что ваша переменная окружения PATH включает в себя папку, в которой находятся библиотеки Python. Обычно в папке [QGIS_install_folder] \ apps \ qgis \ bin, например

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

Также взгляните на Configure PyScripter для использования с QGIS (и все еще используйте arcpy) в Windows Довольно старый пост сейчас, но он должен дать вам базовое представление о том, что нужно настроить

mapoholic
источник
3

Я использую OSGeo4W успешно. Что вы должны сделать, это установить:

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

И ссылка в коде:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)
caiohamamura
источник
Это не работает для меня вообще.
SIslam