Книги, научные публикации

Федеральное агентство по образованию Российской Федерации ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет Информатики Кафедра теоретических основ информатики УДК 681.03 ДОПУСТИТЬ К ЗАЩИТЕ В ГАК Зав. кафедрой,

д.т.н., проф. Ю. Л. Костюк л__ 2005 г.

Титов Олег Валерьевич РАЗРАБОТКА ПРИЛОЖЕНИЯ В СРЕДЕ ARCGIS ДЛЯ ВЕДЕНИЯ РЕЕСТРА ПРЕДПРИЯТИЙ С УЧЕТОМ ИХ САНИТАРНОЗАЩИТНЫХ ЗОН Дипломная работа Научный руководитель, Ст. преп. кафедры теоретических основ информатики С. Ф. Трофимова Исполнитель: студент гр.1401 О. В. Титов Электронная версия дипломной работы помещена В электронную библиотеку. Файл Администратор Томск 2005 Реферат Дипломная работа: 36 с., 22 рис., 1 таблица, 4 источника, 2 приложения МУНИЦИПАЛЬНАЯ ГЕОИНФОРМАЦИОННАЯ СИСТЕМА (ГИС), РЕЕСТР ПРЕДПРИЯТИЙ, САНИТАРНО-ЗАЩИТНАЯ ЗОНА (СЗЗ), ARCGIS. 1. Объект исследования - разработка базы геоданных в ArcGis. 2. Цель исследования - разработка приложения для работы с реестром предприятий и СЗЗ в среде ArcGis. 3. Методы исследования - экспериментальный на ЭВМ 4. Полученные результаты - разработано приложение в виде dll-модуля для ArcGIS в среде Visual Basic 6.0. Для приложения создан инсталляционный пакет. Оно позволяет осуществлять просмотр и добавление предприятий и участков, создавать СЗЗ участков и вести работу с документами. 5. Область применения - в органах территориального самоуправления., организациях, занимающихся подготовкой землеустроительных документов для реестра предприятий, Содержание Введение.........................................................................................................................................4 1. Муниципальные геоинформационные системы.....................................................................5 2. Модель данных ArcGis..............................................................................................................9 3.1 Компоненты приложения.................................................................................................11 3.2 Компоненты карты............................................................................................................12 4. Модульный подход к созданию приложений для ArcGis....................................................15 4.1 Выбор среды программирования.....................................................................................15 4.2 Создание dll-библиотек для ArcGis в Visual Basic 6.0...................................................16 5. Приложение для ведения реестра предприятий...................................................................17 5.1 Модель базы геоданных....................................................................................................18 5.2 Инсталляционный пакет для разрабатываемого приложения......................................19 Заключение...................................................................................................................................20 Список использованных источников.........................................................................................21 Приложение №1. Руководство пользователя............................................................................22 Приложение №2. Руководство программиста.......................................................................... Введение Управление городом - достаточно ёмкое понятие, включающее комплексный учёт многих факторов, влияние одних составляющих на другие, формирование экономической политики, решение политических задач, это развитие отдельных составляющих (промышленность, земля и объекты недвижимости, транспорт и инженерная инфраструктура, градостроительная политика, строительство, культура, образование). При принятии решений, городские власти сталкиваются с необходимостью иметь достаточно полную информацию о состоянии города, его инфраструктуры и транспорта, населении и местах приложения труда, демографическом и квалификационном потенциале города, состоянии и перспективе городского бюджета, инвестиционных потребностей и возможностях. Сбором и предварительной обработкой информации занимаются службы администрации и специализированные предприятия. С бурным развитием информационных технологий стало очевидно, что эффективное управление всевозможными системами в современном мире, в том числе и комплексной системой функционирования отдельно взятого города, невозможно без использования всех тех возможностей, которые предоставляют нам современные компьютерные технологии. Уже много лет в странах Европы и Америки и, с недавних пор, в России широко используются возможности информационных систем. Многие города имеют развитые муниципальные информационные системы и успешно используют их возможности по управлению городом. Целью данной дипломной работы является разработка приложения, предназначенного для ведения реестра предприятий и их санитарно-защитных зон (СЗЗ). Промышленность является важной составляющей инфраструктуры города. Как правило, крупные предприятия являются градообразующими объектами, средством формирования бюджетов, с одной стороны, но и очень вредными, с экологической точки зрения. Поэтому очень важной задачей является получение актуальной информации о размещении предприятий на территории города, о технологиях ими применяемых, о продукции ими выпускаемой, о классе вредности, а также о санитарно-защитных зонах, необходимых для их функционирования. Так как в нашей стране с начала 90-х годов введена плата за использование земли, потребность учета территории, занятой этими объектами, ведения учета самих объектов привела к необходимости создания средства работы с ними. Решая эти вопросы, мы работаем с пространственными объектами (промышленные площадки предприятий, санитарно-защитные зоны) а, следовательно, необходимо использовать средство, позволяющее удобно с ними работать - геоинформационную систему. Для данного проекта была выбрана хорошо известная в кругах геоинформатики ГИС ARCGIS. Обладая полноценным набором функций ГИС и являясь современной средой для разработки приложений разного масштаба, она прекрасно подходит для решения задач управления городом.

1. Муниципальные геоинформационные системы.

ГИС представляет собой расширение концепции баз данных - она оперируют файлами с координатами графических объектов и связанных с ними таблиц, задающих свойства этих объектов. Эта связь порождает принципиально новые свойства - возможность управлять визуализацией в зависимости от текущей задачи, принципиально новые типы запросов, типа Угде находится объект ?Ф или Учто где находится ?Ф. При всем многообразии операций, целей, областей моделирования, проблемной ориентации и иных атрибутов, характерных для создаваемых и действующих ГИС, логически и организационно в них можно выделить несколько конструктивных блоков, имеющих более или менее четко определенные функции. Функции ГИС в свою очередь вытекают из четырех типов решаемых ею задач: 1. 2. 3. 4. Сбор;

Обработка;

Моделирование и анализ;

Использование в процессах принятия решений;

Муниципальная ГИС - это геоинформационная система, предназначенная для использования в нуждах городского самоуправления. Для начала определим, есть ли необходимость рассматривать этот класс ГИС, как самостоятельный? Минимальный набор критериев, позволяющих идентифицировать каждую конкретную геоинформационную систему, образует систему координат трехмерного пространства, осями которого являются: территориальный охват и связанный с ним функционально масштаб (или пространственное разрешение), предметная область информационного моделирования и проблемная ориентация. Можно утверждать, что ГИС должна представлять собой такой инструмент, чтобы уметь отражать территорию (её аспекты) в том объёме и в той сложности, насколько это необходимо для практики. Таким образом, оригиналу (территории) должна соответствовать адекватная модель (не меньшей сложности), иначе моделирование будет некачественным. Описание города в пространственном аспекте представляется на нескольких наиболее важных масштабах:

- М1:25000 - это масштаб генплана города и стратегии его развития в пространстве;

- М1:10000-М1:5000 - масштаб адресного плана города;

- М1:2000 - масштаб скорее промежуточный в движении к М1:500. Поскольку М1:500 получать долго и дорого, то М1:2000 используется сегодня в городах как заменитель М1:500. Многие города так и останавливаются на М1:2000 на достаточно долгий срок - пока отдача от задач, решаемых на М1:2000, не приведёт к тому, что город начинает чувствовать способность финансировать создание полноценной М1:500. Таким образом, на М1:2000 приемлемо решаются земельные задачи, а также задачи паспортизации инженерных коммуникаций и моделирования физических процессов, протекающих в них. Также необходимо отметить, что карты более крупного масштаба чаще нуждаются в обновлении. Пожарной службе нужна карта масштаба М1:100-М1:200, но никто никогда не создаст такую карту, поскольку обновлять ее было бы невообразимо тяжело. Если в городе есть М1:500, то все остальные масштабы можно получить из него простым масштабированием и частичной генерализацией изображения.

Если говорить об определении МИС, то "муниципальность" отражает направленность такой системы на решение именно муниципальных задач, решаемых в первую очередь на основе насыщенных муниципальных планов крупных масштабов (М1:5000-М1:500). При этом: 1. Число разнообразных типов объектов на крупномасштабных планах городов почти на два порядка больше, чем на мелкомасштабных картах. 2. Число экземпляров этих типов объектов на несколько порядков превышает число объектов на мелкомасштабных картах. Другими словами, сложность территории города настолько превышает сложность мелкомасштабных отображений поверхности Земли, что инструментария, ориентированного на представление мелких масштабов, становится недостаточно. Без достаточного понимания, что должна представлять собой комплексная муниципальная информационная система (МИС), невозможно в необходимом объеме выработать требования к МГИС как одному из многих компонентов МИС. Поскольку МИС в целом является информационной моделью городской среды, МГИС выступает в качестве одного из аспектных взглядов на территорию среди множества других взглядов имущественного, земельного, транспортного, инженерного, жилищного и т.д. В первую очередь аспект МГИС характеризуется пространственным видением процессов, разворачивающихся на городской территории. В этих процессах участвует множество относительно самостоятельных объектов, которые нужно классифицировать, разместив их модели в "хорошо устроенной" классификационной системе. Именно масштабный фактор, связанный не с величиной территории, а с весьма большим количеством типов относительно самостоятельных объектов, вполне четко выделяемых в ГИС, и приводит нас к пониманию того, что МГИС - это особенная геоинформационная система, более сложная, чем ГИС, используемые географами, картографами, геологами и т.д. Город - это система, в которой процессы, определяющие его функционирование, разворачиваются в пространстве (и во времени). Поэтому отражение пространственного аспекта в моделях города имеет определяющее значение. Отсюда в МИС велика роль именно геоинформационной подсистемы. Имеется пять кардинальных вопросов, на которые отвечает полнофункциональная ГИС: 1. Местоположение. Что находится в...? Первый вопрос пытается выяснить, что находится в данном месте. Местоположение может быть определено разными способами, например, по названию местности, по почтовому адресу или ссылкой на географические координаты - широту и долготу. 2. Поиск места. Где это? Второй вопрос является обратным к первому и для ответа на него требует пространственного анализа. Вместо выяснения, что существует в данном месте, вы хотите определить местоположение, удовлетворяющее некоторым условиям. 3. Изменения. Что изменилось, начиная с...? Третий вопрос может включать оба первых и представляет собой попытку определить временные изменения на определенной площади. 4. Структуры. Какие пространственные структуры существуют? Этот вопрос более сложный. Вы можете задать его, чтобы определить, например, является ли рак главной причиной смертности среди населения близ АЭС. Что особенно важно, вам может понадобиться узнать - сколько имеется аномалий, не соответствующих структуре и где они расположены. 5. Моделирование. Что, если...? Этот вопрос ставят, если хотят, например, выяснить, что будет, если к существующей сети добавить новую дорогу. Ответ и вопрос такого типа требует и географической и описательной информации (а возможно и научных закономерностей). Технологически ГИС для городских задач должна уметь также следующее: 1. Отображать всё богатство топографических знаков муниципальных карт крупных масштабов. 2. При этой сложности отображающей подсистемы, ГИС должна работать весьма быстро, поскольку в МГИС имеют место повышенные требования к скорости формирования изображения на экране компьютера, а также в первую очередь скроллинга (прокрутки) изображения в любые стороны. 3. Иметь развитые средства для формирования множественных классификаций объектов, расположенных на территории города. аспектных 4. Предоставлять открытый и развитый межпрограммный интерфейс, позволяющий относительно легко развивать системы под новые требования, а также интегрировать их с другими системами. 5. Уметь приемлемо быстро работать с чрезвычайно большим количеством объектов (многие сотни тысяч, миллионы и более). 6. Поддерживать технологию работы с картой как единым растрово-векторным пространством. Попланшетная технология работы с картами является отсталой и непригодной для решения муниципальных задач. 7. Обеспечивать бесконфликтную работу в рамках локальной вычислительной сети нескольких рабочих мест, за которыми создаётся (редактируется) карта. 8. Иметь Internet-реализацию для обеспечения недорогого доступа к справочной системе на основе электронной карты всем желающим в городе. 9. Необходимость поддержания кроме простейших традиционных топологических отношений ещё и межслойных отношений. При этом, МГИС не столь необходимо, а можно даже сказать, что и вовсе не нужно уметь работать с различными проекциями карт. Муниципальные планы созданы в плоской проекции и в местной системе координат. В целом, если это ограничение не будет выполнено, а приводимые выше требования - будут, то соответствующая ГИС могла бы считаться лидеальной, пригодной к решению всех типов задач, как на мелкомасштабных природных картах, так и на крупномасштабных городских. На сегодняшний день МГИС бурно развиваются и имеют множество способов применения в управлении городом. В таблице №1 изображены возможные способы применения МГИС.

Таблица 1 - Применение МГИС в управлении городом[1] Области анализа, исследования и управления Экономика и градостроительство Объекты и задачи анализа, исследования и управления Земля и недвижимость Коммунальное хозяйство Транспорт Торговля Развитие мелкого и среднего предпринимательства Примеры ГИС-проектов Кадастры земли и недвижимости Анализ налогов и арендной платы за недвижимость. Автоматизированные системы управления инженерными сетями и коммуникациями. Анализ уровня транспортного обслуживания районов города. ГИС Генеральный план города. Градостроительное правовое зонирование и градостроительные регламенты Зонирование: административных границ городов, органов территориального самоуправления, избирательных округов и т.д. Анализ распределения по территории города групп населения с различным уровнем среднедушевого дохода. Анализ пространственного распределения половозрастных групп населения Локализация на территории города происшествий, аварий и катастроф. Анализ оптимальных маршрутов автотранспорта к месту происшествий, аварий и катастроф. Анализ зон наводнения. Планы и маршруты эвакуации в случае возникновения ЧС Анализ источников загрязнения, планирование границ санитарнозащитных и водоохранных зон, границ заповедных и особо охраняемых природных зон Анализ обеспеченности районов города объектами здравоохранения, образования, культуры и спорта с учетом половозрастной структуры населения Административное управление и политика Административно-территориальное деление. Избирательная система Социология и демография Стратификация населения по уровню доходов. Половозрастная структура населения. Анализ социальных факторов преступности Охрана правопорядка Организация работы служб скорой и безопасность помощи, аварийно-спасательных и пожарных служб, милиции Экология, природопользование и охрана окружающей среды Контроль над загрязнением окружающей природной среды. Сохранение зеленых насаждений и особо охраняемых природных территорий Здравоохранение, образование, культура и спорт Планирование работы городской системы здравоохранения, образования, культуры и спорта. Формирование зон обслуживания 2. Модель данных ArcGis Во время эволюции ГИС, модели данных для представления пространственной информации перетерпевали существенные изменения, предоставляя всё более гибкие средства для работы с геоинформацией. Х 60-е, 70-е годы XX века. Сначало были CAD (Computer Aided Drafting) модели. Географическая информация в таких моделях хранится в двоичных файлах и позволяет представлять точки, линии и области. В этих файлах также хранится довольно скудная информация об атрибутах, а основное внимание уделено слоям карты и необходимым надписям. 80-е. С появлением новой коммерческой ГИС от ESRI, ArcInfo, появилась и новая модель - топологическая (Coverage) модель данных или геореляционная. Эта модель имеет 2 ключевых момента: во первых пространственная информация хранится в двоичных файлах, а атрибуты - в таблицах. Во вторых : имеется возможность хранить отношения между топологическими объектами (то есть, например, для линии может хранится информация о соседствующих полигонах). Конец XX - начало XXI вв. Разработка объектно-ориентированных ГИС. Интеграция реляционных баз данных и геоинформационных систем. Появляется модель базы геоданных от ESRI, целью которой является улучшение топологических объектов за счет возможности задания естественного поведения объектам и определения любых отношений между ними. Ввод информации и её модификация становятся более надежными за счет механизма ограничений целостности, предотвращающего многие ошибки. Пользователи работают с более интуитивной информацией. То есть, например, пользователь работает не с обстрактными точками, линиями и областями, а с дорогами, участками и озерами. Объекты имеют более богатый контекст. Топологические, пространственные и связи родового типа позволяют не только описать качества объекта, но и его связи с другими объектами. Имеется возможность создания более удобных карт. Это достигается за счет контроля над тем, как объекты отрисовываются и за счет возможности определять специфические алгоритмы отрисовки. Отображение объектов на карте имеет динамический характер. При добавлении нового объекта могут возникнуть изменения в состоянии других объектов, в зависимоти от определенного пользователем поведения и отношений объектов. Улучшен механизм определения изображения объектов. Это выражается в возможности задания алгоритмов отрисовки для различных объектов, таких как: круговые дуги, эллиптические дуги, кривые Безье и т.д. Наборы объектов могут быть достаточно большими без разделения или разбияния на части.

Х Х Приемущества базы геоданных: Х Х Х Х Х Х Х Х Имеется возможность одновременного доступа к информации многими пользователями (work flows).

Объектно ориентированная модель позволяет без написания излишнего кода, что увеличивает вероятность ошибок, создавать сложные объекты, которые наиболее полно повторяют взаимодействие и поведение объектов реального мира. Географическая информация в базе геоданных может храниться в четырех представлениях: Х Х Х Х Векторная информация для представления объектов. Растровая информация для представления цифровых снимков, тематических данных в модели GRID и поверхностей. Триангуляционные поверхностей. нерегулярные сети (TINs) для представления Локаторы и адреса для поиска географического местанахождения по адресу.

Вся эта информация хранится в коммерческой реляциооной базе данных(БД), что позволяет использовать все приемущества развивающихся БД, таких как: журналирование, транзакции, ограничения целостности, ограничения доступа. ArcGis построена на COM объектах, что позволяет использовать любое COMсовместимое средство разработки для создания приложений для ArcGis. ArcInfo преоставляет широкие возможности разработчикам в использовании этих объектов, а также в создании своих объектов, пользуясь возможностями объектно ориентированного программирования. Разработчики могут создавать любые объекты, такие как дороги, улицы, вместо точек и линий. Это очень удобно, поскольку эти объекты будут использовать те же интерфейсы для работы, будут отвечать на теже вопросы и иметь те же средства задания поведения только с дополнительными возможностями. Например, дополнительным свойством дороги, при её редактировании может стать неразрывность её сегментов. Другими словами объекты геоинформационной модели революционны по трем причинам: Х Имеется возможность создавать любые объекты, необходимые для приложения и работать с ними как с объектами а не как со строками в таблице. Нет никакой разницы между стандартными объектами ArcInfo и объектами, которые мы создаем. Они используют одинаковые интерфейсы и обладают той же функциональностью и исполнением. Объекты спроектированы таким образом, чтобы обеспечить стандартное поведение для операций редактирования и отрисовки. Это позволяет сконцентрироваться на создании специфической части поведения, не затрагивая других частей, которые будут работать стандартным образом.

Х Х 3. Объектная модель компонента ArcMap геоинформационной системы ArcGis.

Диаграмма объектной модели ArcMap описывает составляющие компоненты приложения ArcMap. Эти компоненты управляют доступом к информации карты, её отображению и манипулированию. Объекты этой модели могут быть разделены на 2 пересекающиеся категории: Х Х компоненты приложения компоненты карты 3.1 Компоненты приложения Компонент Application (рис.1) - корневой компонент ArcMap. Ко всем остальным компонентам, относящимся к текущему документу, отображаемым компонентам приложения, набору функций приложения доступ может быть получен через этот объект. Х Х Х Х Х Х Свойство Document указывает на объект MxDocument (описываемый ниже), который содержит все элементы, находящиеся в текущем документе. Display указывает на Объект AppDisplay (также описанный ниже), который отвечает за отображение на экране информации карты. CurrentTool определяет активен ли какой-либо инструмент Дескриптор окна главного приложения - hWnd VBE - ссылка на редактор VisualBasic Некоторые методы, относящиеся к элементам главного меню, обычны для большинства Windows-приложений, такие как NewDocument, OpenDocument, PrintDocument и ExitApplication.

Рис. 1 Компонент MxDocument - текущий документ ArcMap. Х Х Х Свойство Maps - это набор всех объектов карты в документе ArcMap (ниже описан более подробно). FocusMap - текущий активный кадр данных Свойство ActiveView предоставляет IActiveView интерфейс, который связывает данные документа с их отображением на карте. Особенно полезно для контролирования текущего изображения на карте. StyleGallery управляет набором стилей текущего документа. AppDisplay представляет графическую информацию на экране Х Компонент пользователя Х Х Х Он управляет базовой отрисовкой и функциями управления экраном Свойство DisplayTransformation - трансформация координат карты и экрана Другие компоненты приложения: PageLayout показывает как будет выглядеть документ в печати. Позволяет произвести различные настройки для отправки документа на печать. Свойство GraphicsContainer - содержимое документа как графический объект. Это включает MapFrame, MapSurroundFrame и графические элементы, используемые для текста и символов. Класс DataWindow охватывает три оконные утилиты. MapInsetWindow (увеличитель) и OverviewWindow (просмотр данных) обычно создаются в ответ на команды выбора из главного меню View. TableWindow (таблица атрибутов слоя) появляется в контекстном меню слоёв.

Х 3.2 Компоненты карты Документ строится как иерархия карт, слоёв и элементов. MxDocument.Maps - это набор всех карт в текущем документе. MxDocument.FocusMap - это активная в данный момент карта. Компонент Map (рис.2) отвечает за кадр данных из всех кадров приложения ArcMap. Он содержит набор слоёв карты и её окружения (например легенду) Х Х Х Х Х Map.Name - имя кадра данных Отдельные слои карты могут быть доступны через Layer() и индексное значение или через Layers() и UID интерфейса слоя. MapSurround() обеспечивает список объектов окружения карты Scale и SpatialReference - метрические свойства, общие для всех слоёв данной карты. Каждая карта имеет свой собственный список закладок, доступный через IMapBookmarks интерфейс. Закладки, настраиваемые через опции главного меню имеют тип AOIBookmark (AOI - area of interest).

Рис. 2 Слои карты предоставлены различными типами слоёв в соответствии с типом предоставленных данных. Х Х FeatureLayer - геоинформационный элементы карты (features) хранимые как класс в базе геоданных FDOGraphicsLayer (FDO = "feature data object") - класс описательных графических элементов. Используются для описания элементом слоёв. Эта информация также хранится в базе геоданных CompositeGraphicsLayer - используется картой для свойства BasicGraphicsLayer CoverageAnnotationLayer - для отображения файлов покрытия ArcInfo RasterLayer and TinLayer - для данных растра и TIN GroupLayer - позволяет использовать множество слоёв как один объект Х Х Х Компонент GraphicElement используется для отображения графики, не являющейся feature. Графические элементы включают: текст, примитивные графические объекты и изображения Класс MapSurround включает легенды, инструменты масштабирования, указание направления на север. Поддержка сетки обеспечивается объектами, полученными от MapGrid, MapGridBorder и GridLabel. Члены класса NumberFormat помогают делать надписи на сетке при помощи различных опций отображения.

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

Х Х Х MapFrame содержит объект Map. Он хранит сетку карты, локации и параметры вырезки MapSurroundFrame содержит объект MapSurround OleFrame используется встраивания OLE объектов в документ 4. Модульный подход к созданию приложений для ArcGis Существует два основных способа программирования для ArcGis 8.2: Х Х Использование макросов и написание кода на встоенно Visual Basic for Applications (VBA) Создание dll-библиотек в других средах программирования, поддерживающих работу с com-объектами и dll-библиотеками Первый метод хорош своим удобством, если, конечно, не считать не всеми любимый язык программирования VisualBasic. В остальном удобство отладки и гарантированная совместимость объектов со средой делает этот способ весьма удобным для программирования различных инструментов для помощи в работе с ArcMap. Недостатком же такого метода является то, что весь код находится либо в стандартном документе ArcMap, содержащим установки по умолчанию, либо в пользовательском документе вместе с пользовательскими настройками приложения ArcMap. Таким образом, код либо остается полностью нескрытым, либо, при блокировании паролем документа, лишает пользователя возможности добавлять свои функции и процедуры в собственный документ. Ну и распространение приложения в виде документа c расширением.mxt не представляется удобным. Второй метод приносит накладные расходы на возможные непредвиденные осложнения, связанные с несовместимостью отдельных компонент, осложнением отладки приложений, дополнительным программированием. Но, тем не менее, отсутствие недостатков первого метода делает второй метод более удобным для создания собственных приложений и дальнейшего их распространения.

4.1 Выбор среды программирования Часть функций разрабатываемого приложения была ранее реализована в среде VBA. По вышеуказанным причинам было принято решение использовать сторонние среды программирования для дальнейшего развития приложения в виде dll-библиотеки. Платформа ArcGis поддерживает следующие среды разработки приложений для написания dll - библиотек функций: Х Х Среда Microsoft Visual Studio 6.0: для написания библиотек можно использовать Visual Basic 6.0 или Visual C++ 6.0 Новая среда Microsoft Visual Studio.NET: позволяет использовать те же средства (Visual Basic или Visual C++) или новый язык программирования - C# В этих средах написаны большинство дополнений и инструментов для ArcGis и разработчики ГИС охотно делятся своим опытом по программированию в них. В первую очередь был сделан переход на Visual Basic 6.0, поскольку мигрировать на него с VBA было проще. Наиболее привлекательной представляется написание приложения в среде С#, но поддержка С# была добавлена в ARCGIS совсем недавно, поэтому участниками проекта было принято решение не уходить с Visual Basic 6.0. 4.2 Создание dll-библиотек для ArcGis в Visual Basic 6. Процесс создания dll-библиотек для ArcGis зависит от конечной цели проектирования. В Visual Basic 6.0 для создания dll-библиотек используется стандартный тип проекта: ActiveX Dll. Существует два варианта создания дополнительной функциональности: Х Реализация, так называемого, extension (расширения), представляющего собой подключаемое дополнение с возможностью использования встроенного метода лицензирования ArcGis. Реализация конкретного элемента интерфейса или множества функций для дальнейшего использования. Процесс отладки dll-приложения состоит в следующем: Х Х Х Приложение, в котором предполагается использовать библиотеку, загружается Visual Basic временно устанавливает ссылки в реестре на собственный проект, чтобы иметь контроль за выполнением dll-приложения Дальнейшая отладка происходит как обычная работа с приложением, за исключением стандартных возможностей отладки приложений для кода dll-модуля Х Для надлежащего функционирования разработанного модуля требуется соответствующая регистрация его классов в реестре, либо использование стандартных средств ArcMap для импорта компонентов. Например, для регистрации собственной панели управления (toolbar) достаточно в меню Customize указать файл dll-библиотеки и дальнейшая регистрация пройдет автоматически. Использование панели сразу становится возможным.

5. Приложение для ведения реестра предприятий.

Приложение состоит из 3-х частей: Х Х Х основная библиотека функций база геоданных библиотека для работы с документами и шаблонами Описание библиотеки для работы с документами вы можете найти в дипломной работе Белокрылого Андрея. Основная dll-библиотека, при подключении к ArcMap, представляет собой панель управления, с двумя элементами: кнопка запуска основной формы и кнопка-прибор, которая используется для выбора участка. Приложение позволяет создавать сложные объекты - предприятия, а также добавлять объекты участков для этих предприятий. Участки могут быть добавлены из любого полигонального слоя, заданы по координатам или нарисованы на графическом окне. Выбор из набора объектов другого слоя реализован потому, что при решении данной задачи приходилось формировать промышленные площадки на основе уже существующих данных земельного комитета (брались земельные участки, на которых оформлены права). Для участков могут быть созданы санитарно-защитные зоны требуемого класса - это буфер вокруг основной промышленной площадки. Также имеется возможность для разбиения санитарных зон на участки, не принадлежащие другим слоям. Эта функция введена для автоматизации расчета налогооблагаемой базы земель санитарно-защитных зон. Алгоритм и его описание находится в дипломной работе Гульбина Константина. Для увеличения удобства имеется возможность производить некоторые настройки приложения. Для этого используется широко применяемый способ сохранения настроек в реестр Windows. Использованные интерфейсы: Х Х Х Для реализации панели был взят интерфейс IToolBarDef. Интерфейс ICommand для создания кнопоки запуска стартовой формы приложения Совместно интерфейсы ICommand и ITool для получения кнопки-инструмента. С её помощью пользователь получает возможность, при активации, выбрать, в предпочитаемом полигональном слою, один (или несколько, в случае их наложения) полигон для добавления как участка предприятия.

Хранить ссылки на полигоны пользователя было признано не удобным по двум причинам: Х Х пользователь мог использовать их временно, только для добавки элементов источники могут быть самых разных типов (например: база геоданных, Shape-файл и т.д.) Поэтому к приложению прилагается собственная база геоданных со слоями для участков предприятия. На случай, если пользователь не пожелает использовать предоставляемую базу геоданных, существует возможность указать свой слой для участков предприятий. Также в свойствах необходимо указывать название всех таблиц и слоев, используемых в приложении. Таким образом, пользователь может использовать любые, подходящие по содержанию таблицы и слои для хранения информации приложения. В ArcMap доступ к географическим элементам может быть получен на 2-х уровнях: Х Х на уровне слоёв на уровне базы данных Очень важно при копировании объектов использовать только один из уровней. Поскольку в обоих уровнях используются одинаковые интерфейсы, то можно попытаться их соединить. Автор некоторое время не мог обнаружить ошибки в алгоритме, пока не сменил способ получения интерфейсов.

5.1 Модель базы геоданных База геоданных, как и любая другая база данных, строится по определённой информационной модели. На рисунке №3 представлена диаграмма, которой соответствует состояние базы геоданных на данный момент. Названия в квадратных скобках или английские названия атрибутов, следующие за русскими, соответствуют названиям таблиц и слоёв в базе геоданных. Английская буква t, предшествующая названию таблицы обозначает, что эта сущность имеет тип таблица в базе данных. Буква l обозначает, что таблица имеет тип слой (от английского - layer). Атрибуты, с названием ObjectID - являются первичными ключами по умолчанию и создаются системой самостоятельно при добавлении новых строк или создании самих таблиц. Автор использовал эти атрибута как первичные ключи независимых сущностей. На диаграмме ключи ObjectID в зависимых сущностях (изображены прямоугольниками с округлыми краями) не изображены, хотя они присутствуют, тем не менее, для работы с базой данных никакого практического значения не имеют. Следует сказать, что данная диаграмма, по полноте, соответствует поставленной задаче, однако, если программа будет активно использоваться и пользователям понадобятся дополнительные возможности, будет требоваться модификация текущей модели. Первоначальная диаграмма информационной модели была более полна, но, ввиду невостребованности для поставленной задачи, была упрощена до текущей. Ещё одной особенностью этой модели является то, что слой lStreet и таблицы tStreet и tStreetType должны быть заполнены до работы с системой. В данном проекте для этих таблиц использовалась информация для улиц города Томска, но возможно использование данных для любого города. Для этого в настройках приложения можно указать название других таблиц для этой цели.

Рис. 5.2 Инсталляционный пакет для разрабатываемого приложения.

Поскольку проект является вполне самостоятельным приложением, было решено разработать инсталляционный пакет для приложения. Таким образом, приложение может быть установлено на любую рабочую станцию, с установленной ГИС ARCGIS. Для создания инсталляционного пакета был использован продукт под известным названием Install Shield, подтипа Developer. Это средство предоставляет инструментарий для разработки инсталляционных программ различной сложности. Также программа имеет возможность автоматического добавления библиотек, используемых любым проектом VisualBasic. Тем не менее, автор рекомендует пользоваться этой возможностью с осторожностью, поскольку если просто добавить библиотеки в проект и совершить последующую установку приложения, библиотеки будут зарегистрированы, и всё будет работать нормально до момента, когда понадобиться деинсталлировать приложение. После деинсталляции ссылки на библиотеки пропадают, и программы, использующие эти библиотеки, перестают работать, либо работают некорректно. Для обхода таких ошибок необходимо использовать уже имеющиеся библиотеки в системе и лишь при отсутствии требуемых библиотек регистрировать свои. Для этих целей могут быть созданы пользовательские функции на языке C, во встроенном редакторе функций. Также инсталляционный пакет делает необходимые изменения в реестре. Заключение В рамках дипломной работы было разработано dll-приложение ГИС ArcGis для работы с предприятиями и СЗЗ. В ходе реализации системы было выполнено следующее: Изучены возможности объектов ArcObjects для создания удобных пользовательских интерфейсов работы с пространственной информацией и визуализации Разработана структура базы геоданных Разработаны необходимые реализованы их функции для обеспечения функциональности формы и Создан инсталляционный пакет полученного приложения.

Список использованных источников 1. ГИС - реальный инструмент для управления городом / Холодков В.В., Радионов Г.П., Рудов А.И., Кувшинников Г.А, Купецкая Т.А. [Электронный ресурс].- 2002.-Часть 1.Режим доступа: 2. Мамедов Э. - База Геоданных - Теория ГИС, с. 3-4 3. Modeling Our World, The ESRI Guide to Geodatabase Design // Environmental Systems Research Institute, Inc.- 1999.- [электронный вариант] 4. ArcMap Object Model // Environmental Systems Research Institute, Inc.- 1999.[электронный вариант] Приложение №1. Руководство пользователя.

Запуск файла установки инициирует процесс инсталляции приложения. В процессе установки пользователю будет предложено указать путь установки, а также выбрать устанавливаемые компоненты. Компонент три: Х Х Х Основной библиотека функций, устанавливается обязательно Шаблон базы геоданных - устанавливать не обязательно, если пользователь уже имеет базу с данными;

по умолчанию устанавливается. Библиотека для устанавливается работы с документами и шаблонами;

по умолчанию После установки в ArcMap будет доступна новая панель управления под названием Реестр предприятий, а также, если была установлена библиотека для работы с документами, будет доступна функция в меню команд. Если этого не произошло, то необходимо добавить панель вручную. Для этого необходимо в меню Tools выбрать пункт Customize, затем нажать кнопку AddFromFile и указать dll-файл библиотеки DevSzzReg.dll в папке установки. Таким же образом добавляется функция работы с документами из файла Word.dll. В результате получим следующий вид (рис. 4):

Рис. Средняя кнопка принадлежит функции работы с документами, она находится в самостоятельном модуле и может быть помещена в любую панель управления. Описание её работы находится в дипломной работе Белокрылого Андрея. Первая кнопка для добавления графической информации к участкам предприятия, активируется приложением в момент добавления полигонов. Основное окно приложения - кнопка с зелёным флажком. При нажатии на 3-ю кнопку появляется главное окно приложения (рис. 5).

Рис. 5 Перед началом работы необходимо проверить настройки приложения. Для этого нужно нажать на кнопку Настройки. Появится форма с настройками (рис. 6 - рис. 7).

Рис. Рис. 7 При установке приложения все настройки принимают начальные значения по умолчанию. Их следует менять, если база данных перемещена в другое специфическое место, или предполагается использовать другие слои и таблицы. Указывать расположение базы данных необходимо только для встраиваемого модуля для работы с документами. Основное приложение работает с текущими слоями и таблицами, загруженными в рабочей области ArcMap. На закладке слои также находится список для слоев, участвующих в образовании кусочков налогообложения СЗЗ. Этот список будет появлятся по умолчанию при выполнении операции разбиения на кусочки, но возможность выбрать слои также предоставлена и в момент непосредственного построения. Более подробно об этой операции вы можете узнать в дипломной работе Гульбина Константина. При помощи первой кнопки вызывается форма со списком предприятий базы данных (рис. 8).

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

Рис. 9 Помимо простых атрибутов на второй закладке есть сложный атрибут - адрес (рис. 10). Поскольку одно предприятия может иметь несколько адресов, есть возможность указать любое их количество, а также описание для любого адреса.

Рис. 10 Нажатие кнопки л+ активирует форму добавки адреса (рис. 11). Поля Тип улицы и Название являются выпадающим списком и содержат соответствующие значения из таблиц адресов, поэтому эта информация должна быть либо из предоставляемой базы данных, либо из базы данных пользователя. Остальные значения относятся к сущности адрес. При вводе адреса, не содержащегося в базе данных, приложения выдает запрос на добавление нового адреса в таблицу адресов, давая возможность проверить введенные значения. Описание для каждого адреса также может быть заполнено в форме добавления адреса.

Рис. 11 При нажатии на кнопку показать участки на форме Список предприятий появляется форма со списком участков выбранного предприятия (рис. 12).. Если у предприятия не задано ни одного участка, будет показан пустой список.

Рис. 12 Наличествующие участки можно удалить. Также из этой формы можно произвести добавление участка предприятию по нажатию на кнопку Добавить. Форма добавления участка показана на рисунках №13, №14. Добавление адреса участка происходит идентичным образом, как и у предприятия. Общие данные включают категорию вредности и размер создаваемой СЗЗ, которые задаются выбором из 5 возможных категорий.

Рис. Рис. 14 Графика, или полигон участка, можно добавить при помощи закладки Графика по нажатию на кнопку Указать графику. Форма добавления участка показана на рисунке №15 Поскольку добавление участка возможно только из полигонального слоя, в выпадающем списке находятся названия всех доступных в данный момент полигональных слоёв. После выбора слои и нажатия на кнопку Указать графику, выбранный слой становится единственным отображаемым на карте и активируется прибор №1 на панели управления приложения. После этого необходимо выбрать полигон на карте.

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

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

Рис. 17 Последняя, неописанная кнопка на главной форме приложения, под названием Работа с кусочками предназначена для активации функции разбиения на кусочки. При нажатии на эту кнопку появляется форма, изображенная на рисунке №18.

Рис. 18 Кнопка выбора используется для того, чтобы определить предприятие, СЗЗ участка которого будет разбиваться, при этом загружается та же форма, что и на рисунке №17. Кнопка выбора участка помогает выбрать участок предприятия, СЗЗ которого требуется разбить на кусочки. Форма выбора участков изображена на рисунке №19. Если у предприятия нет участков, добавление участков недоступно, а также недоступно создание набора кусочков.

Рис. 19 Когда предприятие и участок выбраны, можно переходить с разбиению. При нажатии на кнопку Создать набор кусочков, появляется форма, изображенная на рисунке №20.

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

Таким образом, имея ситуацию, как на рисунке №21, где изображен набор участков, 3 из которых имеют СЗЗ и слой для вычитания, можно производить разбиение.

Рис. 21 После разбиения центральной СЗЗ получается следующий набор кусочков (рис. 22).

Рис. 22 Подробно о назначении кусочков можно узнать в дипломной работе Гульбина Константина. Полученное изображение является элементом для создания документов по СЗЗ. В форме Создание кусочков имеется возможность сохранения изображения полученного набора кусочков в графический файл при нажатии на кнопку Сохранить рисунок. В рамках данной дипломной работы это вся реализованная функциональность. Однако стоит заметить, что для более удобной работы с реестром предприятий возможно расширение возможностей приложения.

Приложение №2. Руководство программиста.

Приложение написано в Visual Basic 6.0, как ActiveX Dll. Для использования классов объектной модели ArcGis необходимо подключить библиотеку ArcGis esriCore.olb. Описание модулей классов: EmpIComand3.cls - содержит описание интерфейса ICommand. Главное событие ICommand_OnClick - загрузка главной формы приложения - frmMain. Также, при создании объекта ICommand_OnCreate(ByVal hook As Object), hook - указатель на Application, то есть на приложение ArcMap. При помощи его мы получаем доступ ко всем необходимым объектам EmpITool.cls - содержит описание двух интерфейсов ICommand и ITool. Это необходимо для определения инструмента со статусом Tool (то есть при нажатии активируется обработчик событий, например нажатий мыши). ICommand_Enabled() - содержит условие, при выполнении которого инструмент активен. Для данного приложения важно событие ITool_OnMouseDown, которое и производит выбор участка EmpIToolBarDef.cls - содержит описание интерфейса IToolBarDef. Этот интерфейс будет использован при создании панели. В процедуре IToolBarDef_GetItemInfo указываются элементы панели (например, itemDef.ID = "DevSzzReg.EmpITool"). Для корректной работы в IToolBarDef_ItemCount необходимо указать корректное число элементов Часто используемый код: При работе с картой часто нужно получить доступ к отображаемым элементам. Как было описано в главе №2, доступ к активной отображаемой области может быть получен через интерфейс IActiveView. Для его получения используется интерфейс IApplication, который приложение получает при инициализации ICommand_OnCreate(ByVal hook As Object). Ссылка на интерфейс для доступа к приложению ArcMap далее хранится в модуле VariavleModule в переменной m_pApp. Процесс получения IActiveView выглядит следующим образом: Dim pMxApp As IMxApplication Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pActiveView As IActiveView Set pMxApp = VariableModule.m_pApp Set pMxDoc = VariableModule.m_pApp.Document Set pMap = pMxDoc.FocusMap Set pActiveView = pMap Как видно, попутно код получает доступ к интерфейсам IMxDocumet и IMap.

Для получения доступа к любым таблицам и к атрибутивной информации слоёв в том числе используется интерфейс ITable. Таблица же выбирается по имени, записанном в реестре, при помощи интерфейса ITableCollection (Set pTableCollection = pMxDoc.FocusMap, где pTableCollection - переменная типа ITableCollection). Имя таблицы можно получить из свойства BrowseName интерфейса IDataSet (Set pDataSet = pTableCollection.Table(i)) Для доступа к значениям таблиц необходимо использовать следующие интерфейсы: IQueryFilter, ICursor, IRow IQueryFilter - используется для установки параметров поиска информации. Для получения доступа ко всей таблице необходимо установить свойство WhereClause =ФФ. ICursor - предоставляет доступ к набору элементов, выбранных из базы данных специальным условием (WhereClause) при помощи одного из методов Select, Search или Update, которые принимают в качестве параметра переменную типа QueryFilter. IRow - предоставляет доступ к отдельному элементу из набора в ICursor. Выбор элемента происходит последовательно при помощи метода ICursor.NextRow. Далее доступ к значениям таблиц происходит через метод Value интерфейса IRow, куда передается номер поля. Для поиска номера поля по имени удобно использовать метод интерфейса IFields получаемого через IRow - fields.FindField, которому необходимо передать строку-название поля. Добавление строки - метод InsertRow интерфейса ICursor Удаление строки - метод IRow под названием Delete Описания форм и их процедур. 1. frmMain Форма предназначена для требующего описания. 2. frmProperties Форма содержит настройки приложения. Все настройки загружаются из реестра при загрузке формы и сохраняются при её закрытии на кнопку ОК. Стандартные команды сохранения и чтения реестра в VB следующие: GetSetting appname, section, key, setting SaveSetting appname, section, key, setting Сохранение происходит после ключа [HKEY_CURRENT_USER\Software\VB and VBA Program Settings] Функция cbxFill() производит заполнение выпадающего списка названиями полигональных слоёв из активного вида Функция ListBoxFill() производит начальное заполнение списка вычитаемых слоёв из реестра. Список слоёв хранится в виде строки с названиями слоёв, разделёнными пробелами. В цикле изымаются названия слоёв и помещаются в динамический массив строк sLayersToCut. Далее при нажатии на кнопки добавить слой в список или удалить из списка происходит модификация этого массива, а в списке отображается содержимое массива. Модификация при удалении сдвигает массив на элемент вниз. Модификация при добавлении добавляет в конец массива. Потенциально небольшой размер массива позволяет использовать такой алгоритм без потери производительности. 34 запуска остальных форма и не содержит кода, 3. frmPredList Форма отображает список предприятий из базы данных и позволяет добавлять новые и удалять старые предприятия и переходить на форму frmUchList, отображающую список участков. Нажатие на кнопку удаления приводит к запуску процедуры удаления предприятия PredpDel(), находящейся в модуле VariableModule. Эта процедура по идентификатору предприятия находит связи в других таблицах и удаляет те, которые относятся к этому предприятию. При удалении участка вызывается функция удаления участка UchDel, которая работает аналогично функции удаления предприятия. 4. frmUchList Форма во многом схожа с frmPredList, только меняются точки доступа к базе данных. При нажатии на кнопку удаление участка запускается вышеупомянутая функция удаления участков. 5. frmNewPredAdd Форма позволяет добавлять новые предприятия. После ввода необходимых данных происходит добавления строки в таблицу предприятий, а также строки в таблицу связи с адресами в зависимости от количества введенных адресов. Необходимые ID передаются из формы frmAddrAdd, описанной ниже. Главная функция - SaveChanges(), проверяет допустимость введенных значений и производит необходимые манипуляции с таблицами. 6. frmNewUchAdd Добавляет участок к множеству участков предприятия. Отличается от frmNewPred наличием возможности добавить участок, хотя само добавление реализует форма frmUchShapeAdd. Также основные действия происходят в функции SaveChanges(). 7. frmAddrAdd Работа одновременно со всеми таблицами Улиц и Адресов. То есть нахождение по связям соответствующие записи и их представление в выпадающих списках формы. Также необходимо проверять наличие в базе введенного адреса и добавление нового в случае необходимости. Основную работа происходит в момент загрузки и в момент добавления результата. 8. frmUchShapeAdd Форма позволяет выбрать некоторый полигон для добавлению в слой участков предприятий. При помощи функции SetOneLayVis() происходит скрытие всех слоёв, кроме выбранного для упрощения выбора участка. Функция RestoreLayersState() производит последующее восстановления состояния слоёв. При нажатии на кнопку Указать графику активируется инструмент, и пользователь указывает точку на карте. При помощи этой точки происходит выбор элементов на карте. Функция GetSelectedItem() получает из слоя необходимую информацию, если выбраны оказались более одного участка, то имеется возможность выбрать тот участок, который нужен. При помощи функций SetExtent() и ShowGraphic() происходит позиционирование на выбранном участке. 9. frmPredChose и frmUchChose Позволяют выбрать предприятие либо участок некоторого предприятия для дальнейшего использования 10. frmPiecesWork При помощи двух вышеупомянутых форм происходит выбор участка, санитарнозащитная зона которого будет подвергнута разбиению на кусочки. 11. frmPiecesCreate Позволяет выбрать вычитаемые слои и произвести разбиение СЗЗ. Список слоёв для вычитания организован аналогично форме frmProperties. Также имеется функция сохранения результата в графический файл, формат jpg. Дополнительный модуль VariableModule.bas содержит: m_pApp - ссылка на приложение ArcMap Type TTableId - для поиска таблиц PredpDel(iPredpID As Integer) - удаление предприятия по ID UchDel(iUchID As Integer) - удаление участка по ID Function GetLayNumByName(sDestLayName As String) As Integer получение номера слоя по его имени Sub RefreshView() - обновление экрана    Книги, научные публикации