你如何获得一个唯一标识号层或产生一个在ArcMap?
-
13-09-2019 - |
题
是否有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地理数据库和卡托代码本身实现内部,这一招被用于所有的地方。
不隶属于 StackOverflow