Использование инструментов ArcPy и PyGRASS в одном и том же скрипте Python?

10

Я пытаюсь написать скрипт Python, который включает в себя различные команды ArcPy / ArcGIS и хочу объединить его с инструментами геообработки GRASS.

К сожалению, импорт библиотек GRASS не работает.

import grass.script as grass

заканчивается ошибкой:

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

Я знаю, что GRASS GIS устанавливает свою собственную версию Python. Разве нет способа объединить установку Python для ArcGIS и GRASS GIS? Я попытался скопировать модуль pygrass (или, как я думал, это может быть) в папку C: \ Python26 \ ArcGIS10.0 \ Lib \ site-packages \. Я получаю другое сообщение об ошибке, но оно все еще не работает.

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

Я использую ArcGIS 10 и GRASS 6.4.2 на 64-битной машине с Windows 7.

Мартин
источник

Ответы:

6

Скорее всего, версия Python для травы установила свои собственные привязки Python в определенные пакеты сайтов для травы. Один неидеальный вариант - добавить следующее перед импортом grass.script:

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

Что это делает, так это временно добавляет $PYTHONPATHгазонку в ваш файл, чтобы ваша установка ArcGIS10.0 Python нашла его при поиске импорта.

Джей Лаура
источник
Привет, Джей, спасибо за твой совет. Я думаю, что соответствующая папка ... / etc / python / grass / script /. Нужно ли ссылаться на определенный файл .py или на все?
Мартин
1
Да, например, если бы я хотел добавить привязки gdal из другой папки, я должен был бы использовать python_install/site-packages/osgeo/gdal.py. Существует ли grass.pyскрипт в grassкаталоге?
Джей Лора
Существует несколько файлов .py, но, к сожалению, ни одного с таким ясным именем, как grass.py. Я пытался ссылаться на них всех. К сожалению, это все еще не работает. :-(
Мартин
1
Хммм .... еще одна идея для вас: похоже, вы можете установить GRASS без использования прилагаемого питона, как указано в сообщении. Возможно, попробуйте переустановить и заставить GRASS использовать установку Python Arc? lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Джей Лаура
1
Я спрашивал о пигразах, но, возможно, этот пост в любом случае интересен. Это говорит о дугообразных привязках для gdal. arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
данго