Korzystasz z narzędzi ArcPy i PyGRASS w tym samym skrypcie Python?

10

Próbuję napisać skrypt w języku Python, który zawiera różne polecenia ArcPy / ArcGIS i chcę połączyć go z narzędziami do geoprzetwarzania GRASS.

Niestety importowanie bibliotek GRASS nie działa.

import grass.script as grass

kończy się błędem:

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

Wiem, że GRASS GIS instaluje własną wersję Pythona. Czy nie ma sposobu na połączenie ArcGIS i GRASS GIS instalacji Pythona? Próbowałem skopiować moduł pygrass (lub jak mi się wydawało) do folderu C: \ Python26 \ ArcGIS10.0 \ Lib \ site-packages \. Otrzymuję inny komunikat o błędzie, ale nadal nie działa.

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

Używam ArcGIS 10 i GRASS 6.4.2 na 64-bitowym komputerze z systemem Windows 7.

Jaskółka oknówka
źródło

Odpowiedzi:

6

Najprawdopodobniej wersja trawiasta Pythona zainstalowała własne wiązania Python w pakietach witryn specyficznych dla trawy. Jedną z idealnych opcji byłoby dodanie następujących elementów przed importowaniem grass.script:

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

$PYTHONPATHChodzi o to, aby tymczasowo dodać trawę do twojej , aby twoja instalacja ArcGIS10.0 Python znalazła ją podczas wyszukiwania importów.

Jay Laura
źródło
Hej Jay, dziękuję za twoją wskazówkę. Myślę, że odpowiedni folder to ... / etc / python / grass / script /. Czy muszę odwoływać się do określonego pliku .py czy wszystkich?
Martin
1
Tak, na przykład, jeśli chciałbym dodać powiązania gdal z innego folderu, musiałbym użyć python_install/site-packages/osgeo/gdal.py. Czy grass.pyskrypt istnieje w grasskatalogu?
Jay Laura
Istnieje kilka plików .py, niestety żaden z wyraźną nazwą, np. Grass.py. Próbowałem odwołać się do wszystkich. Niestety nadal nie działa. :-(
Martin
1
Hmmm .... jeszcze jeden pomysł, który możesz wypróbować: Wygląda na to, że możesz zainstalować GRASS bez użycia dołączonego pytona, jak na linkowany post. Być może spróbuj ponownie zainstalować i zmusić GRASS do użycia instalacji Pythona Arc? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura
1
Pytałem o pygrass, ale może ten post i tak jest interesujący. Mówi o arkadowych wiązaniach gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango