Совершенствование модуля ГИС РАПИД для вывода графиков распределения значений слоев
Сведения о геоинформационной системе РАПИД. Разработка программы для модуля классификации текстур в среде Borland Delphi, позволяющей строить гистограммы распределения значений слоев с геоданными, с учетом разделения исследуемой территории на классы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 24.06.2014 |
Размер файла | 3,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Кафедра геоинформационных систем
Пояснительная записка
дипломного проекта бакалавра
направления 6.080101 "Геоинформационные системы и технологии"
на тему "Совершенствование модуля ГИС РАПИД для вывода графиков распределения значений слоев"
Михайлова Л.О.
Днепропетровск 2013
Реферат
Об'єкт розробки: модуль класифікації текстур.
Мета дипломного проекту: розробка програми, що дозволяє строїти гістограми розподілення значень шарів з геоданними, з урахуванням розділення досліджуваної території на класи.
Інструментом для рішення даної мети було обране середовище Borland Delphi.
У введенні розглянуті завдання, які вирішуються в дипломній роботі для досягнення поставленої мети, обоснована актуальність та практична значимість роботи,сформульовані цілі,задачі та методи роботи.
Перша частина носить оглядовий характер, в ній розглянута область рішення завдання, основи класифікації зображень, а також методи, можливі для застосування з метою рішення завдання класифікації зображень текстур.
У другій частині на прикладі з реальними даними протестовано дію роботи створеного модуля.
Актуальність вирішуваного завдання визначається необхідністю вдосконалення програмного інструментарію формального і неформального аналізу просторових геоданних при рішенні широкого кола завдань геоинформатики.
Ключові слова: КЛАС, КЛАСТЕРИЗАЦІЯ, ОБ'ЄКТ, ЕТАЛОН, ПРОГНОЗУВАННЯ, РОЗПІЗНАВАННЯ, ОЗНАКА, СИМВОЛЬНИЙ ШАР, РАСТР, ВЕКТОР.
Реферат
Объект разработки: модуль классификации текстуры.
Цель дипломного проекта: разработка программы, что позволяет строить гистограммы распределения значений слоев с геоданными, с учетом разделения исследуемой территории на классы.
Инструментом для решения данной цели была выбрана среда Borland Delphi.
В введении рассмотренные задания, которые решаются в дипломной работе для достижения поставленной цели, обоснована актуальность и практическая значимость работы, сформулированы цели, задачи и методы работы.
Первая часть носит обзорный характер, в ней рассмотрена область решения задания, основы классификации изображений, а также методы, возможные для применения с целью решения задания классификации изображений текстуры.
Во второй части на примере с реальными данными протестировано действие работы созданного модуля.
Актуальность решаемого задания определяется необходимостью совершенствования программного инструментария формального и неформального анализа пространственных геоданных при решении широкого круга задач геоинформатики.
Ключевые слова: КЛАСС, КЛАСТЕРИЗАЦИЯ, ОБЪЕКТ,ЭТАЛОН, ПРОГНОЗИРОВАНИЕ, РАСПОЗНАВАНИЕ, ПРИЗНАК, СИМВОЛЬНЫЙ СЛОЙ, РАСТР, ВЕКТОР.
Abstract
An object of development: is the module of classification of texture.
An aim of diploma project: is development of the program, that allows the стоїти histograms of distribution of values of layers with геоданными, taking into account dividing of the investigated territory into classes.
By an instrument for the decision of this aim the environment of Borland Delphi was chosen.
In introduction there are the considered tasks that decide in diploma work for the achievement of the put aim, actuality and practical meaningfulness of work, сформулированны aims,of task and methods of work are reasonable.
The first part carries survey character, in her рассмотренна area of decision of task, basis of classification of images, and also methods possible for application with the purpose of decision of task of classification of images of texture.
In the second part on an example with the real data the action of work of the created module is tested.
In the second part on an example with the real data the action of work of the created module is tested.
Actuality of the decided task is determined by the necessity of perfection of programmatic tool of formal and informal analysis of spatial геоданных at the decision of wide circle of tasks of геоинформатики.
Keywords: CLASS, CLUSTERIZATION, OBJECT,is STANDARD, PROGNOSTICATION, RECOGNITION, SIGN, SYMBOL LAYER, RASTER, VECTOR.
Содержание
Введение
Раздел 1. Общие положения и обзор инструментария создания модуля вывода гистограмм
1.1 Общие сведения о геоинформационной системе РАПИД
1.2 Организация данных
1.3 Главное окно программы
1.4 Окно менеджера проекта
1.5 Стандартный пользовательский интерфейс
1.6 Анализ данных
1.7 Модуль графики распределения значений слоев
1.8 Программный комплекс Borland Delphi
1.9 Визуальный компонент Chart
Раздел 2. Разработка модуля классификации текстур
2.1 Цели и задачи
2.2 Первый пример исходных данных
2.3 Второй пример исходных данных
- Выводы
- Перечень Использованных источников
- Приложение А. Ведомость материалов дипломного проекта
- Приложение Б. Код программы
- Приложение В. Отзыв руководителя на дипломный проект бакалавра
- Приложение Г. Рецензия на дипломный проект бакалавра
Введение
Интеллектуальный анализ данных связан с поиском в данных скрытых нетривиальных и полезных закономерностей, позволяющих получить новые знания об исследуемых данных. Особенный интерес к методам анализа данных возник в связи с развитием средств сбора и хранения данных, позволившим накапливать большие объемы информации. Перед специалистами из разных областей человеческой деятельности встал вопрос об обработке собираемых данных, превращения их в знания. Известные статистические методы покрывают лишь часть нужд по обработке данных, и для их использования необходимо иметь четкое представление об искомых закономерностях. В такой ситуации методы интеллектуального анализа данных приобретают особую актуальность. Их основная особенность заключается в установлении наличия и характера скрытых закономерностей в данных, тогда как традиционные методы занимаются главным образом параметрической оценкой уже установленных закономерностей. Среди методов интеллектуального анализа данных особое место занимают классификация и кластеризация. Классификация, при известной заранее группировке данных на подмножества (классы), устанавливает закономерность, по которой данные группируются именно таким образом. Кластеризация же, основываясь на установленном отношении схожести элементов, устанавливает подмножества (кластеры), в которые группируются входные данные. В широком круге задач нашли свое применение методы нечеткой кластеризации, в которых элементы входного множества относят к тому или иному кластеру на основании значения функции принадлежности. Нечеткая кластеризация одна из наиболее проработанных методик интеллектуального анализа данных. Однако, традиционные методы нечеткой кластеризации не дают приемлемых решений на данных со сложной внутренней структурой. Это связано с рядом допущений, закладываемых в эти методы: кластеры имеют заданную форму и особую внутреннюю точку - центр кластера; разбиение определяется, исходя из взаимосвязей между данными и центрами кластеров. Так как кластеры в общем случае могут быть произвольной формы и не иметь центров, актуальной является разработка метода кластеризации, свободного от указанных допущений и обеспечивающего разбиение только на базе отношений на исследуемых данных.
- Целью настоящей работы является разработка модуля классификации текстур.
Назначением разработки является совместный анализ результатов распознавания и кластеризации, эталонных выборок, а также исходных геоданных.
Актуальность решаемого задания определяется необходимостью совершенствования программного инструментария формального и неформального анализа пространственных геоданных при решении широкого круга задач геоинформатики.
Данная задача часто ставится при оценке результатов операций совместного анализа пространственных данных, в том числе, при выполнении автоматизированного компьютерного прогнозирования месторождений полезных ископаемых.
Модуль строит гистограммы распределения значений слоёв с геоданными, с учётом разделения изучаемой территории на классы.
Классы задаются значениями символьных слоёв, которые представляют собой результаты кластеризации или распознавания, а также слои с эталонными объектами.
Раздел 1. Общие положения и обзор инструментария создания модуля вывода гистограмм
- 1.1 Общие сведения о геоинформационной системе РАПИД
- РАПИД (Распознавание, Автоматизированное Прогнозирование, Интерпретация Данных) - специализированная растрово-векторная геоинформационная система для прогнозирования и поддержки принятия решений в сферах природопользования, экологии, поиска полезных ископаемых и прогноза чрезвычайных ситуаций. РАПИД позволяет работать с результатами геофизических и геохимических съемок, цифровыми моделями рельефа земной поверхности, аэрокосмическими снимками, а также c картографическими и другими материалами различного характера и происхождения. Данные могут быть заданы в сеточном, векторном и растровом виде.
Решаемые задачи:
- · -ввод, хранение, преобразование, фильтрация и визуализация сеточных, растровых и векторных данных;(космических снимков, геофизических полей, геологических и экологических данных, карт, изображений и др.);
- · -многомерная классификация (районирование) явлений и территорий;
- · -прогноз природных и техногенных объектов и ситуаций;
- · -мониторинг и прогнозирование чрезвычайных ситуаций;
- · -поиск полезных ископаемых;
- · -оценка экологической обстановки.
Возможности:
· -фильтрация и предварительная обработка;
· -расчёт трансформант и характеристик исходных данных;
· -оценка информативности данных;
· -автоматическое выделение линейных и кольцевых элементов на спутниковых снимках;
· -обработка и сегментация изображений;
· -исследование зависимостей и статистическая обработка данных;
· -линементный, кластерный и факторный анализ;
· -выделение аномалий по комплексу данных;
· -прогноз методами распознавания образов;
· -многовариантная визуализация данных (растровые, светотеневые, градиентные карты, трехмерные поверхности, диаграммы и графики).
Данные:
· -материалы геологических, геофизических и геохимических съемок
· -результаты опробования и описания скважин, шурфов, канав и т.д.
· -картографические источники
· -материалы аэрокосмосъемок
· -данные экологических исследований
· -атрибутивные сведения (таблицы, кодификаторы и т.д.)
РАПИД относится к классу человеко-машинных систем: решая задачу, пользователь сам определяет последовательность выполняемых процедур, принимает окончательные решения. При этом реализуется принцип многовариантного решения прогнозных задач путем проведения вычислительных экспериментов.
1.2 Организация данных
В качестве основного способа отображения информации в данной геоинформационной системе используется растровая модель хранения данных, т.е. данные представлены в виде двухмерной сетки, каждая ячейка которой содержит только одно значение, характеризующее объект, соответствующий ячейке растра на изображении. Также имеется набор средств для работы с векторными картографическими слоями и графическими изображениями.
Для организации данных в ГИС РАПИД используются понятия сеточного, векторного и растрового слоёв. Сеточный слой - двухмерный массив численных или символьных данных, относящихся к узлам двумерной регулярной сети. Векторные слои позволяют хранить пространственно-привязанные векторные объекты четырех типов - точки, полилинии, полигоны и эллипсы, а также произвольную атрибутивную информацию об этих объектах. Растровые слои представляют собой графические пространственно-координированные изображения (например, аэрофотоснимки).
Геоданные (пространственные данные) - это данные о пространственных объектах, включающие сведения об их местоположении и свойствах, пространственных и непространственных атрибутах. Обычно состоят из двух взаимосвязанных частей: позиционных и непозиционных данных - описания пространственного положения и тематического содержания данных, тополого-геометрических и атрибутивных данных. Пространственные данные могут быть представлены в растровой или векторной форме.
Растровое представление (растровая модель данных) - цифровое представление пространственных объектов в виде совокупности ячеек растра (пикселов) с присвоенными им значениями класса объекта. Оно предполагает позиционирование объектов указанием их положения в соответствующей прямоугольной матрице единообразно для всех типов пространственных объектов (точек, линий, полигонов и поверхностей); в машинной реализации ему соответствует растровый формат пространственных данных.
Векторное представление (векторная модель данных) -- цифровое представление точечных, линейных и полигональных пространственных объектов в виде набора координатных пар, с описанием только геометрии объектов. Ему соответствует векторный формат пространственных данных.
Интерпретация данных - 1) совокупность осуществляемых исследователем предположений о характере данных, полученных в результате измерения и подлежащих анализу; 2) перевод содержательных представлений на формальный язык.
Система широко использует методы распознавания образов и обработки изображений, ориентирована на установление связей между структурой геофизических полей и закономерностями размещения полезных ископаемых в земной коре. Применительно к интерпретации геолого-геофизических данных ГИС РАПИД позволяет решить следующие задачи:
· ранжирование изучаемых объектов по степени сходства с заданным эталонным классом;
· распознавание и кластеризация;
· анализ пространственной структуры физических полей;
· выделение совокупностей информативных признаков;
· оценка качества прогнозных решений и др.
Система имеет модульный принцип построения. Решение конкретной задачи предполагает прохождение технологических цепочек процедур обработки данных, в результате которых определяются некоторые трансформанты. Их в процессе прогнозирования и мониторинга даёт лучшие результаты по сравнению с исходными признаками. ГИС РАПИД позволяет выполнять более 200 трансформаций, в том числе дифференциальные, текстурные, гистограммные, морфологические, корреляционные, фрактальные и др.
1.3 Главное окно программы
ГИС РАПИД имеет модульный принцип построения и включает в себя главное окно, функциональные модули и ядро, отвечающее за управление данными и их визуализацию.
Работа с системой начинается с основного окна, содержащего главное меню и окно графа обработки. Последнее включается щелчком на флажке "Граф обработки". Оно упрощает поиск и исполнение требуемых Вам модулей системы, служит для удобного доступа ко всем программам пакета, а также для получения справочной информации.
Все команды графа обработки дублируются элементами главного меню. Меню содержит разделы, аналогичные блокам системы (при этом в граф обработки для упрощения включены не все команды, доступные из главного меню!)
Все модули системы для удобства ориентации пользователя условно сгруппированы в четыре блока:
· предобработка
· прогноз
· вывод результатов
· служебные модули
Блок предобработки позволяет осуществить следующие операции:
· добавление данных (растров (сетей), сеточных и векторных слоев)
· изменение растра (изменение параметров, прореживание сети)
· предобработку (нормирование, заполнение пропусков, зеркальные отражения, дублирование, отсечение экстремумов, конвертация слоев, редактирование данных)
· фильтрации (фильтрация и сглаживание, фильтрация с масками, сглаживание в пространстве слоев, получение некоррелированных слоев, фильтрация по точкам перегибов, удаление "ураганных" значений)
Блок прогноза позволяет:
· рассчитать трансформации (арифметические, тригонометрические, дифференциальные, гистограммные, морфологические, местоположения - линейные и площадные, интегральные, корреляционные, кривизны, формы секущих прямых, дисперсии разброса, типа особенностей и другие)
· создать эталонные слои
· выполнить комплексный анализ (выделить комплексные аномалии, создать матрицы коэффициентов корреляции и зависимостей, диаграммы разброса)
· оценить информативность слоев (диагностирующий набор, индивидуальная информативность)
· выполнить кластеризацию (методами "k-средних", ISODATA, Кендалла, нейронной сетью Кохонена, построить графики распределения значений слоев по классам)
· выполнить прогноз (распознавание, ранжирование, предсказание количественного параметра, ранжирование для двух классов, межкластерные расстояния, проектирование на подпространство)
· оценить качество прогноза (создать слой с контрольными точками, оценить качество)
· рассчитать элементарные статистики
Блок вывода результатов позволяет:
· создать карты освещенности
· выполнить псевдоцветовое кодирование
· построить графики поля вдоль произвольных линий
· вывести слой в виде поверхности
· просмотреть числовые и символьные слои
· экспортировать данные
В главном окне системы эти блоки представлены в виде блок-схем. Рекомендуется обрабатывать данные в указанном порядке.
При нажатии на кнопку "Да" на каждом этапе работы пользователь получает возможность выбора конкретной операции из группы. Например, при выборе "Добавить данные" пользователь может добавить или удалить растры и импортировать или экспортировать слои.
Служебные модули позволяют выполнить следующие действия:
· переместить файлы с данными
· удалить файлы с неиспользуемыми слоями и растрами
· управлять списком слоёв, входящих в растр
1.4 Окно "Менеджер проекта"
Рис.1.1 Окно «менеджер проекта»
На рисунке цифрами обозначены:
1. Окно, в котором отображён список растров, относящихся к текущему проекту. Для того, чтобы получить информацию о любом растре, щёлкните на его названии левой кнопкой мыши.
2. Щелчком на квадратике перед именем растра Вы можете показать или спрятать список слоёв, относящихся к данному растру.
3. Вы можете отобразить слой на экране, щелкнув на его имени мышью.
4. Пиктограммы перед именами слоёв показывают их тип - символьный или численный.
5. В этом окне приводится информация об указанном Вами растре - его характеристики и данные о сходящих в него слоях.
6. Кнопка "Выполнить" используется для выполнения операции над указанным растром. Тип операции указывается раньше, перед появлением окна "Список растров", в главном меню или "графе обработке". Кнопка "Выполнить" не появляется, если окно "Список растров" открыто в режиме "Просмотреть/Добавить/Удалить растр".
7. Кнопка "Закрыть" приводит к закрытию окна "Список растров" и отмене выбранной ранее операции (кроме случая, когда окно открыто в режиме "Просмотреть/Добавить/Удалить растр").
8. Кнопки добавления, удаления и дублирования растров. Кнопка "Добавить растр" (+) позволяет указать на диске rst-файл, содержащий информацию у нужном растре и добавить его к проекту. Кнопка "Удалить" (-) удаляет из проекта указанный щелчком мыши растр (при этом физического удаления rst-файла с жёсткого диска не происходит. Кнопка "Дублировать растр" (+ +) создаёт копию указанного щелчком мыши растра (при этом копии слоёв не создаются!). Все указанные кнопки доступны, только когда окно открыто в режиме "Просмотреть/Добавить/Удалить растр".
9. Информационное окошко. В нём выводятся подсказки, которые облегчат вам работу с системой
1.5 Стандартный пользовательский интерфейс
Благодаря тому, что практически во все модули разработанной ГИС в качестве составной части входит программный код Ядра II, отвечающего за пользовательский интерфейс и управление данными, большинство модулей имеют унифицированный интерфейс, далее называемый стандартным. Ниже описаны основные его элементы.
На рисунке 1.2 показано главное окно одного из модулей, обладающего стандартным пользовательским интерфейсов.
Рис.1.2 Элементы стандартного пользовательского интерфейса.
Обозначенные на рисунке цифрами элементы интерфейса имеют следующее предназначение.
1. Область просмотра позволяет отобразить слои. При передвижении мыши выводится информация о значениях слоёв.
2. Элементы этой панели позволяет управлять отображением слоя в области просмотра. При щелчке левой кнопкой мыши на значке “+/-” масштаб увеличивается, правой - уменьшается. Значок “1:1” масштабирует выведенный слой по размерам окна. В окошке указывается текущий масштаб. Для его изменения нужно ввести желаемое число и нажать Enter.
3. Включение/выключение изолиний.
4. Режим мультипросмотра (одновременно выводятся один или несколько слоёв).
5. Включение/отключение поворота сети.
6. Настройка координатной сетки.
7. Кнопки выбора “типа палитры” позволяют выбрать один из типов палитры - линейную (универсальную), арктангенциальную (предпочтительна для просмотра фоновых участков полей) и тангенциальную (предпочтительна для экстремальных участков полей). Кроме того, предоставляется возможность выбора инверсной или прямой шкалы, а также использования при одновременном отображении нескольких слоёв раздельной или общей легенды.
8. Выбор режима отображения ячеек сети в виде прямоугольников либо точек.
9. Панель “Окно” позволяет задать размеры скользящего окна по вертикали и горизонтали.
10. Кнопка “Слой” позволяет выбрать слои для отображения. Если выбрано более одного слоя, переключаться между ними можно с помощью кнопок влево-вправо. Кнопка Х позволяет спрятать отображаемые слои. По нажатии на кнопку > выводятся недавно рассчитанные слои (если таковые имеются).
11. Кнопка “Удалить слои” позволяет удалить слои из растра.
12. При нажатии кнопки “Завершить” происходит выход из текущего модуля в главное окно программы.
13. Переключатели “Н” и “Б” указывают, как следует обработать слои после выполнения операции: “Н” - провести нормирование, “Б” - заполнить бордюры, оставшиеся после выполнения операций со скользящим окном.
14. Информационное окно. Служит для вывода текущей информации, хода выполнения операций, подсказок и т.д.
15. Кнопка “Рассчитать трансформации” (название может отличаться) позволяет провести вычисления, характерные для модуля, в данном случае - рассчитать гистограммные характеристики слоев.
Диалоги
Диалог выбора слоев. Этот диалог появляется при выборе слоев для просмотра (после нажатия кнопки "Слой") или при выборе слоев, над которыми надо выполнить действия.
В окне диалога есть две закладки - для числовых и символьных слоев. Если выбранное действие можно выполнять только с одним типом слоев, остается только соответствующая закладка.
Если действие можно выполнить только с одним слоем, список слоев работает как переключатель, в противном случае можно выбрать одновременно несколько слоев.
Клавиша F2 позволяет отметить все слои, F3 - инвертировать выбор, F4 - отменить выбор, ESC - закрыть окно.
Диалог выбора параметров. Этот диалог позволяет выбрать параметры расчетов, например, выбрать виды трансформаций или способ их расчета. Поведение диалогового окна аналогично поведению окна выбора слоев.
Окно ввода значения. Это окно позволяет ввести значение определенного параметра. Диапазон значений параметра и его значение по умолчанию указано в заголовке окна. Кнопка ОК - продолжение работы, кнопка "Вернуть" - отмена изменений, кнопка "Отмена" - отказ от дальнейшего выполнения программы.
1.6 Анализ данных
Подсистема анализа данных включает в себя:
· Модуль выделения комплексных аномалий, разделяющий точки сети на "фоновые" и "аномальные" по набору признаков.
· Расчёт матриц коэффициентов корреляции между признаками и анализ их значимости.
· Вычисление норм матриц зависимостей. Рассчитываются новые признаки, представляющие собой значения разнообразных норм корреляционных и ковариационных матриц, формируемых по значениям исходных слоёв внутри скользящей окрестности.
· Модуль расчёта дисперсии разброса. Создаёт новые признаки, которые представляют значения мер разброса N-мерных векторов, состоящих из значений N исходных слоёв внутри скользящей окрестности.
· Модуль построения диаграммы разброса. Строит диаграммы зависимости двух/трёх признаков, с возможностью оконтуривания произвольных областей диаграммы и формирования на их основе новых слоёв с кодами контуров.
· Модули районирования изучаемой территории (кластеризация) методами К-средних (используется при заранее известном количестве кластеров), ISODATA (для случая с заранее неизвестным количестве кластеров).
· Модуль кластеризации при помощи нейронной сети Коханена.
· Модуль расчета и визуализации дендрограмм.
· Средства создания графиков, отражающих распределения значений признаков по классам.
· Модуль расчета элементарных статистик и построения гистограмм для признака или его ячеек, попадающих внутрь указанных классов (кластеров).
1.7 Модуль графики распределения значений слоев по классам
Графики распределения значений слоёв по классам. Модуль предназначен для построения графиков распределения значений слоев по классам, полученным в результате кластеризации (либо процедур распознавания). На графике для ячеек каждого класса отображается линия, показывающая частоту или частость попадания значений указанного числового слоя в определённые интервалы (рис. 1.3). Модуль позволяет визуально анализировать результаты кластеризации, распознавания и других операций, создающих слои с классами.
Входные данные создаются модулями:
· Распознавание / ранжирование
· Кластеризация
· Выделение комплексных аномалий
· Сегментация изображений и др.
Рис.1.3 Окно модуля «Графики распределения значений слоёв по классам».
Главное окно модуля имеет стандартный интерфейс, дополненный кнопкой «Построить график распределения» и окном вывода графиков:
Порядок выполнения расчётов. Для построения графика следует нажать кнопку "Построить график распределения". Затем следует выбрать слой, содержащий классы, определить, следует ли рассчитывать количество интервалов по формуле Старджеса, указать, что фиксировать по оси Y графика, выбрать классы для построения графика.
После выбора параметров графика необходимо выбрать слои, для которых требуется построить график.
График будет построен для первого выбранного слоя. Для переключения между слоями используются кнопки под графиком. Графически слой отображается в отдельном окне.
Для задания нового набора слоев для отображения используйте кнопку "Слой". Для указания новых параметров графика нажмите кнопку "Построить график распределения"
Получаемые результаты. Программа позволяет строить графики, которые могут быть вставлены в текстовые и графические редакторы через буфер обмена.
Результаты можно использовать для визуального анализа результатов кластеризации, распознавания и др.
1.8 Инструментарий для создания модуля
Delphi -- императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями развития языков программирования: появились class helpers, перегрузки операторов и другое.
Borland Delphi представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI), или 32-битных консольных приложений (программ, которые не имеют графического интерфейса). В сочетании с Borland Kylix, программисты Delphi могут создавать из одного исходного текста приложения и для Windows и для Linux, и это открывает новые возможности и увеличивает потенциальную отдачу от усилий, вложенных в изучение Delphi. В Delphi используется кросс-платформенная библиотека компонентов CLX и визуальные дизайнеры для создания высокопроизводительных приложений для Windows, которые повторной компиляцей можно легко превратить в приложения для Linux. Delphi является первым языком программирования, обладающим простой в использовании средой для быстрой разработки приложений, разрушающей барьеры между языками высокого уровня, и языками, на низком уровне разговаривающими с системой на языке битов и байтов. При создании графического интерфейса приложений Delphi, у вас все возможности языка программирования Object Pascal, "завернутого" в среду RAD. Такие компоненты окна графического пользовательского интерфейса, как формы, кнопки и списки объектов, включены в состав Delphi. Это означает, что вам не нужно писать никакого кода при добавлении их в ваше приложение. Вы просто "кладёте" их на вашу Форму, как в графическом редакторе. Вы можете также добавить на Форму элементы управления ActiveX, для создания в считанные минуты специализированных программ таких, например, как веб-браузеры. Delphi позволяет разработчикам дизайна внедрять в интерфейс новые элементы и кодировать их события одним щелчком мыши. Delphi поставляется в различных конфигурациях, настроенных на потребности различных предприятий. В Delphi вы можете писать программы для Windows быстрее и легче, чем это было возможно раньше.
Паскаль
Лучшим способом представить что такое Delphi является Object Pascal на основе визуальной среды разработки. Delphi основан на Object Pascal, языке, аналогичном объектно-ориентированному C++, а в некоторых случаях даже лучше. Для разработчиков не имеющих опыта работы в Паскале, Delphi имеет шаблоны своих структур на Паскале, что ускоряет процесс изучения языка. Компилятор Delphi упаковывает приложения в компактные исполняемые файлы, причем нет необходимости в громоздких библиотеках DLL - большое удобство.
Библиотека Visual Component Library (автономные бинарные части программного обеспечения, которые выполняют некоторые конкретные предопределенные функции), или VCL, Delphi является объектно-ориентированной базой. В этой богатой библиотеке вы найдете классы для таких визуальных объектов Windows как окна, кнопки и т.д., а также классы для пользовательских элементов управления таких как таймер и мультимедийный плеер, наряду с невизуальными объектами, такими как список строк, таблицы базы данных, потоки и т.д.
1.9 Визуальный компонент Chart
Компонент Chart позволяет строить различные диаграммы и графики.
Chart является контейнером объектов Series типа TChartSeries - серий данных, характеризующихся различными стилями отображения. Каждый компонент может включать несколько серий. Если отобразить график, то каждая серия будет соответствовать одной кривой на графике. Если нужно отображать диаграммы, то для некоторых видов диаграмм можно наложить друг на друга несколько различных серий. Всегда можно задать для одного компонента Chart несколько серий одинаковых данных с разным типом диаграммы. Тогда, делая в каждый момент времени активной одну из них, можно предоставить пользователю выбор типа диаграммы, отображающей интересующие его данные.
Для использования компонента Chart надо поместить его на форме и настроить требуемое количество кривых. Для настройки компонента используют Редактор диаграмм. Вызвать редактор можно двойным щелчком на компоненте, с помощью контекстного меню компонента или щелчком на одном из свойств компонента, имеющих многоточие в поле значения. Вид редактора представлен на рисунке 1.4:
Рис.1.4 Вид редактора диаграмм
Редактор состоит из двух вкладок: Chart и Series, каждая из которых также обладает некоторым набором вкладок со средствами для установки параметров компонента Chart.
Таблица-1.1 Назначение некоторых вкладок страницы Chart редактора диаграмм
Название вкладки |
Назначение |
|
Series |
управление сериями кривых |
|
General |
основные параметры, в том числе Zoom, позволяет во время выполнения приложения изменить масштаб фрагмента кривой |
|
Axis |
настройка осей графика |
|
Title |
текст над и под рисунком, в том числе их шрифт, бордюр и фон |
|
Legend |
вывод легенды кривых, в том числе состав и место вывода легенды |
|
Panel |
настройка панели для вывода кривых, в том числе параметры рамки и цвет фона панели |
|
Walls |
настройка «стен» - плоскостей вдоль осей |
|
3D |
настройка трёхмерного изображения диаграммы |
Таблица-1.2. Назначение кнопок вкладки Series, принадлежащей вкладке Chart
Название вкладки |
Назначение |
|
Add |
добавить серию в компонент |
|
Delete |
удалить выбранную серию |
|
Title |
установить наименование серии (вместо Series i, заданного по умолчанию) |
|
Clone |
дополнить компонент серией, идентичной выбранной серии |
|
Change |
Изменить тип вывода серии |
Для выбора нового типа (кнопка Add) и изменения типа имеющейся серии (кнопка Change) вызывается окно TeeChart Gallery. Оно содержит пиктограммы образцов кривых различных типов. Вид страницы редактора с галереей типов кривых (Рис.1.5):
Рис.1.5 Вид страницы редактора с галереей типов кривых
Вкладка Series редактора диаграмм может содержать разное число вкладок в зависимости от типа выбранной кривой. Данные вкладки также служат для настройки параметров кривой.
На рисунке 1.6 представлен вид вкладки Series для кривой типа Line (лентами):
Рис.1.6 Вид вкладки Series для кривой типа Line.
Для задания отображаемых значений надо использовать методы серий Series. Рассмотрим три из них.
Метод Clear очищает серию от занесенных ранее данных.
Метод Add:
Add(Const AValue: Double; Const ALabel: String; AColor: TColor)
позволяет добавить в диаграмму новую точку. Параметр AValue соответствует добавляемому значению функции, а значение аргумента функции заполняется автоматически, поэтому его задавать не нужно, параметр ALabel - название, которое будет отображаться на диаграмме и в легенде, AColor - цвет. Параметр ALabel - не обязательный, его можно задать пустым: ''.
Метод AddXY:
AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor) позволяет добавить новую точку в график функции. Параметры AXValue и AYValue соответствуют аргументу и функции. Параметры ALabel и AColor те же, что и в методе Add.
Раздел 2. Разработка модуля классификации текстур
2.1 Цели и задачи
Целью дипломного проекта является усовершенствование модуля построения гистограмм распределения значений слоев с геоданными, с учетом разделения изучаемой территории на классы.
С помощью гистограмм проводят совместный анализ результатов распознавания и кластеризации, эталонных выборок, а также исходных геоданных.
Данная задача часто ставится при оценке результатов операций совместного анализа пространственных данных, в том числе, при выполнении автоматизированного компьютерного прогнозирования месторождений полезных ископаемых.
Классы задаются значениями символьных слоёв, которые представляют собой результаты кластеризации или распознавания, а также слои с эталонными объектами
2.2 Пример исходных данных №1
Зиаэтдинские горы (Узбекистан)
Изучаемый участок площадью около 300 км2 представляет собой рудное поле, расположенное на территории деятельности Навоийского горно-металлургического комбината. Поле находиться в условиях среднегорья и сложено, в основном, породами палеозойского возраста. Малая мощность осадочной толщи делает перспективным использование аэрокосмических материалов для уточнения геологического строения и прогнозирования новых рудных объектов.
В качестве исходных данных использовалась геологическая карат участка, космический радарный снимок SRTM, а также результаты съёмок магнитного поля Za и поля естественных потенциалов (ЕП) по сети 50х50 м.
Слой, задающий деление территории на классы
Результат кластеризации исходных данных методом нейронной сети Кохонена (6 классов)
Рис.2.1 Участок Зиаэтдинских гор (Узбекистан)
Числовые слои (геоданные).
1. ЕП - поле естественных электрических потенциалов
2. М - магнитное поле Za
3. Космический радарный снимок SRTM
Отличие в функциях старого и нового модулей
Старый модуль:
Строит гистограммы значений ячеек одного слоя, попавших в разные классы
На рисунке 2.3: гистограммы, построенные по значениям слоя ЕП. Территория разделены на 6 классов. Каждому классу соответствует собственная гистограмма.
Рис.2.2 Числовые слои:ЕП, М, STRM-рельеф
Рис.2.3 Гистограммы классов слоя ЕП
Новый модуль: дополнительно позволяет строить гистограммы по значениям разных слоёв, попадающих в один класс.
Рис.2.4 Гистограмма значений слоев попадающих в один класс
На рисунке 2.4: гистограммы, построенные по значениям слоёв ЕП, М, SRTM-Рельеф для ячеек, относящихся к классу 1.
Дополнительно обновлённый модуль позволяет выводить значения слоёв гистограмм в файл формата *.doc
Таблица-2.1 Слой ЕП
Intervals (centers) |
-899 |
-815.471 |
-731.941 |
-648.412 |
-564.882 |
-481.353 |
-397.824 |
-314.294 |
-230.765 |
-147.235 |
-63.706 |
-19.82 |
|
Значения |
2 |
129 |
695 |
1400 |
1831 |
1827 |
1845 |
2685 |
2386 |
467 |
0 |
0 |
Таблица- 2.2 Слой М
Intervals (centers) |
-899 |
-815.471 |
-731.941 |
-648.412 |
-564.882 |
-481.353 |
-397.824 |
-314.294 |
-230.765 |
-147.235 |
-63.706 |
-19.824 |
|
Значения |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
23 |
580 |
4021 |
4302 |
Таблица-2.3 Слой SRTM-Рельеф
Intervals (centers) |
-899 |
-815.471 |
-731.941 |
-648.412 |
-564.882 |
-481.353 |
-397.824 |
-314.294 |
-230.765 |
-147.235 |
-63.706 |
-19.824 |
|
Значения |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
13267 |
2.3 Пример исходных данных №2
Участок размером 137?130 км. площадью более 17 000 км2, расположен в пределах одной из наиболее перспективных нефтегазоносных провинций Украины - ДДВ. В настоящее время важнейшим стратегическим направлением поисков нефти и газа на территории ДДВ являются глубины свыше 5 км. По самым скромным оценкам здесь в интервале глубин 5-8 км. сосредоточено свыше 5 млрд. тонн условного топлива. На начало 2009 года на участке выявлено несколько десятков залежей углеводородов на глубинах до 5 км., среди которых одно из крупнейших в Европе - Шебелинское газовое месторождение с запасами свыше 650 млрд. м3 (в настоящий момент практически полностью отработано.
Карта классов (кластеризация по 6-ти исходным слоям, алгоритм к-средних, 7 кластеров)
Рис.2.5.Карта классов части Днепропетровско-Донецкой впадины.
Пример получаемого графика (для класса 6) представлен на рисунке 2.8
Рис.2.7 Исходные геоданные
Рис.2.8 Гистограмма значений слоев попадающих в один класс
Вывод
В первой части рассмотрена область решения задания, основы классификации изображений, а также методы, возможные для применения с целью решения задания классификации изображений текстуры.
Разработана программа для модуля построения гистограмм распределения значений слоев с геоданными, с учетом разделения изучаемой территории на классы.
Разработка программы производилась в интегрированной среде Borland Delphi 7.
Программа была протестирована на реальных наборах данных.
Результат работы программы может быть использован при оценке результатов операций совместного анализа пространственных данных, в том числе, при выполнении автоматизированного компьютерного прогнозирования месторождений полезных ископаемых.
геоинформационный программа текстура гистограмма
Перечень использованных источников
1. Пивняк Г.Г., Бусыгин Б.С., Никулин С.Л. ГИС-технология интегрированного анализа разнородных и разноуровневых геоданных // Докл. Нац. АН Украины. - 2007. - №6. - С.121-128.
2. А.Я. Архангельский. Программирование в Delphi. Учебник по классическим версиям Delphi //Москва,ООО «Бином-пресс»,2006г.-1152 с.:ил.
3. Бусыгин Б.С., Никулин С.Л., Бойко В.А. Геоинформационная система РАПИД как средство мониторинга и прогнозирования чрезвычайных ситуаций. - Днепропетровск: Изд-во НГУ, 1995. - 13 с.
5. Вапник В.Н., Червоненкис А.Я. Теория распознавания образов. - М.: Наука, 1974.
6. ДеМеркс М. Н. Географические информационные системы. Основы.: Пер. с англ. - М.: Дата+, 1999. - 465 с.
7. Фукунага К. Введение в статистическую теорию распознавания образов: Пер. с англ. - М.: Наука, 1989. - 368 с.
8. Моделирование в ГИС. Статья [электронный ресурс]
9. Делфи. Статья [электронный ресурс]
10. Делфи. Статья [электронный ресурс]
11.Создание графика. Статья [электронный ресурс]
12. ГИСРАПИД. Статья [электронный ресурс]
Приложение А
Ведомость материалов дипломного проекта
Обозначение |
Наименование |
Количество листов |
Примечания |
|||||||
1 |
||||||||||
2 |
Документация |
|||||||||
3 |
||||||||||
4 |
Пояснительная записка |
|||||||||
5 |
||||||||||
6 |
Презентация |
14 |
||||||||
ГИС.ПД 10.16. ПА.ПЗ |
||||||||||
Изм |
Лист |
№ докум |
Подпись |
Дата |
||||||
Разраб. |
Материалы дипломного проекта |
Лит. |
Лист |
Листов |
||||||
Н |
1 |
1 |
||||||||
Рук. разд. |
НГУ,6.080101, ГКгр 09-1 |
|||||||||
Руковод. |
Никулин С.Л. |
|||||||||
Н.контр. |
Коротенко Г.М. |
|||||||||
Зав.каф. |
Бусыгин Б.С. |
Приложение Б
Код программы
unit ClassesGraph_Unit;
interface
uses
variants,gnugettext,math, RasterClassUnit, ServiceRapidUnit, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, ComCtrls, Buttons;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Panel1: TPanel;
Panel2: TPanel;
Chart1: TChart;
Panel3: TPanel;
UpDown1: TUpDown;
ChartLegendImage: TImage;
ScrollBox1: TScrollBox;
Image1: TImage;
Memo1: TMemo;
Splitter1: TSplitter;
Button2: TButton;
Button3: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BuildHist;
procedure BuildHist2;
function GetParams:boolean;
function GetParamsForSingle:boolean;
procedure getGlobalMinMax(layers:ArrayOfInteger; var minv,maxv:real);
procedure Panel3Resize(Sender: TObject);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure DrawLege;
function GetColo(var k:real):TColor;
procedure Chart1AfterDraw(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
R:RasterData;
NOfEtalLayer, NOfDataLayer, NOfEtalSelected:integer;
minv,maxv:real;
razr:integer;
RazrWidth:real;
EtalonAliases, Choices, inChoices:TStrings;
st:string;
objcount,Yaxis:integer;
FreqTable, FreqTableObjCount:array of integer;
GotPars:boolean=false;
GotPars2:boolean=false;//получены параметры для режима одного класса
CLnum:integer;//номер симв. слоя, использующегося для построения графика
CLname:string;//название класса для построения графика
CLLayers:ArrayOfInteger;//выбранные для отображения слои
implementation
uses ComObj;
{$R *.DFM}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if R.SaveRaster=false then Action:=caNone;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
R.Init(Image1,GroupBox1); //Инициализация
R.CreateZoomPanel(10,15, false, true);
R.CreateInterfaceButton(520,14,true);
r.MustShowLegend:=false;
R.Inform(_('Layer classes distribution graphs. Character layers are used as classes segmentation'));
end;
Function TForm1.GetParams:boolean;
var i,p:integer;
begin
With R do begin
{ Inform('Укажите слой с данными для построения полигона');
if SelectLayers(false,'F')=false then begin result:=false; exit; end;
NOfDataLayer:=R.NOfActiveLayer; }
Inform(_('Select classes layer'));
if SelectLayers(false,'S')=false then begin result:=false; GotPars:=false; exit; end;
NOfEtalLayer:=R.NOfActiveLayer;
Inform(_('Intervals count can be computed automatically (Sturges` rule)'));
if MessageDlg(_('Determine intervals count automatically (Sturges` rule)? '),
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
razr:=round (1+3.322*log10(ysize*xsize))
else
begin
Inform(_('Enter interval count'));
if not (inputvalue(_('Enter interval count (5-100)'),'10',razr, 5, 100)) then begin result:=false;GotPars:=false; exit; end;
end;
Choices:=TStringList.Create; inChoices:=TStringList.Create;
inchoices.Add(_('frequency'));
inchoices.Add(_('count'));
R.Inform(_('Y-axis fixes frequency or count of objects in interval'));
if R.SelectParameters(false,inChoices,Choices)=false then begin result:=false; GotPars:=false;exit; end;
Yaxis:= NOfSelectedParameter;
EtalonAliases:=TStringList.Create; Choices:=TStringList.Create; inChoices:=TStringList.Create;
for i:=1 to XSize*YSize do begin
St:=GetSData(NOfEtalLayer,i);
// if St<>GAPCodeS then
if EtalonAliases.IndexOf(st)=-1
then EtalonAliases.Add(st);
end;
EtalonAliases.Insert(0,_('_All Data_'));
inChoices.Text:=EtalonAliases.Text;
R.Inform(_('Select classess to build graph'));
repeat
if R.SelectParameters(true,inChoices,Choices)=false then begin result:=false; GotPars:=false;exit; end;
p:=0;
for i:= 0 to inchoices.count-1 do
if choices.strings[i]='1' then p:=p+1;
if p>20 then showmessage (_('No more than 20 classes allowed'));
until p<=20;
for i:= inchoices.count-1 downto 0 do
if choices.strings[i]='0' then inchoices.Delete(i);
end;//with
result:=true;
GotPars:=true;
end;
Function TForm1.GetParamsForSingle:boolean; //Ми
var i,p:integer;
begin //выбор параметров и входных данных
With R do begin
Inform(_('Select classes layer'));
if SelectLayers(false,'S')=false then begin result:=false; GotPars2:=false; exit; end; //выбор слоя с классом
CLnum:=R.NOfActiveLayer;
Inform(_('Intervals count can be computed automatically (Sturges` rule)')); //как рассчитывать количество интервалов
if MessageDlg(_('Determine intervals count automatically (Sturges` rule)? '),
mtConfirmation, [mbYes, mbNo], 0) = mrYes then //автоматически
razr:=round (1+3.322*log10(ysize*xsize))
else
begin
Inform(_('Enter interval count')); //вручную
if not (inputvalue(_('Enter interval count (5-100)'),'10',razr, 5, 100)) then begin result:=false;GotPars2:=false; exit; end;
end;
Yaxis:= 1;// по оси У будем показывать количество объектов
EtalonAliases:=TStringList.Create; Choices:=TStringList.Create; inChoices:=TStringList.Create;
for i:=1 to XSize*YSize do begin //создаем список всех классов
St:=GetSData(CLnum,i);
// if St<>GAPCodeS then
if EtalonAliases.IndexOf(st)=-1
then EtalonAliases.Add(st);
end;
inChoices.Text:=EtalonAliases.Text;
R.Inform(_('Select class to build graph')); //и выбираем один для построения графика
if R.SelectParameters(false,inChoices,Choices)=false then begin result:=false; GotPars2:=false;exit; end;
//CLnum:= r.NOfSelectedParameter;
CLname:= inChoices[NOfSelectedParameter];
end;//with
result:=true;
GotPars2:=true;
end;
procedure Tform1.BuildHist;
var AmountOfEtalons,i,p:integer;
begin
for i:=0 to chart1.SeriesList.Count-1 do //очистка чарта
Chart1.serieslist.delete(0);
r.getminmax(NOfDataLayer,minv,maxv);
RazrWidth:= (maxv-minv)/razr;
// setlength (FreqTableObjCount, razr+1);
// for p:= 0 to razr do FreqTableObjCount[p]:=0;
for i:= 0 to inchoices.count-1 do
begin
AmountOfEtalons:=0;
setlength (FreqTable, razr+1);
objcount:=0;
for p:= 0 to razr do FreqTable[p]:=0;
st:=inChoices[i];
for p:= 1 to r.xsize*r.ysize do
if (st = _('_All Data_')) or (r.GetSData(NOfEtalLayer,p) = st) then
if r.GetFData (NOfDataLayer,p)<>r.GapCodeF then
begin
FreqTable[round((-minv+r.GetFData (NOfDataLayer,p))/razrwidth)]:=FreqTable [round((-minv+r.GetFData (NOfDataLayer,p))/razrwidth)]+1;
objcount:=objcount+1; Inc(AmountOfEtalons);
// FreqTableObjCount[round((-minv+r.GetFData (NOfDataLayer,p))/razrwidth)]:=FreqTableObjCount[round((-minv+r.GetFData (NOfDataLayer,p))/razrwidth)]+1;
end;
Chart1.AddSeries( TLineSeries.Create( Self ) );
Chart1.series[i].marks.visible:=false;
Chart1.series[i].title:=copy (st,0,15)+ ' ('+ IntToStr(AmountOfEtalons)+')';
Chart1.series[i].clear;
for p:= 0 to razr do
if Yaxis=0 then
Chart1.series[i].addXY(p*razrwidth+minv, FreqTable[p]/ObjCount*100) // /FreqTableObjCount[p])
else
Chart1.series[i].addXY(p*razrwidth+minv, FreqTable[p]);
end;
Chart1.Title.Text.clear;
Chart1.Title.Text.add(_('Distribution graph - ')+r.FAttr[NOfDataLayer].Alias);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
classstr, Ystr:string;
begin
button2.visible:=false;//кнопка расчета сходства
chart1.Legend.LegendStyle:=lsSeries;
for i:=0 to chart1.SeriesList.Count-1 do //очистка чарта
Chart1.serieslist.delete(0);
if not (GetParams) then exit;
show;
memo1.Lines.clear; //параметры полигона
classstr:='';
for i:= 0 to inchoices.count-2 do
classstr:=classstr+''''+inchoices.Strings[i]+''', ';
classstr:=classstr+''''+inchoices.Strings[inchoices.count-1]+'''';
if Yaxis=0 then
begin
Ystr:=_('frequency');
chart1.LeftAxis.Title.Caption:='%';
end
else
begin
YStr:=_('count');
chart1.LeftAxis.Title.Caption:='N';
end;
memo1.Text:=_('Distribution graph: classes layer - ''')+r.sattr[nofetallayer].alias+_('''; using classes: ')+classstr+_('; with intervals count - ')+inttostr(razr)+_('; Y-axis fixes ')+YStr;
r.Inform(_('Select layer(s) to build distribution graph'));
if r.SelectLayers(true,'F')=false then exit;
NOfDataLayer:=R.NOfActiveLayer;
ChartLegendImage.Visible:=true;
BuildHist;
button2.visible:=true;//кнопка расчета сходства
Panel3.Visible:=true;
end;
procedure TForm1.Panel3Resize(Sender: TObject);
begin
UpDown1.Width:=panel3.width
end;
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var N,L,i:integer;
begin
with r do
begin
L:=AmountOfActiveLayers-1; if L=-1 then exit;
N:=-1;
for i:=0 to L do if NofActiveLayer=ActiveLayers[i] then N:=i;
if Button=btNext then
if N<>L
then NofActiveLayer:=ActiveLayers[N+1]
else NofActiveLayer:=ActiveLayers[0];
if Button=btPrev then
if N>0
then NofActiveLayer:=ActiveLayers[N-1]
else NofActiveLayer:=ActiveLayers[L];
if L>0 then begin
if TypeOfActiveLayers in ['s','S'] then StimulateNewSymbolLegend;
ReDrawLayerInBestZoom;
displaylayer(nil);
end;
if not (TypeOfActiveLayers in ['s','S']) then
begin
NofDataLayer:=NofActiveLayer;
if gotpars then buildhist;
end;
end;
end;
procedure TForm1.DrawLege;
var min,max,k:real;
MaxTxtW,TxtW,i:integer;
Btm:TBitmap;
begin
with r do
begin
if NofActiveLayer<0 then exit;
if not Panel3.Visible then exit;
Btm:=TBitmap.Create;
Btm.Canvas.Pen.Width:=2;
Btm.Canvas.Font.Size:=8;
GetMinMax(NofActiveLayer,min,max);
Btm.Width:=200; Btm.Height:=5;
//Рисуем легенду
for i:=0 to 100 do begin
k:=i;
Btm.Canvas.Pen.Color:=GetColo(k);
Btm.Canvas.MoveTo(i*2,0); Btm.Canvas.LineTo(i*2,5);
//Подписи
end;
ChartLegendImage.Picture.Bitmap:=Btm;
Btm.Dormant; Btm.FreeImage; Btm.Free;
ChartLegendImage.top:=chart1.BottomAxis.PosAxis+1;
ChartLegendImage.left:=chart1.LeftAxis.PosAxis;
ChartLegendImage.width:=chart1.bottomaxis.IEndPos-chart1.LeftAxis.PosAxis;
ChartLegendImage.Visible:=true;
end;//with
end;
function TForm1.GetColo(var k:real):TColor;
var T,mT,d25:integer;
begin
with r do
begin
if Palette<1 then Palette:=1;
T:= round(K) div 25;
mT:=round(K) mod 25;
d25:=trunc(255/25*mT);
case Palette of
1: case T of
0: result:=RGB(3,255,d25);
1: result:=RGB(0,255-d25,255);
2: result:=RGB(d25,0,255-d25);
3: result:=RGB(255,d25,0);
4: result:=clYellow;
end;
2: case T of
0: result:=RGB(d25,255,0);
1: result:=RGB(255,255-d25,0);
2: result:=RGB(255-d25,0,d25);
3: result:=RGB(0,0,255-d25);
4: result:=clBlack;
end;
3: case T of
0: result:=RGB(d25,0,0);
1: result:=RGB(255,d25,0);
2: result:=RGB(255-d25,255,0);
3: result:=RGB(0,255-d25,0);
4: result:=clBlack;
end;
4: case T of
0: result:=RGB(255,d25,0);
1: result:=RGB(255,255,d25);
2: result:=RGB(255-d25,255-d25,255);
3: result:=RGB(0,0,255-d25);
4: result:=clBlack;
end;
5: result:=RGB(0,round(0+(255-0)/100*k),0);
6: result:=RGB(round(0+(255-0)/100*k),0,0);
7: result:=RGB(round(0+(255-0)/100*k),round(0+(255-0)/100*k),round(0+(255-0)/100*k));
8: result:=RGB(0,0,round(0+(255-0)/100*k));
9: result:=RGB(round(0+(255-0)/100*k),round(0+(255-0)/100*k),0);
10: result:=RGB(0,round(0+(255-0)/100*k),127);
11: result:=RGB(round(0+(255-0)/100*k),0,127);
12: result:=RGB(0,127,round(0+(255-0)/100*k));
13: result:=255+round(K*100000);
else result:=RGB(0,0,round(0+(255-0)/100*k));
end;
end;//with
end;
procedure TForm1.Chart1AfterDraw(Sender: TObject);
Подобные документы
Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.
отчет по практике [961,6 K], добавлен 21.04.2012Основные операции с матрицами. Проектирование объектно-ориентированного модуля для работы с матрицами в среде Delphi 7. Разработка программы, которая позволяет выполнять различные действия над матрицами. Описание интерфейса программы, исходный код модуля.
курсовая работа [1014,2 K], добавлен 15.01.2013Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Разработка структурной схемы и алгоритма функционирования микропроцессорного модуля программного обеспечения автоматизированной информатизационно-измерительной системы. Характеристика принципиальной схемы модуля, распределения памяти и задание портов.
курсовая работа [1,2 M], добавлен 28.08.2012Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.
курсовая работа [2,2 M], добавлен 20.09.2014Расчет профилей распределения поглощенной энергии с учетом спектральных и температурных зависимостей полупроводниковых материалов. Разработка программы в среде Delphi для моделирования источника тепла, создаваемого в кремнии облучением ионами водорода.
контрольная работа [897,0 K], добавлен 11.01.2013Контроль знаний как форма педагогической деятельности. Особенности и классификация тестовых заданий. Разработка обучающе-контролирующей программы для контроля знаний обучающихся в среде программирования Borland Delphi 7.0 под управлением Windows XP.
курсовая работа [172,5 K], добавлен 24.08.2016Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.
контрольная работа [3,6 M], добавлен 18.10.2012Сведения о языке Delphi. Основы разработки баз данных. Разработка конвертера таблицы Excel, интерфейса главной формы, модуля отображения, системы поиска информации, средств редактирования. Системные требования программы. Инструкция по эксплуатации.
курсовая работа [2,6 M], добавлен 29.12.2008Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.
дипломная работа [3,2 M], добавлен 27.10.2017