как узнать какому слою принадлежит объект?

0 голосов
спросил 20 Июнь, 06 от sschainik (4,900 баллов) в категории Программные продукты Esri

Подскажите как узнать какому слою принадлежит объект? Идея втом чтобы считать имя слоя на карте, изменёное пользователем. Например в базе название класса "way", а на карте пользователь для удобства переименовал в "дороги", вот и нужно получить имя слоя - "дороги".

Попробовал сравнивать источники данных слоя и объекта через фичкласс -  работает, но чувствуется небольшая задержка по времени. Может кто знает как сделать по другому?

3 Ответы

0 голосов
ответил 20 Июнь, 06 от sschainik (4,900 баллов)

Похоже сам нашел ответ. Оказывается можно с помощью

If pFeatureLayer.FeatureClass Is pFeature.Class Then
 
Всем прочитавшим спасибо
0 голосов
ответил 28 Июль, 06 от filippov70 (5,320 баллов)
кому нужна реальная функция смотри сюда

Вот пример на VBA

Public Function WhatTheLayerName(pFeature As IFeature) As String
'îïðåäåëÿåò èìÿ ñëîÿ ïî âûäåëåííîé ôè÷å

 

  Set pMxDoc = ThisDocument
 
  Dim pFeatureClass As IFeatureClass
  Set pFeatureClass = pFeature.Class
  Dim pFeatureLayer As IFeatureLayer
  Dim iLayerCount As Integer
  Dim pLayer As ILayer
  Dim FindLayer As ILayer
  Dim g_pMap As IMap
  Set g_pMap = pMxDoc.FocusMap
 
  For iLayerCount = 0 To g_pMap.LayerCount - 1
    Set pLayer = g_pMap.layer(iLayerCount)
    If TypeOf pLayer Is IFeatureLayer Then
      Set pFeatureLayer = pLayer 'QI
      If pFeatureLayer.FeatureClass Is pFeatureClass Then
        Set FindLayer = pFeatureLayer
        WhatTheLayerName = FindLayer.Name
        Exit Function
      End If
    End If
  Next iLayerCount
 


End Function

0 голосов
ответил 28 Июль, 06 от sschainik (4,900 баллов)
в приведенном коде надобно еще и проверку произвести на тип слоя (ICompositeLayer), ведь если слой композитный будет ошибка
а если слой композитный надо проверить принадлежность объекта тамошним слоям
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...