Tôi đang cố gắng sử dụng ArcObject trong Python. Tôi có vấn đề với việc gán một giao diện (tức là IZ.InterpolateZsB between) cho đối tượng của tôi với dữ liệu hình học, mã là:
from Comtypes.client import CreateObject, GetModule
import arcgisscripting
gp = arcgisscripting.create(9.3)
gp.setproduct("ArcInfo")
esriSystem = GetModule("C:/Program Files (x86)/ArcGIS/com/esriSystem.olb")
esriGeometry = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeometry.olb")
esriDataSourcesGDB = GetModule("C:/Program Files (x86)/ArcGIS/com/esriDataSourcesGDB.olb")
esriGeoDatabase = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeoDatabase.olb")
sPath ="c:/temp/test.gdb"
pWSF = CreateObject(esriDataSourcesGDB.FileGDBWorkspaceFactory,\
interface=esriGeoDatabase.IWorkspaceFactory)
pWS = pWSF.OpenFromFile(sPath, 0)
pFWS = pWS.QueryInterface(esriGeoDatabase.IFeatureWorkspace)
pFClass = pFWS.OpenFeatureClass("test_z")
pFCursor = pFClass.Search(None, True)
pFeat = pFCursor.NextFeature()
pIZ = pFeat.QueryInferface(esriGeometry.IZ2)
Tại sao điều này không hoạt động? Đầu ra là:
Traceback (most recent call last):
File "<pyshell#175>", line 1, in <module>
pIZ = pFeat.QueryInterface(esriGeometry.IZ2)
File "C:\Python25\lib\site-packages\comtypes\__init__.py", line 1078, in QueryInterface
self.__com_QueryInterface(byref(iid), byref(p))
COMError: (-2147467262, 'Taki interfejs nie jest obs\xb3ugiwany.', (None, None, None, 0,
None))
Vì vậy, tôi đã cố gắng:
pShape = pFeat.ShapeCopy
pIZ = pShape.QueryInterface(esriGeometry.IZ2)
pShape.InterpolateZsBetween(0, 0, 0, 4)
Và điều này đang làm việc. Nhưng làm thế nào để dán lại và lưu nó trong tính năng của tôi? Tôi đang học Python và ArcObjects, vì vậy hãy hiểu. Bất kỳ trợ giúp sẽ được đánh giá cao.