Domanda

C'è un modo in ArcObjects per ottenere un ID univoco per un livello? Se fate una ricerca per nome di un livello ci potrebbero essere possibili duplicati.

Se non c'è una proprietà c'è un modo per generare un id? Ho provato ad utilizzare il gethash (), ma che non rimanere coerenti.

È stato utile?

Soluzione

Non è abbastanza, ma in passato ho aggiunto un GUID nella descrizione layer. Qualcosa di simile a questo:

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

Ho una DLL galleggianti intorno che sbattere questi frag XML in ogni strato di un MXD (con abbastanza CR / LF di fronte per far scorrere il frammento XML fuori dalla descrizione del livello nella finestra di dialogo Prop layer ArcMap).

C'è un file di aiuto nel file 7z (documentazione è scarsa perché sto facendo altre cose): http://code.google.com/p/umbriel/downloads/list

Altri suggerimenti

C'è un presente ArcObjects interfaccia per l'impostazione o di ottenere un ID per un livello. Si dovrebbe guardare ILayerDescriptor: ID, http://resources.esri.com/help/9.3/ ArcGISDesktop / ArcObjects / esriCarto / ILayerDescriptor_ID.htm

Ecco un frammento di VBA che mostra come esso può essere utilizzato:

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

Mi piace l'idea di utilizzare un GUID. Questo può poi essere memorizzato nella proprietà ModelName che è uno strumento per gli sviluppatori di oggetti personalizzati da utilizzare per garantire i nomi degli oggetti indipendenti del vero nome o alias nome.

Non ci sono ulteriori dettagli ed esempi di codice a http://geographika.co.uk/?p = 58

Facile. Un effetto collaterale di utilizzare COM e perché come i VTables sono disposti, è che si può utilizzare l'indirizzo di memoria dello strato stesso come il tuo identificativo univoco. All'interno l'attuazione di molte ESRI GeoDatabase e Carto codice stesso, questo trucco è in uso in tutto il luogo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top