是否有ArcObjects的一种方式来获得一个层一个唯一的ID?如果你通过层名称的搜索可能有可能重复。

如果不存在属性有一种方法来产生ID? 我尝试使用GetHash(),但没有保持一致。

有帮助吗?

解决方案

这是不漂亮,但在过去,我附加了在该层中描述的GUID。是这样的:

<LAYER guid='a9843c88-3caa-4953-ad96-ca9990b410e9' revision='1' />

我有一个DLL左右浮动,将踩住这些XML断支成MXD的各层(在前面足够CR / LF滚动XML片段出在ArcMap层支柱对话层描述的)。

有一个在的7z文件(文档是稀疏的,因为我在做其他事情)帮助文件: http://code.google.com/p/umbriel/downloads/list

其他提示

有一个的ArcObjects接口存在用于设置或获取一个Id为的层。 你应该看看ILayerDescriptor:ID, http://resources.esri.com/help/9.3/ ArcGISDesktop / ArcObjects的/ esriCarto / ILayerDescriptor_ID.htm

下面是一个VBA摘录其示出了如何可以使用:

Public Sub layerInfo()

Dim app As IApplication '
Set app = Application

Dim mxDoc As IMxDocument
Set mxDoc = app.Document

Dim myMap As IMap
Set myMap = mxDoc.ActiveView

Dim mapServer As IMxdServer
Set mapServer = New MxdServer

'''Point to your .mxd...
mapServer.Start ("D:\Test.mxd")

Dim myArray As IArray
Set myArray = mapServer.LayerDescriptors(myMap.Name)

MsgBox myArray.Count

Dim x As ILayerDescriptor
Dim intX As Integer
intX = 0

For intX = 0 To myArray.Count - 1
Set x = myArray.Element(intX)
MsgBox x.ID
MsgBox x.Name
Next

End Sub

我喜欢使用GUID的想法。这可以被存储在MODELNAME属性的这是自定义对象的开发人员使用,以保证独立的真名或别名的对象的名称的工具。

有更多的细节和示例代码在 http://geographika.co.uk/?p = 58

易。使用COM,也因为副作用的虚函数表的布局方式,就是你可以使用层本身的内存地址作为唯一标识符。许多ESRI地理数据库和卡托代码本身实现内部,这一招被用于所有的地方。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top