Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Классификатор цифровой информации «CADGIS Integrator» для САПР



В данной главе рассмотрена спецификация формата классификатора цифровой информации для САПР. Оформления объектов классификатора рассмотрено на примере библиотеки условных знаков для AutoCAD. Общие принципы структуры классификатора для САПР аналогичны классификатору для ГИС.

Элементы структуры классификатора имеют следующее назначение:

1) Тег <? xml …? > - описывает кодировку документа. Тег содержит атрибут version, который указывает номер версии документа, атрибут encoding указывает вид кодировки.

<? xml version=" 1.0" encoding=" utf-8"? >

2) Тег < Description> …< /Description> описывает версию классификатора. Тег содержит атрибут version, который указывает номер версии классификатора.

< Description version=" 1.0.0" >

< /Description>

3) Тег < Classifiers> …< /Classifiers> определяет раздел, содержащий описание всех классификаторов документа. Данный тег содержится внутри тега «Description».

< Classifiers>

Внутри метки может содержаться описание нескольких классификаторов.

< /Classifiers>

4) Тег < Classifier> …< /Classifier> описывает название конкретного классификатора и масштаб плана (чертежа, карты). Тег содержит атрибут name, который указывает название классификатора, атрибут scale указывает значение масштаба, атрибут template указывает адрес к шаблону чертежа в формате DXF соответствующего масштаба.Данный тег содержится внутри метки «Classifiers».

< Classifier name=" Классификатор ЦТИ масштаба 1: 500" scale=" 500" template=" Libs\AutoCAD\500\Template_map_500.dxf>

Внутри метки содержится описание слоев, кодов и названий объектов, таблиц данных, списки атрибутивных значений.

< /Classifier>

5) Тег < Class> …< /Class> описывает код и название объекта данных. Данный тег содержится внутри метки «Classifier». Тег содержит атрибут id, который указывает уникальное значение кода объекта классификатора, атрибут name указывает название объекта классификатора, атрибут layer указывает название слоя чертежа, атрибут color – цвет объекта или слоя чертежа, атрибут symbol – название стиля оформления объекта из библиотеки условных знаков, атрибут geometry – стиль представления объекта согласно его геометрии. Количество объектов классификатора не ограничено.

Стиль представления геометрии объекта описывается строго зарезервированными значениями:

- «TEXT» надписи к объектам плана (карты, чертежа), тип текст.

- «BLOCK» точечные объекты, тип объекта – блок AutoCAD.

- «POLYLINE» линейные объекты, для оформления которых используют простые стили линий (файлы стиля «*.lin»).

- «MLINE» линейные объекты, для оформления которых используют сложные стили линий (файлы стиля «*.mln», «*.shx», «*.shp»).

- «POLYGONE» площадные объекты (контур объекта).

- «HATCH» площадные объекты (штриховка).

< Class id=" 002-000-P" name=" ПУНКТ Г.Г.С." layer=" МАТЕМАТИЧЕСКАЯ ОСНОВА КАРТЫ" color=" 0" symbol=" 002-000-P" geometry=" BLOCK" />

Описанный формат классификатора цифровой информации может быть использован при подготовке данных в различных САПР (например: КОМПАС, AutoCAD).


4.2 Реализация алгоритма чтения данных на примере формата ESRI SHP с помощью AutoDesk Feature Data Objects

Подробное описание технологии доступа к данным с помощью провайдеров FDO представлено в приложении Б.

Рассмотрим пошаговое выполнение алгоритма на примере доступа к формату SHP, являющемся основным в распространённой ГИС ArcGIS:

Шаг 1 - создать менеджер соединений, выбрать провайдер, создать соединение:

_connection = FeatureAccessManager.GetConnectionManager().CreateConnection(" OSGeo.SHP" );

 

Шаг 2 - установить свойства соединения:

// filename – имя файла с данными формата SHP _connection.ConnectionInfo.ConnectionProperties.SetProperty(" DefaultFileLocation", fileName);

 

_connection.Open();

 

Шаг 3 - извлечь схему описания данных:

IDescribeSchema ids = _connection.CreateCommand(CommandType.CommandType_DescribeSchema) as IDescribeSchema;

_featureSchemaCollection = ids.Execute();

 

_defPropertyDefinitionCollection = _featureSchemaCollection[0].Classes[0].Properties;

 

Шаг 4 - считать данные геометрических объектов:

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;

 

Шаг 5 - считать пространственные данные:

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;

 

 

Шаг 6 - закрыть соединение:

_connection.Close();

 

 

Таким же образом происходит единообразный доступ к другим форматам, поддерживаемым FDO, пространственные преобразования, обращения к системам координат. Единый способ доступа к данным позволяет реализовывать и собственные провайдеры. Примечательно, что внутренний формат хранения FDO – язык GML, выбранный за основу проектируемой системы, что снижает риски потери данных при конвертации.

Тестирование

Нагрузочное тестирование

Нагрузочное тестирование – это тесты производительности, в которых система подвергается различным нагрузкам. Цель данного тестирования – оценить способность системы правильно функционировать в случае превышении планируемых нагрузок при реальной эксплуатации (система имеет некоторый «запас прочности») [5].

В качестве основы для нагрузочного тестирования программы CADGIS Integrator был взят следующий критерий – количество объектов, хранимых в конвертируемых файлах. Результаты тестирования представлены в таблице 5.1.

 

Таблица 5.1 – Результаты нагрузочного тестирования

Формат исходного файла Формат конечного файла Количество хранимых объектов Время преобразования (сек.)
SHP GML 0, 25
2, 3
256, 8
MIF/MID GML 0, 11
134, 6
DXF GML 0, 15
224, 3
GML SHP 0, 18

Окончание таблицы 5.1.

Формат исходного файла Формат конечного файла Количество хранимых объектов Время преобразования (сек.)
GML MIF/MID 0, 29
2, 2
245, 4
GML DXF 0, 26
3, 1
339, 2

 

Как видно из таблицы, время ожидания конвертации пользователя является вполне приемлемым даже для чертежей, содержащих большое количество разнородных объектов.

Функциональное тестирование

Функциональное тестирование – это тестирование программного обеспечения в целях проверки реализуемости функциональных требований, то есть способности программного обеспечения в определённых условиях решать задачи, нужные пользователям. Функциональные требования определяют, что именно делает программное обеспечение, какие задачи оно решает [5].

Функциональные требования включают:

- функциональная пригодность;

- точность;

- способность к взаимодействию;

- соответствие стандартам и правилам;

- защищённость.

Программа CADGIS Integrator была протестирована на большом количестве файлов различных форматов различной ёмкости и содержимого, с различным набором хранимых объектов. Основа для тестирования была предоставлена ОАО «Татнефть». При конвертации данных были устранены все выявленные ошибки.

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

Тестирование проводилось на ОС Windows XP SP3, Vista, Seven (в том числе и с использованием виртуальных машин), различных аппаратных платформах (8 различных конфигураций):

Процессоры 0, 8 – 2x2.8 ГГц.

Оперативная память: 256 – 4096 Мб.

Программа занимает около 15 Мб в установленном виде вместе с файлами справочной документации.

К прочим аппаратным возможностям ЭВМ программа особых требований не предъявляет.

 

Все функциональные требования, описанные в техническом задании, были выполнены в полном объёме, что было подтверждено при сдаче программы специалистами ОАО «Татнефть».

В качестве примера рассмотрена последовательность действий, необходимых для конвертации данных из формата SHP в MIF/MID и в DXF. Результаты работы программы можно увидеть на рисунках 5.11 и 5.15.


Поделиться:



Популярное:

  1. I.4. СЕМЬЯ И ШКОЛА : ОТСУТСТВИЕ УСЛОВИЙ ДЛЯ ВОСПИТАНИЯ
  2. II. Ассистивные устройства, созданные для лиц с нарушениями зрения
  3. II. Порядок представления статистической информации, необходимой для проведения государственных статистических наблюдений
  4. III. Защита статистической информации, необходимой для проведения государственных статистических наблюдений
  5. III. Перечень вопросов для проведения проверки знаний кандидатов на получение свидетельства коммерческого пилота с внесением квалификационной отметки о виде воздушного судна - самолет
  6. Qt-1 - сглаженный объем продаж для периода t-1.
  7. V Методика выполнения описана для позиции Учителя, так как Ученик находится в позиции наблюдателя и выполняет команды Учителя.
  8. V. Порядок разработки и утверждения инструкций по охране труда для работников
  9. VII. Перечень вопросов для проведения проверки знаний кандидатов на получение свидетельства линейного пилота с внесением квалификационной отметки о виде воздушного судна - вертолет
  10. VIII. Какую массу бихромата калия надо взять для приготовления 2 л 0,02 н. раствора, если он предназначен для изучения окислительных свойств этого вещества в кислой среде.
  11. XI. Вход для сопровождающих и зрителей
  12. XXXV. ДЛЯ ЧЕГО БЫЛА НАПИСАНА ЭТА КНИГА?


Последнее изменение этой страницы: 2017-03-03; Просмотров: 699; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.042 с.)
Главная | Случайная страница | Обратная связь