Страница 1 из 1

arcgis Engine - поиск записи в слое

Добавлено: 11 ноя 2010, 11:04
Tereha
На карте есть слой -FeatureLayer, у которого есть поле наименования объекта и в поле , в котором содержатся координаты объекта. Задача состоит в поиске записи с заданным значением атрибута "Наименование".
Получаю нужный слой -

Код: Выделить всё

layer =(ESRI.ArcGIS.Carto.IFeatureLayer)axMapControl1.get_Layer(6)
FeatureLayer реализует интерфейс IFind, но я не могу найти соответствующего метода поиска Find?
Буду признателен за любую подсказку или ссылку!

Re: arcgis Engine - поиск записи в слое

Добавлено: 11 ноя 2010, 11:55
Дмитрий Барышников
Вам нужен метод
IFeatureClass.Search Method
http://edndoc.esri.com/arcobjects/9.2/c ... Search.htm
В IQueryFilter укажите условия отбора
А получить IFeatureClass из IFeatureLayer можно так:
http://edndoc.esri.com/arcobjects/9.1/c ... eClass.htm

Re: arcgis Engine - поиск записи в слое

Добавлено: 11 ноя 2010, 12:04
Tereha
Спасибо, сейчас взгляну.
Увидел пример использования

Код: Выделить всё

void SelectMapFeaturesByAttributeQuery(ESRI.ArcGIS.Carto.IActiveView activeView, ESRI.ArcGIS.Carto.IFeatureLayer featureLayer, System.String whereClause)
Но у меня не подключается класс

Код: Выделить всё

ESRI.ArcGIS.Geodatabase
В чем может быть дело?

Re: arcgis Engine - поиск записи в слое

Добавлено: 11 ноя 2010, 12:21
Tereha
Вроде как нужно добавить reference на ESRI.ArcGIS.Geodatabase, но как это делается?

Re: arcgis Engine - поиск записи в слое

Добавлено: 11 ноя 2010, 12:26
Tereha
Как оказалось это просто - Project /Add Arcgis reference - и Geodatabase появилось. Но как используется IFind пока так и неясно

Re: arcgis Engine - поиск записи в слое

Добавлено: 11 ноя 2010, 12:47
Tereha
Получается как то так -

Код: Выделить всё

            ESRI.ArcGIS.Carto.IFind pfind;
            ESRI.ArcGIS.Carto.IFeatureLayer layer;
            layer = (ESRI.ArcGIS.Carto.IFeatureLayer)axMapControl1.get_Layer(6) as ESRI.ArcGIS.Carto.IFeatureLayer;
            pfind = layer;
            pfind.Find(...);