Разработка специализированной системы визуализации и анализа городской среды

Автор работы: Пользователь скрыл имя, 06 Января 2013 в 23:20, реферат

Краткое описание

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

Вложенные файлы: 1 файл

Tekst.docx

— 2.90 Мб (Скачать файл)
    • Пространственные таблицы PostgreSQL с использованием PostGIS, векторные форматы, поддерживаемые установленной библиотекой OGR, включая shape-файлы ESRI, MapInfo, SDTS (Spatial Data Transfer Standard) и GML (Geography Markup Language)
    • Форматы растров и графики, поддерживаемые библиотекой GDAL (Geospatial Data Abstraction Library), такие, как GeoTIFF, Erdas IMG, ArcInfo ASCII Grid, JPEG, PNG

 

  1. Управление данными: создание, редактирование и экспорт

В QGIS можно создавать и  редактировать векторные данные, а также экспортировать их в разные форматы. Чтоб иметь возможность  редактировать и экпортировать  в другие форматы растровые данные, необходимосначала импортировать  их в GRASS. QGIS предоставляет следующие  возможности работы с данными, в  частности:

    • инструменты оцифровки для форматов, поддерживаемых библиотекой OGR, и векторных слоев GRASS
    • создание и редактирование shape-файлов и векторных слоев GRASS
    • геокодирование изображений с помощью модуля пространственной привязки
    • визуализация и редактирование данных OpenStreetMap
    • создание слоёв PostGIS из shape-файлов
    • обработка слоёв PostGIS
    • управление атрибутами векторных данных с помощью таблицы атрибутов
    • сохранение снимков экрана как изображений с пространственной привязкой

 

    1. Краткий обзор С#

C#  — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).

    C# разрабатывался  как язык программирования прикладного  уровня для CLR и, как таковой,  зависит, прежде всего, от возможностей  самой CLR. Это касается, прежде  всего, системы типов C#, которая  отражает BCL. Присутствие или отсутствие  тех или иных выразительных  особенностей языка диктуется  тем, может ли конкретная языковая  особенность быть транслирована  в соответствующие конструкции  CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился  и сам C#; подобного взаимодействия  следует ожидать и в дальнейшем. (Однако эта закономерность была  нарушена с выходом C# 3.0, представляющим  собой расширения языка, не  опирающиеся на расширения платформы  .NET.) CLR предоставляет C#, как и всем  другим .NET-ориентированным языкам, многие возможности, которых лишены  «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др. [9]

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

 

 

 

 

 

 

 

 

 

 

    1. Обзор библиотеки MapWindow

Библиотека MapWindow  разрабатывается Geospatial Software Lab университета штата Айдахо. Её основа – элементы управления ActiveX, которые могут быть помещены на форму приложения для отображения, управления и иной работы с пространственными данными. Библиотека разработана для языков C# и VB.NET.

MapWindow поддерживает работу со следующими форматами данных : 
1) векторные: ESRI Shapefile, Postgis (через экспорт в shape-файл); 
2) растровые: ESRI ASCII Grid, GeoTiff, ESRI Grid, ESRI FLT, USGS STDS, PAUX, PIX, DTED, ECW, BIL, MrSID, ArcInfo Grid, ERDAS Imagine img, PNG, JPEG, GIF, EMF, BMP.

Рассмотрим основные классы библиотеки, которые будут часто  использоваться в разрабатываемой  системе.

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Описание структуры класса Map

Объект класса Map библиотеки MapWindow – основа разрабатываемого приложения. Ниже представлены лишь некоторые основные процедуры этого класса, предоставляющие основные возможности работы с электронной картой.

private void Configure – установка свойств карты. Определение доступных функций и режимов работы с картой. Вызывается при создании объекта класса.

public List<MapLayer> AddLayers –добавления слоев на карту. Можно добавлять слои всех типов (векторные и растровые, слои с информацией и подписями). Используется при формировании электронной карты из существующего набора слоёв.

public MapLineLayer[] GetLineLayers – возвращает массив всех векторных линейных слоёв карты.

public MapPolygonLayer[] GetPolygonLayers - возвращает массив всех векторных полигональных слоёв карты.

public MapPointLayer[] GetPointLayers - возвращает массив всех векторных точечных слоёв карты.

public void AddLabels – добавляет на карту слой с подписями (так же возможно добавление через AddLayers). Возможен вывод различных полей атрибутивных таблиц объектов, а так же работа с регулярными выражениями и фильтрами.

public void ClearLabels – очищает карту (все слои) от подписей объектов.

public void ZoomToMaxExtent - возвращение карты в ее изначальный масштаб. В нашей программе вызывается при нажатии на кнопку «Начальный масштаб»

 

public FunctionModes FunctionMode – устанавливает режим работы с картой. 

На основе стандартных, благодаря возможности наследования, в системе были разработаны следующие режимы работы с картой:

  • MyZoomInFunction – приближение карты;
  • MyZoomOutFunction – отдаление карты;
  • SelectInfoFunction – выделение объекта на карте и предоставление информации о нем.
  • MyMeasureFunction – измерение расстояний и площадей на карте

Без изменений остался  только режим «Перемещение» (PanFunction). Расширение базовых классов связано прежде всего с их ограниченной функциональностью и наличием ошибок в библиотеке MapWindow.

 

7.6.Описание структуры классов слоев

При помощи процедуры AddLayers на карту могут быть добавлены слои различного типа. Векторные слои с географическими данными определяются объектами классов MapPolygonLayer, MapPointLayer, MapLineLayer. Их интерфейсы описаны в классах IMapPolygonLayer, IMapPointLayer, IMapLineLayer, которые являются производными от IMapFigureLayer. Рассмотрим основные процедуры для работы со слоями, использующиеся в системе, на примере класса MapPointLayer, а так же его свойства.

bool  IsVisible – определяет видимость загруженного на карту слоя. Используется в системе для отображения нужных слоев при различном масштабе, а так же при использовании фильтров.

bool SelectionEnabled – возможность выбора объектов слоя. При установке значения false слой, по сути, представляет из себя обыкновенное изображение, работа с объектами которого не доступна. Используется в системе для предоставления пользователю возможности работы только с необходимыми слоями, а так же для использования других слоев как фоновое изображение.

bool EditMode – в системе используется для включения/выключения режима отображения визуальной аналитики.

bool ShowLabels – отображение подписей объектов слоя.

Symbolizer – свойтво слоя, задающее параметры визуального отображения объектов: цвет, ширина границ, параметры заливки и т.п. (присваиваются объекты классов PointSymbolizer, LineSymbolizer, PolygonSymbolizer)

 

8. СТРУКТУРНАЯ  ОРГАНИЗАЦИЯ ПРОГРАММЫ

8.1. Основное окно программы. Форма «MainForm»

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

Работа с картой и слоями.

private void loadArea - процедура добавления на карту слоя с районами города. Для каждого слоя карты написана своя процедура (loadCity, loadMainStreet, loadBuildings и т.д.), так как каждый слой имеет свои особенности отображения. В процедуре устанавливаются различные параметры отображения объектов слоя, такие как цвет, параметры заливки, отображение границ, толщина линий и т.д. Так же загружается атрибутивная таблица слоя, на основе данных которой определяется отображение объектов для визуального анализа. Тут же задаются параметры отображения подписей слоя: параметр который будет отображаться как подпись, свойства шрифта и т.д.

private void InvisibleLayers – процедура, делающая невидимым все слои, добавленные на карты. Т.к. слоев может быть очень много, то для удобства отображения на карте только нужных остальные делаются невидимыми. После вызова процедуры нужные слои делаются видимыми.

private void selectedFalse – процедура, запрещающая выделять объекты всех слоев. После вызова процедуры нужные слои делаются активными для выделения.

private void map_click – процедура, обрабатывающая нажатие кнопок мыши по карте. В зависимости от выбранного режима работы с картой происходят различные события. Именно здесь происходит анализ масштаба карты и определение слоёв, которые должны отображаться в данный момент.

Обработка событий  верхней панели управления картой.

private void cmdZoomIn_Click – процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Приблизить» на панели инструментов. Переводит карту в режим работы MyZoomInFunction.

private void cmdZoomOut_Click - процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Отдалить» на панели инструментов. Переводит карту в режим работы MyZoomOutFunction.

private void cmdMaxExtents_Click - процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Начальный масштаб» на панели инструментов. Возвращает карту в начальный масштаб.

private void cmdPan_Click - процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Перемещение» на панели инструментов. Переводит карту в режим работы PanFunction.

private void cmdSelect_Click- процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Информация об объекте» на панели инструментов. Переводит карту в режим работы SelectInfoFunction.

private void cmdCalc_Click- процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Калькулятор» на панели инструментов. Переводит карту в режим работы MyMeasureFunction.

private void cmdPrint_Click - процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Печать». Открывает новое окно печатной формы.

private void cmdFind_Click - процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Поиск». Открывает новое окно поиска объектов на карте.

private void cmdExit_Click- процедура, обрабатывающая событие происходящее при нажатие мышью на кнопке «Выход». Закрывает все окна программы.

Обработка событий  левой панели управлением отображения  карты

private void btnFind_Click- процедура, вызываема при нажатии на кнопку «Найти». Находит объект на карте по введенному адресу, приближает до нужного масштаба.

private void checkLabels_CheckedChanged- процедура, вызываемая при нажатии на кнопку «Подписи». Включает/отключает отображение подписи объектов на карте.

private void checkVisual_CheckedChanged- процедура, вызываемая при нажатии на кнопку «Визуальный анализ». Включает/отключает визуализацию объектов на карте. При включении открывает панель выбора параметра визуализации.

rivate void checIco_CheckedChanged- процедуры, вызываемая при нажатии на кнопку «Пиктограммы». Включает/отключает отображение на карте пиктограмм различных объектов. При включении открывается окно выбора групп объектов, которые будут показаны на карте.

private void tram_CheckedChanged- процедура, вызываемая при нажатии на кнопку «Обществееный транспорт». Включает/отключает отображение на карте маршрутов и остановок общественного транспорта. При включении панель с выбором отображаемых типов транспорта становится активной.

private void traffic_CheckedChanged- процедура, вызываемая при нажатии на кнопку «Пробки». Включает/отключает отображение на карте объектов, которые выбраны на панели «Пробки». При включении панель становится активной.

 

8.2. Окно информации  об объекте. Форма «MyFeatureIdentifire»

В данной главе опишем основные методы, процедуры и классы, используемые при создании формы информации о  выбранном на карте объекте.

public virtual void Add – добавление информации о выбранном объекте в окно формы. На данном этапе разработки программы, пользователь имеет возможность только просматривать информацию, не меняя её, поэтому данная процедура является единственной в классе MyFeatureIdentifire (не считая служебных, таких как InitializeComponent, OnClosing и т.п.)

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

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