Выделение объектов

0 голосов
спросил 20 Апр, 10 от Alla (1,440 баллов) в категории Программные продукты Esri
       Здравствуйте! Помогите, пожалуйста!Нужно запрограммировать свою кнопку, при нажатии на которую выдлен был бы линейный объект на карте из определенного слоя.Слоев 2:реки и дороги. При нажати на кнопку появляется форма на ней 2 комбобокса и в зависимости от того что вних выбрано, неоходимо выделить объект, при нажатии на кнопку.

54 Ответы

0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
показывает, что esriSelectionResultNew=0 так не должно быть?
0 голосов
ответил 15 Май, 10 от TDenis (42,620 баллов)
Должно.
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
а что тогда,все равно в этой строке выбивает
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
пишет automation error
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
filter.WhereClause = "Name = 'Hampton'" , это выбирают из таблицы атрибутов столбец с именем Name и значение которого равно  Hampton?
0 голосов
ответил 15 Май, 10 от TDenis (42,620 баллов)
а что тогда,все равно в этой строке выбивает

убедитесь, что ваш слой успешно находится и lyr не равен Nothing.


filter.WhereClause = "Name = 'Hampton'" , это выбирают из таблицы атрибутов столбец с именем Name и значение которого равно Hampton?

Выбирают записи слоя, значение столбца Name которых равно 'Hampton'.

Скопируйте сюда тот код, который вы пытаетесь запустить, вместе со всеми изменениями, которые вы сделали.
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
я нашла в чем причина в этой строке, нужно буз кавычек номер моего объекта написать:
filter.WhereClause = "Name = 4", но мне надо что бы он показывал, именно тот что что в combobox 2 выбран, как сюда это занести?
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
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 = 11"
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
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
filter.WhereClause = "Num_route = 11", что нужно поменять
0 голосов
ответил 15 Май, 10 от Alla (1,440 баллов)
Сейчас уже работает с filter.WhereClause = "Num_route = 11", как поменять?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...