在同一个Python脚本中使用ArcPy和PyGRASS工具?


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版本。是否没有办法结合使用ArcGIS和GRASS GIS安装的Python?我尝试将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()

我在Windows 7 64位计算机上使用ArcGIS 10和GRASS 6.4.2。

Answers:


6

Grass版本的Python很可能已将其自己的Python绑定安装到了Grass特定的站点包中。一种不理想的选择是在导入之前添加以下内容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
嗯....您可以尝试的另一种方法:根据链接的帖子,您似乎可以在不使用捆绑的python的情况下安装GRASS。也许尝试重新安装并强制GRASS使用Arc python安装?listing.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura

1
我问过有关pygrass的问题,但无论如何,这篇帖子还是很有趣。它讨论了gdal的arcpy绑定。arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
男子
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.