การใช้เครื่องมือ 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 ของตัวเอง ไม่มีวิธีใดที่จะรวมการติดตั้ง ArcGIS และ GRASS GIS ของ Python เข้าด้วยกัน? ฉันพยายามคัดลอกโมดูล pygrass (หรือสิ่งที่ฉันคิดว่ามันอาจจะเป็น) ไปยัง C: \ Python26 \ ArcGIS10.0 \ Lib \ site-packages \ folder ฉันได้รับข้อความแสดงข้อผิดพลาดอื่น แต่ก็ยังใช้งานไม่ได้

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 บนเครื่อง Windows 7 64 บิต

คำตอบ:


6

เป็นไปได้มากว่ารุ่นหญ้าของ Python ได้ติดตั้งการผูก Python ของตัวเองลงในแพ็คเกจเฉพาะไซต์หญ้า ทางเลือกหนึ่งที่ไม่เหมาะจะเพิ่มก่อนต่อไปนี้เพื่อนำเข้าgrass.script:

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

สิ่งนี้กำลังทำอยู่คือการเพิ่ม grass ให้กับคุณชั่วคราวเพื่อ$PYTHONPATHให้การติดตั้ง Python ของคุณพบว่าเมื่อทำการค้นหาการนำเข้า


เฮ้เจย์ขอบคุณสำหรับเคล็ดลับของคุณ ฉันคิดว่าโฟลเดอร์ที่เกี่ยวข้องคือ ... / etc / python / grass / script / ฉันต้องอ้างอิงไฟล์. py หรือไฟล์ทั้งหมดโดยเฉพาะหรือไม่?
มาร์ติ

1
ใช่ตัวอย่างเช่นถ้าผมต้องการที่จะเพิ่มการผูก GDAL python_install/site-packages/osgeo/gdal.pyจากโฟลเดอร์อื่นที่ฉันจะต้องใช้ ที่ไม่grass.pyสคริปต์อยู่ในgrassไดเรกทอรี?
Jay Laura

มีไฟล์. py หลายไฟล์ แต่น่าเสียดายที่ไม่มีชื่อที่ชัดเจนเช่น grass.py ฉันพยายามอ้างอิงพวกเขาทั้งหมด น่าเสียดายที่มันยังไม่ทำงาน :-(
Martin

1
อืมมมมมมมย .... อีกข้อหนึ่งสำหรับคุณลองทำ: ดูเหมือนว่าคุณจะสามารถติดตั้ง GRASS ได้โดยไม่ต้องใช้งูหลามแบบมัดรวมตามโพสต์ที่ลิงก์ อาจลองติดตั้งใหม่และบังคับให้ GRASS ใช้การติดตั้ง Arc python ใช่ไหม lists.osgeo.org/pipermail/grass-user/2012-June/065178.html
Jay Laura

1
ฉันคุณถามเกี่ยวกับ pygrass แต่โพสต์นี้อาจจะสนใจ มันพูดเกี่ยวกับการผูก Arcpy สำหรับ gdal arcgis.com/home/item.html?id=1eec30bf5fa042a5a2227b094db89441
dango
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.