编写可以同时在Arcpy和PyQGIS上调用的脚本吗?


11

我花了很多时间来寻找这个主题的明确答案,但仍然无法真正实现以独立脚本访问PyQGIS的目标。

已针对许多不同的问题提供了部分答案,例如:

使用QGIS和环境变量的独立应用程序

独立脚本中的pyQgis,矢量加载错误

使用PyQGIS编写独立的Python脚本?

我发现的最困难的答案是@gene 在这里提供的。

我特别感兴趣的是能够编写可以在Arcpy和PyQGIS上调用的脚本。我已经根据PyQGIS Cookbook文档将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运行前面的代码。我正在将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.

Answers:



3

我正在成功使用OSGeo4W。您要做的是设置:

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

并在代码中引用:

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

它根本不适合我。
SIslam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.