Поиск объектов

0 голосов
спросил 09 Апр, 11 от gore (620 баллов) в категории Программные продукты Esri
Всем привет. Нужно запрограммировать свою кнопку  на VB6, при нажатии на которую выделялся  объект на карте из определенного слоя.
Пробовал как в этой теме https://forum.esri-cis.ru/index.php?qa=35643 но сист ругается на  FindLayer.
Код:
Private Sub CommandButton1_Click()
Dim name_route As String
name_route = ComboBox2.Text
Dim mxDoc As IMxDocument
Set mxDoc = Application.Document
'поиск слоя, из которого будет производиться выборка
Dim lyr As IFeatureLayer

Select Case ComboBox1.ListIndex
Case 0: 'Трамвай
Set lyr = FindLayer(mxDoc.FocusMap, "Трамвай")
'получение интерфейса выборки
Dim sel As IFeatureSelection
Set sel = lyr
'создание фильтра запроса
Dim filter As IQueryFilter
Set filter = New QueryFilter
'установка WHERE-запроса и пространственной привязки
filter.WhereClause = "Num_route =" + ComboBox2.Text
Dim shapeField As String
shapeField = lyr.FeatureClass.ShapeFieldName
Set filter.OutputSpatialReference(shapeField) = mxDoc.FocusMap.SpatialReference
'очистка существующей выборки на экране
mxDoc.ActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing
'выбор объектов и установка новой выборки
sel.SelectFeatures filter, esriSelectionResultNew, False
mxDoc.ActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing
Dim selEvents As ISelectionEvents
Set selEvents = mxDoc.FocusMap
selEvents.SelectionChanged


Case 1: 'Троллейбус
Set lyr = FindLayer(mxDoc.FocusMap, "Троллейбус")

Case 2: 'Автобус
Set lyr = FindLayer(mxDoc.FocusMap, "Автобус")

Case 3: 'Метро
Set lyr = FindLayer(mxDoc.FocusMap, "Метро")

Case 4: 'Станции метро
Set lyr = FindLayer(mxDoc.FocusMap, "Станции метро")
End Select




End Sub

17 Ответы

0 голосов
ответил 21 Апр, 11 от gore (620 баллов)
у меня все работает только сист ругается на строчку

pFeatureSelection.SelectFeatures pQueryFilter, esriSelectionResultNew, False,

 а когда её убираешь все работает, только самой картинки нет. В самом АркМапе искал нужный объект с помощью бинокля,  тоже показывал то место где нашел с помощью скрипта, но только пустой лист((

0 голосов
ответил 21 Апр, 11 от Commrad1 (3,660 баллов)
Эта строка обязательно нужна. У меня все работало. Проверяйте пошагово через отладку все ли переменные возвращаються, нет ли нулевых значений.
    
0 голосов
ответил 21 Апр, 11 от gore (620 баллов)
аа все понял в чем дело спасибо

0 голосов
ответил 21 Апр, 11 от gore (620 баллов)
а можно сделать так, чтобы при закрытие формы все выборки снимались?
0 голосов
ответил 22 Апр, 11 от Commrad1 (3,660 баллов)
Dim pDoc As IMxDocument
Set pDoc = ThisDocument
pDoc.ActiveView.FocusMap.ClearSelection
pDoc.ActiveView.Refresh
0 голосов
ответил 29 Май, 11 от gore (620 баллов)
есть вопрос. Как сделать поиск, чтобы он находил объект и выводил информацию о не ( как идентификатор)

0 голосов
ответил 30 Май, 11 от Commrad1 (3,660 баллов)
Извиняюсь, что-то не понял вопрос. Можно подробнее.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...