Pisanie skryptów, które mogą wywoływać zarówno Arcpy, jak i PyQGIS?

11

Spędziłem sporo czasu szukając jasnej odpowiedzi na ten temat i nadal nie byłem w stanie naprawdę osiągnąć celu, jakim jest uzyskanie dostępu do PyQGIS w samodzielnym skrypcie.

Części odpowiedzi udzielono na wiele różnych pytań, takich jak:

Samodzielne aplikacje korzystające z QGIS i zmiennych środowiskowych

pyQgis w skrypcie samodzielnym, błąd ładowania wektora

Pisz samodzielne skrypty Pythona za pomocą PyQGIS?

Najbardziej szczegółową odpowiedź, którą znalazłem, dostarczyłem tutaj @gene .

Szczególnie interesuje mnie możliwość pisania skryptów, które mogą wywoływać zarówno Arcpy, jak i PyQGIS. Ustawiłem zmienne systemowe PATH i PYTHONPATH zgodnie z dokumentacją książki kucharskiej PyQGIS jako:

 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\

i

C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages

Odpowiednio.

Zaczynam od tego skryptu:

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)

Staram się unikać skryptów wsadowych, które ustawiają odpowiednie ustawienia, ale raczej wywołuję je z poziomu skryptu Python. Dla mnie optymalnym scenariuszem byłoby użycie IDLE w folderze ArcGIS 10.2 do uruchomienia poprzedniego kodu. Używam komputera z systemem Windows 7 z ArcGIS 10.2 i QGIS 2.01.

Obecnie wyniki tego kodu to:

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
źródło

Odpowiedzi:

3

Z powodzeniem używam OSGeo4W. Co musisz zrobić, to ustawić:

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

I odniesienie w kodzie:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)
caiohamamura
źródło
W ogóle mi to nie działa.
SIslam