Как получить имя фигуры

Используя DotSpatial, если я открою шейп-файл как IFeatureSet, я увижу коллекцию фигур внутри FeatureSet, и эти фигуры имеют коллекции атрибутов. Но я не вижу очевидного способа найти имя, связанное с формой?

Например, если у меня есть следующий код:

var featureSet = Shapefile.Open("../../Ecuador/map.shp");

var rowCount = featureSet.NumRows();

for (var i = 0; i < rowCount; i++)
{
    var shape = featureSet.GetShape(i, true);
    var geometry = shape.ToGeometry();
}

Если я отлаживаю этот код, ставя точку останова на объект Shape, я вижу набор атрибутов. В примере, который я использую, каждая фигура имеет 12 атрибутов. Я вижу, что один из этих атрибутов — это то, что я считаю названием формы (в этом примере я смотрю на провинции Эквадора), но я понятия не имею, как надежно соединить, какой из этих атрибутов будет имя фигуры, в данном случае название провинции.


Изменить

Вот пример доступных атрибутов, которые я вижу для первой формы:

Изображение доступных атрибутов формы

На первый взгляд, я бы сказал, что атрибут с индексом 4 был тем, что мне нужно, но как мне узнать это программно?


Дальнейшее редактирование

Похоже, что при дальнейшем изучении данных метки для атрибутов могут быть именами столбцов DataTable в IFeatureSet:

Изображение значений столбца таблицы данных

Хотя... что бы я выбрал программно, если бы захотел импортировать эти фигуры? Единственный способ позволить человеку, выполняющему импорт, вручную выбрать правильный?


person Adrian Thompson Phillips    schedule 19.01.2016    source источник
comment
Вы ищете уникальный идентификатор для каждой фигуры? Возможно, некоторые столбцы в таблице атрибутов не уникальны. Обычно пользователи выбирают столбец по картографическим причинам, например. столбец может содержать метки, не обязательно уникальные, которые пользователь хочет отобразить на карте. FID в DotSpatial уникален.   -  person subsci    schedule 20.01.2016
comment
Спасибо. Я ищу название формы. В моем примере я загружаю данные формы (многоугольники) для провинций Эквадора. В KML будет элемент «Имя» для каждой функции, где я ожидаю найти название каждой провинции. Я думаю, поскольку я переосмыслил это и посмотрел на другие форматы, такие как GeoJSON, я пришел к выводу, что с шейп-файлом данные есть, но они находятся в наборе атрибутов в данных DBF. Из того, что я узнал, похоже, что вам нужно будет знать, что название провинции хранится в атрибуте 4.   -  person Adrian Thompson Phillips    schedule 20.01.2016
comment
DBF шейп-файла не обязательно имеет атрибут имени. KML включает картографические элементы, а шейп-файлы — нет.   -  person subsci    schedule 27.01.2016
comment
Ура, в итоге я выбрал решение, похожее на решение Google Earth. Я показываю пользователю таблицу со столбцами наборов атрибутов и позволяю пользователю выбрать, какой из них представляет данные именования.   -  person Adrian Thompson Phillips    schedule 27.01.2016


Ответы (1)