- •Томский государственный университет систем управления и радиоэлектроники (тусур)
- •Cadgis Integrator - технология обмена данными между гис и сапр
- •Реферат
- •Введение
- •Анализ предметной области
- •Описание предметной области
- •Обзор существующих подходов к трансляции данных
- •Постановка и анализ задачи
- •Постановка задачи
- •Анализ задачи
- •Разработка структурной схемы программы
- •Графический интерфейс пользователя
- •Реализация
- •Классификаторы цифровой информации
- •Классификатор цифровой информации «cad/gis Integrator» для гис
- •Классификатор цифровой информации «cadgis Integrator» для сапр
- •Реализация алгоритма чтения данных на примере формата esri shp с помощью AutoDesk Feature Data Objects
- •Тестирование
- •Нагрузочное тестирование
- •Функциональное тестирование
- •Конвертирование данных shp в формат mif/mid
- •Конвертирование данных shp в формат dxf
- •Тестирование на реальных проектах
- •Технико-экономическое обоснование
- •Карта описания программного продукта
- •Определение технико-экономических показателей проекта прямым методом
- •57 Чел.- месяцев
- •Определение технико-экономических показателей методом функциональных точек
- •Определение стоимости (договорной цены) на создание программной системы
- •Определение фонда оплаты труда на разработку и комплексные испытания программной системы
- •Определение фонда оплаты труда на проведение опытной эксплуатации программной системы
- •Структура договорной цены на программное обеспечение
- •Определение и анализ рыночной стоимости прикладного программного обеспечения
- •Безопасность жизнедеятельности
- •Анализ опасных и вредных производственных факторов, связанных с эксплуатацией пэвм на рабочем месте
- •Требования безопасности к рабочему месту пользователя электронно-вычислительной машины (эвм)
- •Допуск к работе и контроль здоровья
- •Требование к пэвм
- •Требования к помещениям для работы с пэвм
- •Требования к микроклимату
- •Требования к уровню шума и вибрации
- •Требования к освещению помещений и рабочих мест с пэвм
- •Расчет искусственного освещения
- •Расчет естественного освещения
- •Требования к уровням электромагнитных полей на рабочем месте, оборудованным пэвм.
- •Требования к визуальным параметрам вдт, контролируемым на рабочем месте.
- •Требования к организации и оборудованию рабочих мест с пэвм взрослых пользователей.
- •Мероприятия по снижению пожароопасности в рабочей зоне
- •Мероприятия по контролю и гигиенической оценке уровня электромагнитных полей на рабочих местах
- •Мероприятия по обеспечению электробезопасности
- •Инструкция по технике безопасности для пользователей и операторов эвм
- •Общие требования
- •Требования безопасности перед началом работы
- •Требования безопасности во время работы
- •Требования безопасности в аварийных ситуациях
- •Требования безопасности по окончании работы
- •Меры оказания первой медицинской помощи при поражении электрическим током
- •Действия персонала в случае возникновения пожара
- •Заключение
- •Список использованных источников
- •Приложение а
- •Обзор файловых форматов
- •Приложение б
- •Обзор технологии доступа к произвольным форматам fdo
- •Общее описание
- •Основные операции
- •Приложение в
- •Список научных трудов по тематике дипломного проекта
Реализация алгоритма чтения данных на примере формата esri shp с помощью AutoDesk Feature Data Objects
Подробное описание технологии доступа к данным с помощью провайдеров FDO представлено в приложении Б.
Рассмотрим пошаговое выполнение алгоритма на примере доступа к формату SHP, являющемся основным в распространённой ГИС ArcGIS:
создать менеджер соединений, выбрать провайдер, создать соединение:
_connection = FeatureAccessManager.GetConnectionManager().CreateConnection("OSGeo.SHP");
установить свойства соединения:
// filename – имя файла с данными формата SHP _connection.ConnectionInfo.ConnectionProperties.SetProperty("DefaultFileLocation", fileName);
_connection.Open();
извлечь схему описания данных:
IDescribeSchema ids = _connection.CreateCommand(CommandType.CommandType_DescribeSchema) as IDescribeSchema;
_featureSchemaCollection = ids.Execute();
_defPropertyDefinitionCollection = _featureSchemaCollection[0].Classes[0].Properties;
считать данные геометрических объектов:
List<PropertyValueCollection> result = new List<PropertyValueCollection>();
ISelect select = _connection.CreateCommand(CommandType.CommandType_Select) as ISelect;
var source = _connection.ConnectionInfo.ConnectionProperties.GetProperty("DefaultFileLocation");
select.SetFeatureClassName(Path.GetFileNameWithoutExtension(source));
var reader = select.Execute();
while (reader.ReadNext())
{
PropertyValueCollection collection = new PropertyValueCollection();
for (int i=0; i<_defPropertyDefinitionCollection.Count; ++i)
{
var ppc = _defPropertyDefinitionCollection[i];
PropertyValue value = null;
if (ppc.PropertyType == PropertyType.PropertyType_DataProperty)
{
var dataProp = _defPropertyDefinitionCollection[i] as DataPropertyDefinition;
switch(dataProp.DataType)
{
case DataType.DataType_Int32:
value = new PropertyValue(
ppc.Name, new Int32Value(reader.GetInt32(ppc.Name)));
break;
case DataType.DataType_String:
string nameValue = null;;
if (!reader.IsNull(ppc.Name))
nameValue = reader.GetString(ppc.Name);
value = new PropertyValue(ppc.Name, new StringValue(nameValue));
break;
}
}
else if (ppc.PropertyType == PropertyType.PropertyType_GeometricProperty)
{
value = new PropertyValue(ppc.Name, new GeometryValue(reader.GetGeometry(ppc.Name)));
}
collection.Add(value);
}
result.Add(collection);
}
return result;
считать пространственные данные:
SpatialContextInfo info = new SpatialContextInfo();
IGetSpatialContexts context = _connection.CreateCommand(CommandType.CommandType_GetSpatialContexts) as IGetSpatialContexts;
ISpatialContextReader scReader = context.Execute();
if (scReader.ReadNext())
{
info.CoordinateSystem = scReader.GetCoordinateSystem();
info.CoordinateSystemWkt = scReader.GetCoordinateSystemWkt();
info.Description = scReader.GetDescription();
info.Extent = scReader.GetExtent();
info.ExtentType = scReader.GetExtentType();
info.Name = scReader.GetName();
info.XYTolerance = scReader.GetXYTolerance();
info.ZTolerance = scReader.GetZTolerance();
}
return info;
закрыть соединение:
_connection.Close();
Таким же образом происходит единообразный доступ к другим форматам, поддерживаемым FDO, пространственные преобразования, обращения к системам координат. Единый способ доступа к данным позволяет реализовывать и собственные провайдеры. Примечательно, что внутренний формат хранения FDO – язык GML, выбранный за основу проектируемой системы, что снижает риски потери данных при конвертации.
