ArcGIS的 UID

关于什么是GUID,ProgID ,CLSID和UID,在ESRI的Document Library能够找到下面的描述.

COM interfaces and coclasses are identified by a globally unique identifier (GUID). The GUID for an interface is called an interface ID (IID). The GUID for a coclass is called class ID (CLSID). A ProgID is a text alias for a CLSID; the ProgID is a string composed of the project name and the class name of the coclass.

The UID coclass can be used to represent the GUID of an object.

There is built-in module called ArcID in the VBA project for the Normal template in both ArcMap and ArcCatalog. This module is a utility for finding the UID of the built-in commands and toolbars. You pass the name of a command or toolbar in as an argument to ArcID and the UID of that item is returned. The ArcID module is regenerated every time the Normal template is loaded; the registry is read to get the GUIDs of all the commands and toolbars that are currently used by the application.

简单的说,GUID(全局统一标识符)是用来标识识別COM接口和组件,保证它们的唯一性,避免出现版本不一致而导致的组件冲突.IID就是接口的GUID表示,CLSID则是组件类的GUID表示。ProgID是程序员给某个CLSID指定一个易记的名字.UID则是物象(Object)的GUID. 以下是一些ILayer接口的UID,通过使用它们,我们可以快速找到所需的图层。 这些ESRI接口存放在注冊表中的 HKEY_CLASSES_ROOT下面,如果想查询它们的UID,可以通过查找它们的名字,从而找到对应的UID.


{6CA416B1 - E160 - 11D2 - 9F4E - 00C04F6BC78E} IDataLayer
{40A9E885
- 5533 - 11d0 - 98BE - 00805F7CED21} IFeatureLayer
{E156D7E5
- 22AF - 11D3 - 9F99 - 00C04F6BC78E} IGeoFeatureLayer
{34B2EF81
- F4AC - 11D1 - A245 - 080009B6F22B} IGraphicsLayer
{5CEAE408
- 4C0A - 437F - 9DB3 - 054D83919850} IFDOGraphicsLayer
{0C22A4C7
- DAFD - 11D2 - 9F46 - 00C04F6BC78E} ICoverageAnnotationLayer
{EDAD6644
- 1810 - 11D1 - 86AE - 0000F8751720} IGroupLayer
{D02371C7
- 35F7 - 11D2 - B1F2 - 00C04F8EDEFF} IRasterLayer


 下面是一个查找groupLayer的例子

ArcGIS的 <wbr>UID ArcGIS的 <wbr>UID Public   Function FindGroupLayer() Function FindGroupLayer(ByVal sGroupName_IN As StringByRef pmap_IN As IMap) As ILayer
    
On Error GoTo errhandle

    
Dim Result As ILayer
    
Set Result = Nothing
    
Dim pL As IGroupLayer
    
Dim pel As IEnumLayer
    
Dim uid As New uid

    uid.Value 
= "{EDAD6644-1810-11D1-86AE-0000F8751720}"

    
Set pel = pmap_IN.Layers(uid, True)

    
Set pL = pel.Next
    
Dim sGroupName As String
    sGroupName 
= UCase(sGroupName_IN)
    
    
While Not pL Is Nothing
        
        
If UCase(pL.Name) = sGroupName Then
            
Set FindGroupLayer = pL
            
Exit Function
        
End If
        
        
Set pL = pel.Next
    Wend
    
Set FindGroupLayer = Result
    
    
Exit Function

errhandle:
    
'MsgBox "FindgroupLayer Error: Err.Description
    Set FindGroupLayer = Nothing
End Function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值