Sử dụng các công cụ ArcPy và PyGRASS trong cùng một tập lệnh Python?


10

Tôi đang cố gắng viết một tập lệnh Python, bao gồm các lệnh ArcPy / ArcGIS khác nhau và muốn kết hợp nó với các công cụ xử lý địa lý GRASS.

Thật không may, việc nhập các thư viện GRASS không hoạt động.

import grass.script as grass

kết thúc bằng một lỗi:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ImportError: No module named script

Tôi biết rằng GRASS GIS cài đặt phiên bản Python của riêng nó. Có cách nào để kết hợp cài đặt ArcGIS và GRASS GIS của Python không? Tôi đã thử sao chép mô-đun pygrass (hoặc những gì tôi nghĩ nó có thể là nó) vào thư mục C: \ Python26 \ ArcGIS10.0 \ Lib \ site-gói \. Tôi đang nhận được một thông báo lỗi khác nhau, nhưng nó vẫn không hoạt động.

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python26\ArcGIS10.0\lib\site-packages\grass\script\__init__.py", line 1, in <module>
    from core   import *
  File "C:\Python26\ArcGIS10.0\lib\site-packages\grass\script\core.py", line 38, in <module>
    gettext.install('grasslibs', os.path.join(os.getenv("GISBASE"), 'locale'))
  File "C:\Python26\ArcGIS10.0\lib\ntpath.py", line 96, in join
    assert len(path) > 0
TypeError: object of type 'NoneType' has no len()

Tôi sử dụng ArcGIS 10 và GRASS 6.4.2 trên máy Windows 7 64 Bit.

Câu trả lời:


6

Rất có thể phiên bản cỏ của Python đã cài đặt các ràng buộc Python của riêng nó vào một gói trang web cụ thể của cỏ. Một tùy chọn không lý tưởng sẽ là thêm các mục sau trước khi nhập grass.script:

import sys
sys.path.append('\path\to\grass\bindings.py')

Điều này đang làm là tạm thời thêm cỏ vào để $PYTHONPATHcài đặt Python ArcGIS10.0 của bạn tìm thấy nó khi tìm kiếm nhập khẩu.


Này Jay, cảm ơn vì tiền boa của bạn. Tôi nghĩ thư mục tương ứng là ... / etc / python / grass / script /. Tôi có phải tham khảo một tệp .py cụ thể hoặc tất cả chúng không?
Martin

1
Có, ví dụ, nếu tôi muốn thêm các ràng buộc gdal từ một thư mục khác, tôi sẽ cần phải sử dụng python_install/site-packages/osgeo/gdal.py. Liệu một grass.pykịch bản tồn tại trong grassthư mục?
Jay Laura

Có một số tệp .py, tiếc là không có tệp nào có tên rõ ràng như grass.py. Tôi đã cố gắng tham khảo tất cả chúng. Thật không may, nó vẫn không hoạt động. :-(
Martin

1
Hmmm .... thêm một ý tưởng để bạn thử: Có vẻ như bạn có thể cài đặt GRASS mà không cần sử dụng python kèm theo, theo bài đăng được liên kết. Có lẽ thử cài đặt lại và buộc GRASS sử dụng cài đặt python Arc? list.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura

1
Tôi đã hỏi về pygrass nhưng có lẽ bài đăng này vẫn được quan tâm. Nó nói về các ràng buộc hồ quang cho gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango
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.