1

レイヤーの一意のIDを取得する方法はarcobjectsにありますか?レイヤー名で検索すると、重複する可能性があります。

プロパティがない場合、IDを生成する方法はありますか?GetHash()を使用してみましたが、一貫性が保たれませんでした。

4

4 に答える 4

2

レイヤーのIDを設定または取得するためのArcObjectsインターフェイスがあります。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
于 2009-08-14T11:50:28.963 に答える
1

きれいではありませんが、過去にレイヤーの説明にGUIDを追加しました。このようなもの:

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

これらのxmlフラグメントをMXDの各レイヤーにスラミングするDLLが浮かんでいます(ArcMapレイヤープロップダイアログのレイヤーの説明からxmlフラグメントをスクロールするのに十分なcr / lfが前にあります)。

7zファイルにヘルプファイルがあります(他のことをしているのでドキュメントはまばらです): http ://code.google.com/p/umbriel/downloads/list

于 2009-08-13T20:26:18.790 に答える
1

GUIDを使用するというアイデアが好きです。これは、カスタムオブジェクトの開発者が実際の名前やエイリアス名に関係なくオブジェクトの名前を保証するために使用するツールであるModelNameプロパティに保存できます。

詳細とサンプルコードはhttp://geographika.co.uk/?p=58にあります。

于 2009-09-26T17:00:13.717 に答える
0

簡単。COMを使用することの副作用と、vtablesのレイアウト方法により、レイヤー自体のメモリアドレスを一意の識別子として使用できるようになります。多くのESRIGeoDatabaseとCartoコード自体の実装の中で、このトリックは至る所で使用されています。

于 2009-08-18T20:18:43.007 に答える