Секреты MapXtreme. Поиск по участку карты.
2008-09-08 от Kosten
Недавно мы рассмотрели поиск по таблице, когда выборка происходила по значению какого-либо поля объекта. Очень часто возникает задача выбора объектов, которые находятся в какой-либо заданной области. Как произвести поиск таких объектов будет рассказано далее.
Исходными данными для такого поиска являются объект FeatureGeometry и таблица, по данным которой отображались объекты на карте.
Во первых зададим параметры поиска:
SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchWithinGeometry(geom, ContainsType.Geometry); si.QueryDefinition.Columns = new string[]{"*"};
Первый параметр функции SearchWithinGeometry указывает участок внутри которого необходимо осуществить поиск на карте. Обратите внимание на второй параметр в функции SearchWithinGeometry, который может принимать два значения:
-
ContainsType.Geometry -
ContainsType.Centroid
В первом случае будут найдены объекты, которые полностью находятся внутри участка, определенного в первом параметре данной функции. Во втором случае будут найдены объекты у которых “центроид” находится внутри заданного участка. Вторая строка позволяет определить какие поля с данными необходимо включить в результат поиска. В данном случае будут возвращены все поля таблицы.
Table tbl = ... //получаем таблицу по которой строился слой IResultSetFeatureCollection fc = MapInfo.Engine.Session.Current.Catalog.Search(tbl, si);
Поиск выполнен. Его результат находиться в переменной fc, которая представляет собой коллекцию объектов типа Feature, доступ к элементам которой можно получить следующим образом:
foreach (Feature feat in fc) { //выполняем необходимые действия над объектом feat }
Жду Ваших отзывов и комментариев.
Постовой: новости от Google
Опубликовано Понедельник, 08-09-2008 в 10:15 дп в рубрики C#, MapXtreme. Вы можете оставить отслеживать комментарии к записи при помощи RSS 2.0 ленты. Вы можете оставить комментарий, или трекбек с Вашего сайта.