рефераты скачать

МЕНЮ


Дипломная работа: Разработка геоинформационной системы

создание матрицы на жестком диске осуществляется, если была удалена предыдущая матрица (Destroy()), далее увеличиваем границы матрицы так, чтобы они были кратны шагу (NormalizeRect(rect)), записываем заголовок в файл ВМН (WriteBmhHeader(mem)) и записываем 0 в конец файла, создавая таким образом файл нужного размера, заполненный нулями.

fseek (mem, 48 + cx * cy * sizeof(short) – 1, SEEK_SET);

char c = 0;

fwrite (&c, 1, 1, mem);

short Matrix: GetHeight (MTopobject *tpo)

высота топографического объекта добавляется в матрицу из UTP-файла (MString str = tpo->GetDataPole(1)), если в данных объекта отсутствует значение высоты, оно берется из списка стандартных высот (heights [tpo->m_kkod])

void Matrix: Save (MString filename)

сохранение в файл матрицы осуществляется в случае, если файл успешно создан на диске: FILE *file = fopen (filename, «wb»). Для сохранения матрицы сначала записываем заголовок файла ВМН (WriteBmhHeader(mem)) и сохраняем матрицу или в оперативную память (если memMode == INMEMORY) или в файл на жесткий диск (если memMode == INFILE).

void Matrix: Calculate()

при расчете матрицы первоначально создаем матрицу с размерами равными размерам карты (Create (pKarta->m_geobounds)), далее подсчитываем количество точек у всех топографических объектов, участвующих в расчете (это нужно, чтобы выводить полосу прогресса). Для формирования матрицы превышений, перебирая каждый объект каждого слоя карты, получаем высоту объекта. Если значение высоты не равно нулю, добавляем значение в формируемую матрицу превышений (с помощью функции AddHeight). При этом в матрице заполняются все клетки, покрываемые площадью рассматриваемого объекта.

void Matrix: AddHeight (MTopobject *tpo, short height)

для добавления высоты топографического объекта в матрицу первоначально необходимо проверить тип топографического объекта (tpo->m_pZnak->GetYaz()->GetType()). Если объект площадной, то выполняется добавление высоты площадного объекта в матрицу (AddPloObject (tpo, height)), если объект линейный, то выполняется добавление высоты линейного объекта в матрицу (AddLineObject (tpo, height)), если объект точечный, то сравниваем текущую высоту с высотой в ячейке, если текущая высота больше (height > GetHeight(point), то устанавливаем в ячейке текущую высоту (SetHeight (point, height))

void Matrix: AddLineObject (MTopobject *tpo, short height)

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

void Matrix: AddPloObject (MTopobject *tpo, short height)

добавление высоты площадного топографического объекта в матрицу осуществляется следующим образом: сначала создается локальная матрица топографического объекта (по размеру охватывающего прямоугольника объекта). Затем в локальной матрице площадного объекта заполняются ячейки, покрывающие контур объекта – используется функция AddLineObject (tpo, BORDER). Затем заполняются остальные ячейки локальной матрицы с использованием функции Fill (MPtArray *ar). На последнем этапе в цикле по всем ячейкам сформированной локальной матрицы все «внутренние» (не-OUTSIDE) ячейки заполняются значениями высоты площадного объекта, но только в том случаи если текущее значение высоты больше значения высоты в ячейке

if (height > GetHeight(point))

SetHeight (point, height);

void Fill (MPtArray *ar)

заполнение локальной матрицы обрабатываемого топографического объекта продолжается до тех пор, пока не будут заполнены все точки (GetNumFilledPoints() < numPoints). Первоначально в цикле do while выбираем случайную ячейку со значением высоты EMPTY (не заполненная) и вычисляем соответствующую точку объекта (MPoint pt = GetPoint (i, j)). Затем распространяем вокруг этой клетки значение высоты объекта с помощью функции Expand(), учитывая при этом, является точка внутренней (INSIDE) или наружной (OUTSIDE) по отношению к объекту.

if (PointInRegion (pt, ar)) Expand (i, j, INSIDE);

else    Expand (i, j, OUTSIDE);

void Expand (int i, int j, int state)

распространение заливки из клетки до границ объекта происходит следующим образом: сначала устанавливаем значение в клетке (SetHeight (i, j, state)), затем в цикле заполняем соседние клетки, обход осуществляется по кругу, вначале по часовой стрелке, потом – против, после каждой итерации увеличиваем радиус круга. Если после обхода не заполнено ни одной точки, значит распространяться «заливке» уже некуда, выходим из цикла.

 

5. Программа и методика испытаний

 

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

Основным методом отладки и обнаружения ошибок является тестирование – важнейший фактор, определяющий стоимость и длительность разработки комплекса программ. Затраты на тестирование составляют до 40% от общего времени на разработку программы.

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

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

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

При полном тестировании моделируются все возможные действия пользователя при работе с программой.

Сначала тестирование было проведено разработчиком программы, затем программный продукт был дан на тестирование пользователям. При этом на первом этапе выявлялись логические ошибки в основном связанные с последовательностью и временем появления диалогов на экране, которые затем были устранены.

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

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

Подготовка к тестированию

Тестирование программного модуля обработки и отображения картографической информации выполняется в среде функционирования программного модуля.

Подготовка средств

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

В среде функционирования программного модуля требуется:

-  установить программное обеспечение модуля, следуя инструкциям п. 6.2 настоящего документа;

-  записать в отдельный каталог файлы тестового примера (файл карты m3404.utp, файл классификатора 500–200-HOT_heights.kls, файл стандартных высот heights.txt и файл матрицы высот matrix.bmh).

Файлы тестового примера предоставляет исполнитель.

Ожидаемые результаты

В результате проведения тестирования ожидаются следующие результаты:

-  после открытия карты и классификатора, в главном окне программного модуля ожидается отображение цифровой карты местности (ЦКМ);

-  после использования инструмента зуммирования ожидается отображение в картографическом окне выделенного фрагмента ЦКМ, увеличенного до максимально возможного размера, который позволяет отобразить картографическое окно. Если размеры картографического окна и увеличиваемого фрагмента ЦКМ не симметричны, то отображаемый фрагмент дополняется участками ЦКМ, прилегающими к выделенному фрагменту, для полного заполнения картографического окна в вертикальном или горизонтальном направлении;

-  после использования инструмента скроллирования ожидается отображение в картографическом окне необходимого фрагмента ЦКМ;

-  после использования инструмента «предыдущий вид карты» ожидается отображение в картографическом окне предыдущего фрагмента ЦКМ;

-  после использования инструмента «отобразить всю карту» ожидается отображение в картографическом окне всей ЦКМ;

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

Порядок выполнения теста

Для выполнения тестирования программного модуля обработки и отображения картографической информации на цифровой карте местности следует последовательно выполнить следующие действия:

-  запустить программный модуль Matrix (см. п. 6.3. настоящего документа);

-  открыть карту m3404.utp и классификатор 500–200-HOT_heights.kls (см. п. 6.5. настоящего документа);

-  создать файл стандартных высот heights.txt (см. п. 6.5. настоящего документа);

-  если необходимо, внести изменения в список стандартных высот в диалоге «Редактирование высот» (см. п. 6.5. настоящего документа);

-  сохранить файл стандартных высот heights.txt (см. п. 6.5. настоящего документа);

-  произвести расчет матрицы превышений (см. п. 6.5. настоящего документа);

-  сохранить матрицу превышений matrix_m3404.bmh2 (см. п. 6.5. настоящего документа);

-  создать матрицу корректировок correction.bmh2 (см. п. 6.5. настоящего документа);

-  если необходимо, внести изменения в матрицу корректировок
(см. п. 6.5. настоящего документа);

-  проверить функции инструментов зуммирования, скроллирования, «предыдущий вид» и «отображение всей карты» (см. п. 6.5. настоящего документа);

-  завершить работу программного модуля Matrix (см. п. 6.5 настоящего документа).

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


6. Руководство пользователя

 

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

-  оперативная память – 128 Мб и более;

-  жесткий диск общим объемом не менее 20 Гб со свободными 500 Мб – 1 Гб;

-  монитор должен поддерживать разрешение 1024*768 пикселей и цветопередачу True Color;

-  дисковод для CD-дисков;

-  оснащение мышью;

-  установленная операционная система Windows 2000;

Инсталляция

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

-  matrix.exe – исполняемый файл;

-  gt-mt333.dll – библиотечный файл;

-  MSVCRTD.DLL – библиотечный файл;

-  MFC42D.DLL – библиотечный файл;

-  MFCO42D.DLL – библиотечный файл;

-  MSVCIRTD.DLL – библиотечный файл;

-  MSVCP60D.DLL – библиотечный файл.

Для установки модуля на персональный компьютер пользователя достаточно скопировать на жесткий диск каталог MATRIX с любого машинного носителя.

Для начала работы следует запустить программу matrix.exe.

Запуск программы

Для запуска программы Matrix необходимо щелкнуть пиктограмму, соответствующую программе. После запуска на экране монитора появляется главное окно программы.

В левой части окна расположены кнопки вызова функций. Функции вызываются щелчком мыши по выбранной кнопке:

- открыть карту;

- открыть папку;

- открыть классификатор;

- создать перечень стандартных высот;

- открыть перечень стандартных высот;

 – сохранение созданного перечня стандартных высот;

– редактирование перечня стандартных высот;

- открыть матрицу превышений;

– сохранение матрицы превышений;

- расчет матрицы превышений;

- создать матрицу корректировок;

- открыть матрицу корректировок.

В верхней части окна расположены кнопки вызова функций управления картой. Функции вызываются щелчком мыши по выбранной кнопке.

– отображение всей карты;

- возвращение к предыдущему экрану отображения;

– зуммирование (изменение отображения фрагмента карты);

– прокрутка.

Управление картографическим окном

Цифровая карта местности хранится на жестком диске АРМ в файлах четырех типов:

-  файлы объектов местности с расширением UTP;

-  файл-классификатор объектов с расширением KLS;

-  файл матрицы высот с расширением BMH;

-  файл превышения высот с расширением BMH2.

Файлы объектов местности содержат пространственные, количественные, качественные и описательные характеристики объектов. Один файл является базовым, т.к. покрывает весь интересующий регион и содержит минимальный набор объектов. Остальные файлы объектов соответствуют листам карт масштаба 1:200000 или 1:500000.

Файл классификатора объектов карты содержит данные об их представлении на экране монитора в зависимости от масштаба отображения. В классификатор дополнительно включено описание представления объектов оперативной информации на фоне объектов карты.

Файл матрицы высот содержит данные о возвышении земной (водной) поверхности относительно уровня Балтийского моря в каждой точке местности.

Файл превышения высот содержит данные о возвышении верхней поверхности сооружений, растительного покрова относительно земной поверхности в каждой точке местности.

Объекты карты распределены по слоям (гидрография, границы и т.д.). Отображение карты производится последовательно слой за слоем в соответствии с классификатором.

Для улучшения зрительного восприятия слоя и ускорения процесса его отображения применяется упрощенная отрисовка.

Степень детализации отображаемой карты изменяется установкой минимального размера отображаемого объекта. Размер задается в единицах измерения экранной системы координат, т.е. в пикселях.

Начало работы

Перед началом работы необходимо назначить рабочую папку. Для этого требуется нажать кнопку (открыть папку), после чего на экране отобразится диалоговое окно «Выберите папку».

В строке Directory задать название рабочей папки и нажать клавишу (ОК).

Первоначально для загрузки карты необходимо нажать кнопку (открыть карту). Отобразится диалоговое окно «Открыть карту».

Выбрать базовый файл карты и нажать кнопку (Open).

Далее необходимо нажать кнопку (открыть классификатор). Отобразится диалоговое окно «Открыть классификатор».

Выбрать файл классификатора и нажать кнопку (Open).

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

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

После того, как были заданы высоты для всех выбранных типов объектов, необходимо нажать кнопку (выход). Далее необходимо сохранить файл со стандартными высотами, для этого нажать кнопку (сохранить) (см. рис. 6.1). На экране появится диалоговое окно «Сохранить список высот».

В строке «Имя файла» задать название файла и нажать кнопку (сохранить).

Если требуется открыть уже сохраненный файл со стандартными высотами, необходимо нажать кнопку (открыть) и в диалоговом окне «Открыть список высот» выбрать ранее сохраненный файл и нажать кнопку (открыть).

Для вызова функции расчета матрицы превышений необходимо нажать кнопку (расчет матрицы превышений). После чего в нижнем правом углу главного окна появится полоса прогресса, по достижении 100% на экране должно отобразиться окно.

Далее необходимо сохранить файл матрицы превышений высот, для этого необходимо нажать кнопку (сохранить). На экране появится диалоговое окно «Сохранить матрицу превышений».

В строке «Имя файла» задать название файла и нажать кнопку (сохранить).

Расчет матрицы превышений происходит с некоторыми погрешностями, которые связаны с шагом расчета в матрице. И для того, что бы скорректировать в отдельных точках значения высот можно создать матрицу корректировок. Для этого необходимо нажать кнопку (создать матрицу корректировок). На экране отобразится диалоговое окно.

По нажатию клавиши (да) матрица корректировок будет создана, по нажатию на клавишу (нет) – не будет.

Для загрузки ранее сохраненного файла матрицы корректировок необходимо нажать на кнопку (открыть). Откроется диалоговое окно «Открыть матрицу корректировок».

В процессе работы может появиться необходимость рассчитать матрицу превышений для нескольких листов карты одновременно. Для этого необходимо нажать кнопку (открыть папку). Выбрать папку, в которой уже лежат несколько карт одного масштаба в формате UTP. Затем нажать кнопку (открыть классификатор) и выбрать классификатор нужного масштаба. Для продолжения работы необходимо нажать кнопку (редактирование перечня стандартных высот), откроется диалоговое окно «Стандартные высоты».

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

После того, как были заданы высоты для всех выбранных типов объектов, необходимо нажать кнопку (выход). Далее необходимо сохранить файл со стандартными высотами, для этого нажать кнопку (сохранить) (см. рис. 6.1). На экране появится диалоговое окно «Сохранить список высот». В строке «Имя файла» задать название файла и нажать кнопку (сохранить). Для вызова функции расчета матрицы превышений необходимо нажать кнопку (расчет матрицы превышений).

Для завершения работы диалога необходимо нажать кнопку (OК).

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

Для отображения в картографическом окне всей карты необходимо нажать кнопку (исходный размер карты) (см. рис. 6.1).

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

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

Для возвращение назад необходимо нажать кнопку (предыдущий вид).

Страницы: 1, 2, 3, 4, 5, 6


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.