Usando gli strumenti ArcPy e PyGRASS nello stesso script Python?


10

Sto cercando di scrivere uno script Python, che include diversi comandi ArcPy / ArcGIS e voglio combinarlo con strumenti di geoprocessing di GRASS.

Sfortunatamente l'importazione delle librerie GRASS non funziona.

import grass.script as grass

termina con un errore:

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

So che GRASS GIS installa la propria versione di Python. Non esiste un modo per combinare ArcGIS e l'installazione GRASS GIS di Python? Ho provato a copiare il modulo pygrass (o quello che pensavo potesse essere) nella cartella C: \ Python26 \ ArcGIS10.0 \ Lib \ site-pacchetti \. Ricevo un messaggio di errore diverso, ma non funziona ancora.

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

Sto usando ArcGIS 10 e GRASS 6.4.2 su una macchina Windows 7 a 64 bit.

Risposte:


6

Molto probabilmente la versione grass di Python ha installato i propri bind Python in pacchetti site specific di grass. Un'opzione non ideale sarebbe quella di aggiungere quanto segue prima dell'importazione grass.script:

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

Quello che sta facendo è aggiungere temporaneamente erba al tuo in $PYTHONPATHmodo che l'installazione di ArcGIS10.0 Python la trovi durante la ricerca delle importazioni.


Ehi Jay, grazie per il tuo consiglio. Penso che la rispettiva cartella sia ... / etc / python / grass / script /. Devo fare riferimento a un file .py specifico o a tutti loro?
Martin

1
Sì, ad esempio, se volessi aggiungere i collegamenti gdal da un'altra cartella, avrei bisogno di usarli python_install/site-packages/osgeo/gdal.py. Esiste uno grass.pyscript nella grassdirectory?
Jay Laura,

Esistono diversi file .py, sfortunatamente nessuno con un nome chiaro come grass.py. Ho provato a fare riferimento a tutti loro. Purtroppo non funziona ancora. :-(
Martin

1
Hmmm .... un'altra idea da provare: sembra che tu possa installare GRASS senza usare il pitone in bundle, come da post collegato. Forse provare a reinstallare e forzare GRASS a utilizzare l'installazione di Arc Python? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura

1
Ti ho chiesto di pygrass ma forse questo post è comunque interessante. Parla di attacchi arcpici per gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.