Viết kịch bản có thể kêu gọi cả Arcpy và PyQGIS?


11

Tôi đã dành khá nhiều thời gian để tìm kiếm một câu trả lời rõ ràng cho chủ đề này và vẫn không thể thực sự hoàn thành mục tiêu truy cập PyQGIS trong một kịch bản độc lập.

Các phần của câu trả lời đã được cung cấp qua nhiều câu hỏi khác nhau, chẳng hạn như:

Các ứng dụng độc lập sử dụng QGIS và các biến môi trường

pyQgis trong tập lệnh độc lập, lỗi tải vector

Viết kịch bản Python độc lập bằng PyQGIS?

Câu trả lời đầy đủ nhất mà tôi đã tìm thấy được cung cấp bởi @gene tại đây .

Điều tôi đặc biệt quan tâm, là có thể viết các kịch bản có thể gọi cả Arcpy và PyQGIS. Tôi đã đặt cả hai biến hệ thống PATH và PYTHONPATH theo tài liệu sách hướng dẫn nấu ăn PyQGIS là:

 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

Tương ứng.

Tôi đang bắt đầu với kịch bản này:

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)

Tôi đang tìm cách tránh các tập lệnh bó đặt các cài đặt phù hợp, mà gọi chúng từ bên trong tập lệnh Python. Kịch bản tối ưu đối với tôi sẽ là sử dụng IDLE trong thư mục ArcGIS 10.2 để chạy mã trước đó. Tôi đang sử dụng máy Windows 7 với ArcGIS 10.2 và QGIS 2.01.

Hiện tại kết quả của mã này là:

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.

Câu trả lời:



3

Tôi đang sử dụng OSGeo4W thành công. Những gì bạn phải làm là thiết lập:

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

Và tham khảo trong mã:

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

Nó không làm việc cho tôi cả.
SIslam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.