2016-01-19 4 views
0

Использование DotSpatial, если я открою Shapefile как 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 атрибутов. Я вижу, что один из этих атрибутов - это то, что я бы назвал именем формы (в этом примере я смотрю на провинции Эквадора), но я не знаю, как надежно спарить один из этих атрибутов имя формы, в данном случае название провинции.


Редактировать

Вот пример из доступных атрибутов можно увидеть в первой форме:

Image of available shape attributes

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


Далее Edit

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

Image of data table column values

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

+0

Вы ищете уникальный идентификатор для связи с каждой фигурой? Возможно, что некоторые столбцы в таблице атрибутов не уникальны. Обычно пользователи выбирают столбец по картографическим причинам, например. столбец может содержать метки, не обязательно уникальные, которые пользователь хочет отобразить на карте. FID в DotSpatial уникален. – subsci

+0

Спасибо. Я ищу имя формы. В моем примере я загружаю данные формы (полигоны) для провинций Эквадора. В KML для каждой функции будет элемент «Имя», где я ожидаю найти название каждой провинции. Я думаю, так как я переосмыслил это и посмотрел на другие форматы, такие как GeoJSON, я пришел к выводу, что с Shapefile данные есть, но они найдены в коллекции атрибутов в данных DBF. Из того, что я узнал, похоже, вам нужно будет знать, что название провинции хранится в атрибуте 4. –

+0

Файл DBF файла формы необязательно имеет атрибут имени. KML включает в себя картографические элементы, но файлы формы не – subsci

ответ

1

Я нашел страницу под названием Importing Geographic Information Systems (GIS) data in Google Earth.

Процесс импорта из файла формы показывает скриншот, в котором пользователю предлагается выбрать атрибут, содержащий имена для фигур, из таблицы доступных атрибутов.

Image showing the selecting of the name field

Это выглядит, как будто задача присоединять имена функций обрабатывается вручную пользователем.

Смежные вопросы