私はこのトピックの明確な答えを探すのにかなりの時間を費やしましたが、スタンドアロンスクリプトでPyQGISにアクセスするという目標を実際に達成することができませんでした。
回答の一部は、次のような多くの異なる質問にわたって提供されています。
スタンドアロンスクリプトのpyQgis、ベクトルロードエラー
PyQGISを使用してスタンドアロンPythonスクリプトを作成しますか?
私が見つけた最も微妙な答えは、ここ @geneによって提供されました。
私が特に興味を持っているのは、ArcpyとPyQGISの両方を呼び出すことができるスクリプトを作成できることです。PyQGISクックブックのドキュメントに従って、PATHとPYTHONPATHの両方のシステム変数を次のように設定しました。
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スクリプト内から呼び出すようにします。私にとって最適なシナリオは、ArcGIS 10.2フォルダーのIDLEを使用して上記のコードを実行することです。ArcGIS 10.2およびQGIS 2.01でWindows 7マシンを使用しています。
現在、このコードの結果は次のとおりです。
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.