Vous utilisez les outils ArcPy et PyGRASS dans le même script Python?

10

J'essaie d'écrire un script Python, qui comprend différentes commandes ArcPy / ArcGIS et je veux le combiner avec les outils de géotraitement GRASS.

Malheureusement, l'importation des bibliothèques GRASS ne fonctionne pas.

import grass.script as grass

se termine par une erreur:

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

Je sais que GRASS GIS installe sa propre version Python. N'y a-t-il pas un moyen de combiner l'installation d'ArcGIS et de GRASS GIS de Python? J'ai essayé de copier le module pygrass (ou ce que je pensais qu'il pouvait être) dans le dossier C: \ Python26 \ ArcGIS10.0 \ Lib \ site-packages \. Je reçois un message d'erreur différent, mais cela ne fonctionne toujours pas.

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

J'utilise ArcGIS 10 et GRASS 6.4.2 sur une machine Windows 7 64 bits.

Martin
la source

Réponses:

6

Très probablement, la version grass de Python a installé ses propres liaisons Python dans un site spécifique à l'herbe. Une option non idéale serait d'ajouter les éléments suivants avant l'importation grass.script:

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

Cela ajoute temporairement de l'herbe à votre système $PYTHONPATHafin que votre installation ArcGIS10.0 Python le trouve lors de la recherche d'importations.

Jay Laura
la source
Hey Jay, merci pour ton conseil. Je pense que le dossier correspondant est ... / etc / python / grass / script /. Dois-je faire référence à un fichier .py spécifique ou à tous?
Martin
1
Oui, par exemple, si je voulais ajouter les liaisons gdal à partir d'un autre dossier, je devrais utiliser python_install/site-packages/osgeo/gdal.py. grass.pyExiste- t-il un script dans le grassrépertoire?
Jay Laura
Il existe plusieurs fichiers .py, malheureusement aucun avec un nom clair comme grass.py. J'ai essayé de les référencer tous. Malheureusement, cela ne fonctionne toujours pas. :-(
Martin
1
Hmmm .... une autre idée à essayer: il semble que vous pouvez installer GRASS sans utiliser le python fourni, comme indiqué dans le message lié. Essayez peut-être une réinstallation et forcez GRASS à utiliser l'installation d'Arc python? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura
1
Je vous ai posé des questions sur pygrass mais peut-être que ce post est de toute façon intéressant. Il parle de liaisons arcpy pour gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango