Menggunakan alat ArcPy dan PyGRASS dalam skrip Python yang sama?

10

Saya mencoba untuk menulis skrip Python, yang mencakup berbagai perintah ArcPy / ArcGIS dan ingin menggabungkannya dengan alat geoprosesing GRASS.

Sayangnya mengimpor perpustakaan GRASS tidak berfungsi.

import grass.script as grass

berakhir dengan kesalahan:

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

Saya tahu bahwa GRASS GIS menginstal versi Python sendiri. Apakah tidak ada cara untuk menggabungkan ArcGIS dan instalasi GRASS GIS dari Python? Saya mencoba menyalin modul pygrass (atau apa yang saya pikir mungkin itu) ke folder C: \ Python26 \ ArcGIS10.0 \ Lib \ situs-paket \. Saya mendapat pesan kesalahan yang berbeda, tetapi masih tidak berfungsi.

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()

Saya menggunakan ArcGIS 10 dan GRASS 6.4.2 pada mesin Windows 7 64 Bit.

Martin
sumber

Jawaban:

6

Kemungkinan besar versi rumput dari Python telah memasang ikatan Python-nya sendiri ke dalam paket-situs khusus rumput. Satu opsi yang tidak ideal adalah menambahkan yang berikut sebelum mengimpor grass.script:

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

Apa yang dilakukan adalah menambahkan sementara rumput Anda $PYTHONPATHsehingga instalasi ArcGIS10.0 Python Anda menemukannya saat mencari impor.

Jay Laura
sumber
Hei Jay, terima kasih atas tipnya. Saya pikir folder masing-masing adalah ... / etc / python / grass / script /. Apakah saya harus merujuk file .py tertentu atau semuanya?
Martin
1
Ya, misalnya, jika saya ingin menambahkan binding gdal dari folder lain yang perlu saya gunakan python_install/site-packages/osgeo/gdal.py. Apakah grass.pyada skrip di grassdirektori?
Jay Laura
Ada beberapa file .py, sayangnya tidak ada dengan nama yang jelas seperti grass.py. Saya sudah mencoba referensi semuanya. Sayangnya itu masih tidak berhasil. :-(
Martin
1
Hmmm .... satu lagi ide untuk Anda coba: Sepertinya Anda dapat menginstal GRASS tanpa menggunakan bundel python, sesuai pos yang ditautkan. Mungkin mencoba menginstal ulang dan memaksa GRASS untuk menggunakan Arc python install? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura
1
Saya bertanya tentang pygrass tapi mungkin posting ini menarik. Ini berbicara tentang ikatan lengket untuk Gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango