¿Usa las herramientas ArcPy y PyGRASS en el mismo script de Python?

10

Estoy tratando de escribir un script de Python, que incluye diferentes comandos ArcPy / ArcGIS y quiero combinarlo con las herramientas de geoprocesamiento GRASS.

Desafortunadamente, importar las bibliotecas GRASS no funciona.

import grass.script as grass

termina en un error:

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

Sé que GRASS GIS instala su propia versión de Python. ¿No hay una manera de combinar ArcGIS y la instalación GRASS GIS de Python? Intenté copiar el módulo pygrass (o lo que pensé que podría ser) a la carpeta C: \ Python26 \ ArcGIS10.0 \ Lib \ site-packages \. Recibo un mensaje de error diferente, pero todavía no funciona.

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

Estoy usando ArcGIS 10 y GRASS 6.4.2 en una máquina con Windows 7 de 64 bits.

Martín
fuente

Respuestas:

6

Lo más probable es que la versión de hierba de Python haya instalado sus propios enlaces de Python en paquetes de sitio específicos de hierba. Una opción no ideal sería agregar lo siguiente antes de importar grass.script:

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

Lo que está haciendo es agregar temporalmente hierba a su sitio $PYTHONPATHpara que su instalación de Python ArcGIS10.0 lo encuentre al buscar importaciones.

Jay Laura
fuente
Hola Jay, gracias por tu consejo. Creo que la carpeta respectiva es ... / etc / python / grass / script /. ¿Tengo que hacer referencia a un archivo .py específico o a todos ellos?
Martin
1
Sí, por ejemplo, si quisiera agregar los enlaces gdal de otra carpeta que necesitaría usar python_install/site-packages/osgeo/gdal.py. ¿Existe un grass.pyscript en el grassdirectorio?
Jay Laura
Hay varios archivos .py, desafortunadamente ninguno con un nombre claro como grass.py. He tratado de hacer referencia a todos ellos. Lamentablemente todavía no funciona. :-(
Martin
1
Hmmm ... una idea más para que pruebes: parece que puedes instalar GRASS sin usar el paquete de python, según la publicación vinculada. ¿Quizás intente reinstalar y obligar a GRASS a usar la instalación de Arc python? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura
1
Te pregunté sobre pygrass, pero tal vez esta publicación sea de interés de todos modos. Habla sobre enlaces arcpy para gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango