Usando ferramentas ArcPy e PyGRASS no mesmo script Python?

10

Estou tentando escrever um script Python, que inclui diferentes comandos do ArcPy / ArcGIS e quero combiná-lo com as ferramentas de geoprocessamento GRASS.

Infelizmente, importar as bibliotecas GRASS não funciona.

import grass.script as grass

termina com um erro:

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

Eu sei que o GRASS GIS instala sua própria versão em Python. Não existe uma maneira de combinar a instalação do Python no ArcGIS e GRASS GIS? Tentei copiar o módulo pygrass (ou o que achei que fosse) para a pasta C: \ Python26 \ ArcGIS10.0 \ Lib \ site-packages \. Estou recebendo uma mensagem de erro diferente, mas ainda não está funcionando.

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

Estou usando ArcGIS 10 e GRASS 6.4.2 em uma máquina Windows 7 de 64 bits.

Martin
fonte

Respostas:

6

Provavelmente, a versão grama do Python instalou suas próprias ligações Python nos pacotes de sites específicos da grama. Uma opção não ideal seria adicionar o seguinte antes da importação grass.script:

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

O que isto está fazendo é adicionar temporariamente grama ao seu, $PYTHONPATHpara que sua instalação do ArcGIS10.0 Python o encontre ao procurar importações.

Jay Laura
fonte
Hey Jay, obrigado pela sua dica. Eu acho que a respectiva pasta é ... / etc / python / grass / script /. Preciso fazer referência a um arquivo .py específico ou a todos eles?
Martin
1
Sim, por exemplo, se eu quisesse adicionar as ligações gdal de outra pasta, precisaria usar python_install/site-packages/osgeo/gdal.py. Existe um grass.pyscript no grassdiretório?
Jay Laura
Existem vários arquivos .py, infelizmente nenhum com um nome claro como grass.py. Eu tentei fazer referência a todos eles. Infelizmente ainda não funciona. :-(
Martin
1
Hmmm .... mais uma idéia para você tentar: Parece que você pode instalar o GRASS sem usar o python incluído, conforme o post vinculado. Talvez tente reinstalar e forçar o GRASS a usar a instalação do Python no Arc? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura
1
Você perguntou sobre pygrass, mas talvez este post seja interessante de qualquer maneira. Ele fala sobre ligações arcadas para gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango