Писати сценарії, які можуть викликати як 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. Зазвичай під [QGIS_install_folder] \ apps \ qgis \ bin, напр

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

Подивіться також Налаштувати PyScripter для використання з QGIS (і досі використовувати arcpy) у Windows Досить старий пост зараз, але він повинен дати вам основне уявлення про те, що потрібно налаштувати


3

Я успішно використовую OSGeo4W. Що вам потрібно зробити, це встановити:

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

І посилання в коді:

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

Для мене це зовсім не працює.
SIslam
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.