كيف تحصل على معرف فريد لطبقة أو إنشاء واحد في Arcmap؟

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

  •  13-09-2019
  •  | 
  •  

سؤال

هل هناك طريقة في Arcobjects للحصول على معرف فريد لطبقة؟ إذا قمت بالبحث عن طريق اسم الطبقة، فقد يكون هناك تكرارات ممكنة.

إذا لم يكن هناك خاصية هل هناك طريقة لتوليد معرف؟ حاولت استخدام Gethash () لكن ذلك لم يظل ثابتا.

هل كانت مفيدة؟

المحلول

إنه ليس جميلا، ولكن في الماضي لقد إلحاق GUID في وصف الطبقة. شيء من هذا القبيل:

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

لدي DLL تطفو من شأنه أن ينتقد هذه xml Frags في كل طبقة من MXD (مع ما يكفي من CR / LF أمام التمرير جزء XML من وصف الطبقة في مربع الحوار Arcmap Layer Prop).

هناك ملف تعليمات في ملف 7Z (الوثائق متناثرة لأنني أفعل أشياء أخرى):http://code.google.com/p/umbriel/downloads/list.

نصائح أخرى

هناك واجهة ArcoBjects موجودة لإحضار أو الحصول على معرف لطبقة. يجب أن ننظر إلى Ilayerdescriptor: ID،http://resources.esri.com/help/9.3/arcgisdesktop/arcompjects/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://gographica.co.uk/؟p=58.

سهل. تأثير جانبي لاستخدام COM ولأن كيفية وضع VTables، هو أنه يمكنك استخدام عنوان ذاكرة الطبقة نفسها معرفك الفريد. داخل تنفيذ العديد من ESRI Geodatabase ورمز كارتو نفسه، يتم استخدام هذه الخدعة في جميع أنحاء المكان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top