¿Cómo se obtiene un identificador único para una capa o se genera una en Arcmap?

StackOverflow https://stackoverflow.com/questions/1268747

  •  13-09-2019
  •  | 
  •  

Pregunta

¿Hay una manera de ArcObjects para obtener un identificador único para una capa? Si usted hace una búsqueda por el nombre de la capa podría haber posibles duplicados.

Si no hay una propiedad ¿Hay una manera de generar una identificación? He intentado utilizar el GetHash (), pero que no me quedé consistente.

¿Fue útil?

Solución

No es bonita, pero en el pasado he adjuntó una GUID en la descripción de la capa. Algo como esto:

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

Tengo una DLL flotando alrededor que cerrar de golpe estos frags XML en cada capa de un MXD (suficiente CR / LF delante para desplazar el fragmento XML fuera de la descripción de la capa en ArcMap Capa de diálogo Prop).

Hay un archivo de ayuda en el archivo 7z (documentación es escasa porque estoy haciendo otras cosas): http://code.google.com/p/umbriel/downloads/list

Otros consejos

Hay un presente ArcObjects interfaz para establecer o conseguir un ID para una capa. Usted debe mirar ILayerDescriptor: Identificación, http://resources.esri.com/help/9.3/ ArcGISDesktop / ArcObjects / esriCarto / ILayerDescriptor_ID.htm

A continuación se muestra un fragmento de VBA que muestra cómo se puede utilizar:

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

Me gusta la idea de usar un GUID. Esto puede ser almacenado en la propiedad ModelName que es una herramienta para los desarrolladores de objetos personalizados a utilizar para garantizar los nombres de los objetos independientes del nombre o alias verdadero nombre.

Hay más detalles y código de ejemplo en http://geographika.co.uk/?p = 58

Fácil. Un efecto secundario del uso de COM y porque, ¿cómo se distribuyen los vtables, es que se puede utilizar la dirección de memoria de la propia capa como su identificador único. Dentro de la aplicación de muchas propio código de ESRI base de datos geográficos y Carto, este truco está siendo utilizado por todo el lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top