Страница 2 из 2
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 25 мар 2010, 12:55
JEY
Все верно. В FDO не все библиотеки можно подключать к проекту в Visual Studio, поскольку они не являются библиотеками с управляемым кодом (managed code). Подключаются только те, что я указал в списке в предыдущем сообщении...
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 14 апр 2010, 16:11
MaZaika
Всё воюю с дипломом... Подскажите, пожалуйста, как получить доступ к атрибутивным данным формата SHP? Совсем ничего не получается... А скоро сдавать...

До геометрии вроде получилось добраться, а дальше никак. А впереди ещё пространственные данные.
Может кто-нибудь даст экскурс в FDO? Никак он не поддаётся пониманию, а информации совсем почти нет по нему нигде.
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 15 апр 2010, 11:30
JEY
А что говорится в документации о классах PropertyDefinition, PropertyDefinitionCollection и унаследованных от них DataPropertyDefinition и DataPropertyDefinitionCollection?
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 15 апр 2010, 20:55
skiller
Здравствуйте.
Та же проблема не могу никак получить атрибутивные данные в коллекцию.
добрался только до определенного значения:
while(reader.ReadNext())
{
reader.GetString("NAME");
}
но я думаю это как то можно сделать красивее, вот только как...
помогите плз!!
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 16 апр 2010, 08:41
JEY
Приветствую!
Для начала было бы неплохо, если бы Вы хотя бы частично включали в сообщения результаты Вашей работы, тогда я смог бы оценить ситуацию. Что именно не получается?
Давайте обратим внимание на следующий пример:
Код: Выделить всё
IConnection connection = null; //Установите здесь созданное Вами соединение.
ISelect select = connection.CreateCommand(CommandType.CommandType_Select);
using (IFeatureReader f_reader = select.Execute())
{
ClassDefinition class_def = f_reader.GetClassDefinition();
PropertyDefinitionCollection prop_def_collection = class_def.Properties;
while (f_reader.ReadNext())
{
... //Добавьте здесь блок кода для считывания свойств объектов класса.
}
}
Теперь сравните его с тем, что у Вас уже есть... Что-то аналогичное? Можно ли отталкиваться от данного примера? Если да, то постараемся развить этот кусочек кода до той степени, чтобы он отвечал Вашим задачам.
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 17 апр 2010, 09:02
skiller
Большое спасибо Jey,
У меня практически идентичный код, но дело в том, что значение каждого свойства необходимо считывать определенной функцией, например значение свойства типа string функцией f_reader.GetString(), int функцией GetInt32() и т.д.
например:
у нас есть shp файл со следующими свойствами:
FeatId типа int32 ;
NAME типа стринг;
теперь мы можем сделать так:
Код: Выделить всё
while(f_reader.ReadNext())
{
f_reader.GetInt32("FeatId");
f_reader.GetString("NAME");
}
тут приходится руками вызывать нужную функцию..
может как то можно автоматизировать этот процесс?
заранее спасибо!
Re: Работа с FDO в Visual Studio на языке C#
Добавлено: 19 апр 2010, 08:44
JEY
Тогда давайте добавим следующий кусочек кода:
Код: Выделить всё
PropertyDefinition prop_def = prop_def_collection[key]; //Используйте идентификатор свойства <key>.
DataPropertyDefinition data_prop_def = prop_def as DataPropertyDefinition;
if (f_reader != null)
{
switch (data_prop_def.DataType)
{
case DataType.DataType_Int32:
f_reader.GetInt_32(name); //Используйте наименование свойства <name>.
break;
case DataType.DataType_String:
f_reader.GetString(name); //Используйте наименование свойства <name>.
break;
...
}
}
У меня этот фрагмент отрабатывает достаточно хорошо...