17724

Визуализация информационной системы городской среды

Дипломная

Информатика, кибернетика и программирование

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

Русский

2015-01-19

216 KB

3 чел.

Визуализация информационной системы городской среды


РЕФЕРАТ

Арефьев А.А. ВИЗУАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ ГОРОДСКОЙ СРЕДЫ, квалификационная работа на степень бакалавра наук: стр.85, рис. 2.

Ключевые слова: ИНФОРМАЦИОННАЯ ВИЗУАЛИЗАЦИЯ, ГЕОИНФОРМАЦИОННАЯ СИСТЕМА, ЭЛЕКТРОННАЯ КАРТА, ИНФОРМАЦИОННАЯ ПОДДЕРЖКА ПОЛЬЗОВАТЕЛЯ

Объект исследования – геоинформационные системы.

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

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

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


СОДЕРЖАНИЕ

ВВВЕДЕНИЕ………………………………………………………………………...4

  1.  ГИС КАК СРЕДСТВО ВИЗУАЛИЗАЦИИ ДАННЫХ……………………..5
  2.  Введение в ГИС………………………………………………………...5
  3.  Основные понятия……………………………………………………...7
  4.  Модели ГИС…………………………………………………………….9
  5.  Послойная организация данных……………………………………..11
  6.  Визуальная обработка информации в ГИС………………………….12
  7.  ГИС И БИЗНЕС……………………………………………………………...15
  8.  АНАЛИЗ ФУНКЦИЙ  ГИС…………………………………………………19
  9.  ОПИСАНИЕ ПРОЕКТА СИСТЕМЫ………………………………………22
  10.  Описание электронной карты……………………………………………22
  11.  Описание интерфейса программы……………………………………….24
  12.  ПРИНЦИПЫ ПОСТРОЕНИЯ ЭФФЕКТИВНЫХ

ВИДОВ ОТОБРАЖЕНИЯ ИНФОРМАЦИИ………………………………27

  1.  ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ…………………...30
  2.  Формат карт shape…………………………………………………….31
  3.  Краткий обзор C#..................................................................................34
  4.  Обзор библиотеки MapWindow……………………………………...36
  5.  СТРУКТУРНАЯ ОРГАНИЗАЦИЯ  ПРОГРАММЫ………………………37
  6.  Описание структуры класса Map…………………………………….37
  7.  Описание структуры классов слоев…………………………………39
  8.  Описание классов форм приложения MainForm и  

MyFeatureIdentifier……………………………………………………40

ЗАКЛЮЧЕНИЕ…………………………………………………………………….42

ЛИТЕРАТУРА……………………………………………………………………...43

ПРИЛОЖЕНИЕ 1…………………………………………………………………..44

ПРИЛОЖЕНИЕ 2…………………………………………………………………..56

ВВЕДЕНИЕ

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

Наша задача – исследование возможностей применения методов информационной визуализации, в частности геоинформационной визуализации, в сфере торговли недвижимостью (квартиры, офисы и другие объекты). Частично эту задачу выполняют такие системы как 2Gis. Однако, они заведомо многофункциональны и нуждаются в дополнительных настройках. Их главная задача – предоставление информации, а не поддержка работы бизнесмена и потребителя услуг.

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

1. ГИС КАК СРЕДСТВО ВИЗУАЛИЗАЦИИ ДАННЫХ

1.1. Введение в ГИС

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

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

• изменяемости масштаба;

• преобразования картографических проекций;

• варьирования объектным составом карты;

• возможности опрашивать через карту в режиме реального времени многочисленные базы данных;

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

• легкости внесения любых изменений.

1.2. Основные понятия ГИС

Рассмотрим основные понятия ГИС, в том или ином виде присутствующие во всех современных геоинформационных системах.

Данные

В ГИС данные делятся на две категории:

•  пространственные (местоположение);

•  семантические (атрибуты).

Объекты

Пространственные данные включают географические объекты, представляемые:

•  точками;

•  линиями;

•  полигонами.

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

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

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

другое.

Слой

Слои в карте подразделяются на два основных вида - растровые и векторные.

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

Растровые слои представляют из себя сплошные изображения. Они не могут содержать объекты. Однако они могут служить фоном для векторных слоев.

Объект слоя

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

Легенда карты

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

Карта

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

Электронную карту в ГИС можно рассматривать как

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

являются:

•  графическая коммуникация пространственных отношений и распределений;

•  улучшение возможности анализа, обработки и отображения

геоинформационных данных;

•  визуальное отображение цифровых моделей явлений, невидимых для человеческого глаза;

•  автоматизация отображения и картографического анализа в системах управления; исследование объектов, явлений и процессов с учетом динамики их развития и возможного использования;

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

1.3. Модели ГИС

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

•  растровая модель;

•  векторная нетопологическая модель;

•  векторная топологическая модель.

Все эти модели взаимно преобразуемы. Тем не менее, при получении каждой из них необходимо учитывать их особенности. В ГИС форме представления координатных данных соответствуют два основных подкласса моделей - векторные и растровые (ячеистые или мозаичные). Возможен класс моделей, которые содержат характеристики как векторов, так и мозаик. Они называются гибридными моделями.

Между векторными и растровыми изображениями имеется различие, характерное именно для ГИС. Растровые изображения отображают поля данных, т.е. носят полевой характер. Векторные изображения в ГИС, как правило, отображают геоинформационные объекты, т.е. носят объектный характер.

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

Растровые модели имеют следующие достоинства:

• растр не требует предварительного знакомства с явлениями, данные собираются с равномерно расположенной сети точек, что позволяет в дальнейшем на основе статистических методов обработки получать объективные характеристики исследуемых объектов. Благодаря этому растровые модели могут использоваться для изучения новых явлений, о которых не накоплен материал. В силу простоты этот способ получил наибольшее распространение;

• растровые данные проще для обработки по параллельным алгоритмам и этим обеспечивают более высокое быстродействие по сравнению с векторными;

• некоторые задачи, например создание буферной зоны, много проще решать в растровом виде;

• многие растровые модели позволяют вводить векторные данные, в то время как обратная процедура весьма затруднительна для векторных моделей;

• процессы растеризации много проще алгоритмически, чем процессы векторизации, которые зачастую требуют экспертных решений.

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

1.4. Послойная организация данных

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

1.5. Визуальная обработка информации в ГИС

Одним из противоречий большинства существующих информационных систем является противоречие между высокоскоростной обработкой данных в компьютерной среде и низкой пропускной способностью канала "человек - компьютер", особенно в режимах интерактивной обработки. Для повышения производительности интерактивной обработки предлагают разные подходы. Одним из таких является метод визуальной обработки информации, основанный на выделении и обобщении необходимых данных и представлении их в визуальной форме. Данные, представление в графическом виде позволяют выявлять отдельные явления на порядки быстрее, чем анализ табличной или текстовой информации. Эффективность визуальной обработки информации выражается в том, что она позволяют подключить к активной работе по принятию решения резервы образного, ассоциативного мышления. Представление ситуации в виде образов обобщает информацию и позволяет принимать решение специалисту в данной предметной области. Визуальная обработка информации представляет собой комплекс технологий, основанных на: группировании и обобщении исходных данных и сопоставление характеристикам данных графических образов; применении методов компьютерной графики для обобщения, анализа и представления информации; применении объектно-ориентированного подхода для построения моделей графических и неграфических объектов; применении современных интеллектуальных или полуинтеллектуальных графических интерфейсов. Можно сказать, что визуальная обработка основана на использовании развитых систем компьютерной графики, включающих в свой состав базы данных моделей (шаблонов - объектов) и базы данных процедур (методов обработки). Примером такого подхода может служить визуальное программирование, которое допускает написание программ традиционным способом и дополнительно к этому позволяет оперативно создавать программные проекты без использования традиционного написания программ с созданием необходимого графического интерфейса. Визуальная обработка на уровне пользователя упрощает процесс обработки данных и снижает уровень, требуемых при обычных методах обработки, специальных знаний в области программирования и предметной области. Визуальная обработка информации основана на использовании дополнительных графических интерфейсов, позволяющих обобщать данные в удобном для пользователя виде и избегать по мере возможности вопросов, требующих специальной подготовки в данной предметной области. Эффект от технологии визуальной обработки информации во многом зависит от развитости используемых методов сбора информации, структурирования данных, построения сценариев и применяемых технологий. Большой объем достоверной информации о различных аспектах явления - признак устойчивости его динамики, залог эффективности принимаемых корпоративных решений. На ней можно построить надежную модель развития явления. При малом количестве достоверной информации особого внимания заслуживают некоторые подобласти методов искусственного интеллекта. ГИС как интегрированная информационная система включает в свой состав систему компьютерной графики и базы данных. По этой причине визуальная обработка информации в ГИС - естественное расширение возможности ее технологий. Именно это свойство делает привлекательными и доступными ГИС для широкого круга пользователей, от которых не требуется знаний ни в геодезии, ни в картографии. Для массового пользователя ГИС появились именно как системы поддержки принятия решений, использующие визуальные методы деловой и компьютерной графики. С этих позиций ГИС можно рассматривать как особый вид систем компьютерной графики. Принципиальным является то, что ГИС позволяет визуально представлять разные объекты и явления в единой системе поверхности Земли. Основой визуальной обработки информации служат графические модели, хранимые в ГИС. Как уже отмечалось это цифровые карты и цифровые модели.

Визуальная обработка информации позволяет пользователю, не рассматривая атрибутивные табличные данные, работать с графическими данными, что существенно повышает скорость обработки и анализа данных. Например, классическая организация запросов в БД требует использования специальных языков SQL или QBE. ГИС обладает этими возможностями как любая информационная система. Однако дополнительно к этому она позволяет организовывать запросы только на основе манипуляций с графическими данными и графическим интерфейсом. При этом результат запроса может быть представлен как в табличном, так и в графическом виде. Например, поиск объекта в заданной зоне. В обычной базе данных результатом поиска может быть таблица, совокупность таблиц, справка. В ГИС результатом поиска является фрагмент территории с искомым объектом. Для данного объекта по мере необходимости могут быть выведены все атрибуты, хранимые в базе данных, а также выполнены расчеты, показывающие, например, его удаление от другого объекта. Фрагмент территории может быть детализован для выявления подробностей или наоборот переведен в более мелкий масштаб и генерализован. При этом может быть получена визуальная совокупность детализованных фрагментов с общей генерализованной картиной в мелком масштабе. Следует помнить, что визуальная обработка использует концепцию объектно-ориентированного подхода. Последний требует более глубокой проработки создания информационной системы, включая ГИС. Применение визуальной обработки информации является эффективным методом использования интеллектуального потенциала, информационных потоков, телекоммуникаций, средств мультимедиа и геоинформационных технологий при управлении и поддержке принятия решений. Специалисты различных областей уже начинают осознавать важность данного компонента в системе управления и в следствии этого все большее внимание уделяют геоинформационым системам как системам управления и поддержки принятия решений.

2.ГИС И БИЗНЕС

ГИС может помочь делать успешный (доходный) бизнес всем предпринимателям. ГИС – это инструментальное средство для управления бизнес информацией любого типа с точки зрения ее пространственного местоположения. Приложения этой технологии в сфере бизнеса разнообразны. Основные решаемые с ее помощью задачи можно сгруппировать по ответам на базовые вопросы: "Где?", "Кто (или Что)?" и "Как?". Вы сможете: проследить, где проживают ваши клиенты, кто они такие, каковы их потребности и финансовые возможности; определить расположение магазинов – ваших и ваших конкурентов; узнать, как точнее направить маркетинговую активность и как получить от нее наибольшую отдачу, как оптимизировать области продаж и смоделировать последствия принимаемых решений; подобрать дом для покупки и определить кратчайший маршрут проезда к нужному месту. Впрочем, эти вопросы общие, они присутствуют и в других областях применения ГИС, а не только в сфере бизнеса, поскольку большая часть информации, с которой мы имеем дело, в явном или в неявном виде привязана к определенному месту или конкретной территории.

На подобные вопросы ГИС отвечает с большей эффективностью и определенностью, чем любые другие информационные технологии, интегрируя широкий набор данных, хранящихся в электронных таблицах и других видах документов, в одном удобном и легком для понимания формате – карте. С помощью ГИС Вы можете получить наиболее наглядное представление об этих данных. Сможете выделить наиболее интересные для Вас данные, меняя значки соответствующих символов, их цвет и их значения в таблицах баз данных. Сможете создать и поместить на карту или рядом с ней поясняющие диаграммы, графики, таблицы, чертежи и снимки. Сможете совместно отобразить разные типы данных в одном географическом пространстве, либо выделить из базы данных и отобразить на карте данные, связанные с конкретной тематической задачей. И, наконец, отобразив нужные данные на карте или нескольких картах, провести их полноценный анализ. ГИС позволяет создавать и изменять карты "на лету", моментально переходить от объекта или слоя карты к соответствующей строке или таблице базы данных и из записи в базе данных к связанному с ней объекту на карте.

Эффективность решения стоящих перед бизнесменами задач с помощью ГИС значительно повышается. Этому способствует все большая доступность и достоверность исходных данных, а также появление все более мощных и, одновременно, достаточно дешевых персональных компьютеров и простых в использовании современных программных продуктов. Для поддержки принятия решений в сфере бизнеса могут успешно применяться ГИС продукты общего назначения, имеющие средства настройки под конкретные задачи и возможности взаимодействия с другими применяемыми в этой области информационными технологиями: технологией управления активами предприятия, например SAP R/3; технологией генерирования отчетной документации, например Seagate Crystal Reports; системами управления базами данных (СУБД), технологиями инженерного проектирования (САПР); технологией компрессии данных, например MrSID, и др. Имеются и готовые специализированные ГИС пакеты, обеспечивающие решение типовых бизнес задач.

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

Теперь ГИС, больше чем когда-либо, означает реальный бизнес. Ее внедрение приносит доход и, порой, немалый. Многонациональных корпорации и малые предприятия, магазины и больницы, риэлторские фирмы и транспортные предприятия, страховые обществ и предприятия энергетического комплекса, телефонные и телекоммуникационные фирмы - самые разные компании все чаще используют возможности географического анализа для решения свои деловых задач. За счет этого они получают преимущество в конкурентной борьбе, так как быстрее находят оптимальные решения, выявляют новые рынки и новые перспективные области сбыта своих товаров и услуг, лучше обслуживают заказчиков, точнее направляют рекламные компании, лучше контролируют и оптимально перераспределяют материальные и финансовые ресурсы.

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

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

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

3. АНАЛИЗ ФУНКЦИЙ СИСТЕМЫ

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

На динамично развивающемся рынке торговой недвижимости России аналитические отделы риэлторских фирм оперируют огромными объемами информации, поскольку от своевременности обработки этих данных во многом зависит успех развития бизнеса. Процесс автоматизации обработки информации в большинстве фирм рынка недвижимости построен на основе средств СУДБ и БД. Опыт работы этих компаний показывает, что табличные данные без привязки к географической основе не дают полной картины. Поэтому в последнее время специалисты, работающие на рынке торговой недвижимости, все активнее используют в аналитической работе ГИС-технологии.

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

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

В работе аналитика ГИС является одним из наиболее простых и удобных инструментов визуализации информации о состоянии рынка, существенно помогая выполнять прогнозирование и моделирование возможных ситуаций. Разрабатываемая нами информационная система должна позволять визуально оценить насыщенность рынка, определять зоны концентрации офисных центров, выделять наиболее интересные и перспективные районы на карте города. Все решения, принимаемые пользователями системы, должны основываться на визуальном анализе. Источником информации при этом является не только карта с набором географических объектов, но и статистические данные. Всё это позволит сделать правильный и надежный вывод.

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

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

многослойность карты;

система фильтров отображения объектов;

система визуального анализа выдаваемой информации.

4.ОПИСАНИЕ ПРОЕКТА СИСТЕМЫ

4.1. Описание электронной карты

Как уже говорилось, основа любой ГИС – это электронная карта, состоящая из различных слоёв. Основные преимущества такого подхода были описаны выше в главе «Послойная организация данных». Поэтому, одним их основных этапов разработки системы было создание слоёв электронной карты Екатеринбурга. Ниже опишем основные слои, присутствующие в системе.

City – самый первый слой, появляющийся при открытии приложения. Представляет из себя слой полиполигонов. Содержит 1 объект – город Екатеринбург. Был вынесен в отдельный слой с различными целями. Во-первых, предоставить пользователю общую информацию о городе (дата основания, общая площадь и население, официальный сайт города и т.д.). Во-вторых, это позволяет в дальнейшем добавлять на карту другие города области ( например города спутники: Березовский, верхняя Пышма и т.д.), не затрагивая при этом другие слои карты.

Area – слой районов города. Состоит из 7 полигональных объектов: Ленинский, Верх-Исетский, Железнодорожный, Орджоникидзевский, Кировский, Октябрьский и Железнодорожный районы. При отображении слоя можно выбрать один из районов и двойным щелчком мыши открыть информацию о нем. Район – немаловажный фактор на рынке торговли недвижимостью, часто являющийся основополагающим при принятии решения. Для визуального анализа объектов слоя, на данном этапе разработки системы, был выбран такой параметр как население. Безусловно, такой анализ вряд ли будет полезен для реальных пользователей, но, к сожалении, на данном этапе разработки мы не обладаем какими-то конкретными статистическими данными, которые можно было бы использовать в системе.

MainRoads, BigRoads, Roads – слои дорожной сети Екатеринбурга, появляющиеся при разном масштабе карте. Каждая улица представляет из себя ломаную полилинию, каждый слой – набор таких полилиний. Для визуального анализа используется такой параметр как уровень пробок. Данные берутся произвольными, но могут быть с легкостью изменены в атрибутивной таблице объектов слоя.

Water – слой водоемов города: пруды, реки, озёра и т.д. объекты представлены полигонами. Визуальный анализ отсутствует.

Buildings – слой зданий. Безусловно, воспроизвести все объекты в рамках разработки нашей системы не возможно. Поэтому был выбран участок Ленинского района, на карту которого были нанесены дома и другие здания. Объекты слоя – полигоны. Для анализа были выбраны такие параметр как средняя цена за 1кв.м. и этажность здания.

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

4.2. Описание интерфейса программы

Основное окно программы изображено на рисунке 4.1.

Рисунок 4.1.

Оно состоит из трёх основных частей. В основной части находится электронная карта, сверху – панель инструментов для работы с ней, справа – панель для настройки отображения объектов карты (подписи, визуальный анализ данных, фильтры). Структура электронной карты была описана выше, поэтому перейдем к описанию панелей инструментов и настроек.

Верхняя панель содержит следующие инструменты для работы с картой:

ZoomIn – один из основных элементов управления картой. В системе используется, так называемое, семантическое масштабирование данных, то есть при определенном масштабе отображаются определенные слои электронной карты. В данном режиме работы нажатие левой кнопки мыши – приближение, правой – отдаление.

ZoomOut – режим работы с картой, аналогичный ZoomIn, отличающийся только назначением кнопок мыши: нажатие левой – отдаление,  правой – приближение.

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

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

Select – режим выбора объектов карты. Для просмотра подробной информации необходимо два раза нажать левой кнопкой мыши на объекте. При этом объект на карте выделяется цветом.

Рассмотрим теперь левую панель программу. С помощью ее можно управлять различными свойствами отображения карты. На данный момент присутствуют следующие свойства:

отображение подписей объектов;

визуальный анализ объектов слоя.

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

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

Рисунок 4.2.

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

Текстовое описание объекта так же хранится в файле, путь на который указан в атрибутивной таблице. Все текстовые файлы хранятся в папке Texts.

5. ПРИНЦИПЫ ПОСТРОЕНИЯ ЭФФЕКТИВНЫХ ВИДОВ ОТОБРАЖЕНИЯ ИНФОРМАЦИИ

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

  1.  Принцип лаконичности.

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

  1.  Принцип обобщения и унификации.

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

  1.  Принцип акцента на основных смысловых элементах.

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

  1.  Принцип автономности.

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

  1.  Принцип структурности.

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

  1.  Принцип стадийности.

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

  1.  Принцип использования привычных ассоциаций и стереотипов.

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

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

Форма, пространство и визуальное взаимодействие являются средствами для визуализации идей. Визуальная идея, дизайн и исполнение - три главных этапа в процессе визуализации.

Все эти принципы использовались в ходе проектирования  нашей геоинформационной системы при дизайне слоёв электронной карты и разработки интерфейса программы.

6. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ

Данная глава описывает средства разработки ГИС и объясняет, чем был обоснован этот выбор. Итак, основным языком разработки был избран язык программирования С# и платформа .NET, средой программирования была выбрана Visual Studio 2008. Выбор был продиктован желанием освоить высокоуровневый язык программирования на примере написания графического приложения, а так же нежеланием сталкиваться с недостатками С++ и Java. С другой стороны, полностью отсутствовал опыт работы с платформой .NET.

6.1. Формат карт shape

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

В системе векторные нетопологические данные представляются в формате shape-файлов геоинформационной системы ArcView фирмы ESRI. Shape-файлы бывают трёх основных типов:

Файл полиполилиний. Полиполилиния – это фигура, состоящая из одной или более полилиний.

Файл полиполигонов. Полиполигон – это фигура, состоящая из одного или более полигонов.

Файл мультиточек. Мультиточка – это фигура, состоящая из одной или более точек.

Все эти типы имеют по три подтипа в зависимости от размерности пространства, в котором задаются объекты. В простых shape-файлах точки задаются в двумерном пространстве в виде пары чисел (X,Y), в shape-файлах с мерой точки задаются в трёхмерном пространстве в виде тройки чисел (X,Y,M), в shape-файлах с мерой и высотой точки задаются в четырёхмерном пространстве в виде четверки чисел (X,Y,Z,M).

В shape-файлах хранится нетопологическая геометрическая и атрибутная информация пространственных объектов в базах данных. Геометрия составляющих фигур представляется как набор плоских координат.

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

Shape-файлы могут хранить точечные, линейные и площадные фигуры. Смешение разных типов фигур в одном файле не допускается. Атрибуты файлов содержаться в формате файла таблиц dBase®. Каждая атрибутная запись хранится в отношении «один-к-одному» с соответствующей записью геометрии фигуры.

В настоящее время формат shape-файлов широко поддерживается многими программными продуктами фирмы ESRI и других производителей. Shape-файлы используются в таких системах, как продукты ESRI: ArcInfo® GIS, ArcSDE ™ (Spatial Database Engine), ArcView ® GIS, Business Map, а также других производителей: MapInfo, Autodesk AutoMap, AutoCAD Map, Autodesk World, EASI/PACE, TNTmips, MapEdit и др.

Формат shape-файла ESRI состоит из главного файла, файла индекса, а также таблицы dBase. Все эти 3 файла должны иметь одинаковое имя, но различные расширения: .shp для главного, .shx для индексного и .dbf для файла атрибутов. Например, shape-файл, содержащий информацию о городах, должен состоять из файлов cities.shp, cities.shx и cities.dbf.

В shape-файлах используются два типа данных хранения информации: целые и вещественные, имеющие следующий формат:

Целые: знаковые 32-разрядные целые числа, занимающие 4 байта.

Вещественные: знаковые 64-разрядные вещественные числа двойной точности с плавающей запятой в стандарте IEEE, занимающие 8 байт.

В shape-файле используются два способа кодирования этих чисел, отличающихся порядком расположения байтов чисел. На платформе Intel® используется порядок от младшего байта к старшему, а на платформах Sun®, Motorola®, наоборот, – от старшего к младшему.

В ходе разработки нашей системы, мной были созданы различные shape-файлы, представляющие из себя слои электронной карты Екатеринбурга. Многие объекты, такие как например дорого, были разделены по слоям в зависимости от их значимости и других факторов.

Shape-файлы создавались в программе QGis, предназначенной для работы и создания электронных карт. Основные слои были описаны в главе «Описание проекта системы»

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

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# и др.

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

6.3. Обзор библиотеки 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.

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

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

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

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

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

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

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

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

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

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

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

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

MyZoomInFunction – приближение карты;

MyZoomOutFunction – отдаление карты;

SelectInfoFunction – выделение объекта на карте и предоставление информации о нем.

Перемещение карты использует стандартную функцию PanFunction из библиотеки MapWindow.  

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

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

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

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

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

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

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

7.3.Описание классов форм приложения MainForm и MyFeatureIdentifier

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

Класс MainForm

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

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

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

private void checkBox1_CheckedChanged- процедура, отвечающая за проверку выбора отображения подписей. Для каждой дополнительной настройки отображения карты существует такая процедура.

Класс MyFeatureIdentifire

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

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

ЗАКЛЮЧЕНИЕ

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

Создание общей базы данных географических объектов, подключение к ней нашей системы.

Добавление возможности поиска объекта по адресу, а так же поиска групп объектов по заданным параметрам (через запросы к базе данных).

Создание инструментария по измерению расстояния между объектами, их площади.

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

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

ЛИТЕРАТУРА

  1.  Белков А.В. , Грызлова Т.П. , Шаров В.Г.  - Проблемы и методы построения эффективных визуальных информационных систем.
  2.  Авербух В.Л. – конспект лекций по спецкурсу «Визуализация программного обеспечения», Уральский Государственный Университет им. А.М.Горького, г.Екатеринбург, 2010г.
  3.  Смирнов Н.В. – конспект лекций «Проектирование информационных систем», Балтийский Государственный Технический Университет, С.Петербург, 2008г.
  4.  Гохман В. - Общегородские ГИС, статья из журнала ArcReview ? 3 (46) 2008
  5.  Андрианов В. - ГИС в торговле и сфере услуг,  статья из журнала ArcReview ? 4 (35) 2005
  6.  А.А. Питенко – Нейросетевой анализ в геоинформационных системах, Красноярск, 2010г.
  7.  http://www.gis-tech.ru/
  8.  Luo Yingwei, Wang Xiaolin, Xu Zhuoqun  - Gis Components And Map Visualization Objects

ПРИЛОЖЕНИЕ 1

Класс MainForm (основное окно программы)

public partial class MainForm : Form

   {

       public int zoomCount=0;

       private int mode = 0;

       

       public LabelLayer Label;

       public MapFeatureLayer City;

       public MapFeatureLayer Areas ;       

       public MapFeatureLayer MainStreets ;

       public MapFeatureLayer Water ;

       public MapFeatureLayer BigStreets;

       public MapFeatureLayer Streets;

       public MapFeatureLayer Buildings;

       public MapFeatureLayer StreetsPoly;

       public MapFeatureLayer Razmetka;

       public MapFeatureLayer Icons;

       public MainForm()

       {

           InitializeComponent();

           map.MapFunctions.Add("SelectInfo", new SelectInfoFunction(map));

           map.MapFunctions.Add("MyZoomOut", new MyZoomOutFunction(map));

           map.MapFunctions.Add("MyZoomIn", new MyZoomInFunction(map));

           map.FunctionMode = FunctionModes.None;

       }

    

       private void MainForm_Load(object sender, EventArgs e)

       {   

           loadCity();

           loadAreas ();

           loadMainStreets();

           loadBigStreets();

           loadStreets();

           loadBuildings();

           loadStreetsRazmetka();

           loadIcons();

           

           City.IsVisible = true;

           Areas.IsVisible = false;

           MainStreets.IsVisible = false;

           Water.IsVisible = false;

           BigStreets.IsVisible = false;

           Streets.IsVisible = false;

           Buildings.IsVisible = false;

           StreetsPoly.IsVisible = false;

           Razmetka.IsVisible = false;

           Icons.IsVisible = false;

           selectedFalse();

           City.SelectionEnabled = true;

          map.Invalidate();

           

           Rectangle r = map.MapFrame.View;

           int w = r.Width;

           int h = r.Height;

             

               r.Inflate((int)(r.Width / 4),(int)( r.Height / 4));

               map.MapFrame.View = r;

               map.MapFrame.ResetExtents();

       }

       private void loadCity()

       {

           Color color1 = Color.FromArgb(250, 240, 145);

           PolygonSymbolizer style = new PolygonSymbolizer(color1);

           style.OutlineSymbolizer = new LineSymbolizer(Color.Black,2);

           City = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\City.shp", false, prog));        

           

           MapLabelLayer labelLayer = new MapLabelLayer();

           LabelSymbolizer lb = new LabelSymbolizer();

           lb.FontSize = 15;

           LabelCategory category = labelLayer.Symbology.Categories[0];

           category.Expression = "[name]";

           labelLayer.Symbolizer = lb;

           category.Symbolizer.Orientation = ContentAlignment.MiddleCenter;

           MapLabelLayer labelLayer2 = labelLayer;

 

           City.LabelLayer = labelLayer;

           City.ShowLabels = true;

           City.Symbolizer = style;

          

       }

       private void CityAsImage()

       {

           City.IsVisible = true;

           City.SelectionEnabled = false;

           City.EditMode = false;           

           City.ShowLabels = false;

       }

       private void loadRaion()

       {

           PolygonScheme scheme = new PolygonScheme();

           Color color1 = Color.FromArgb(250, 240, 145);

           PolygonCategory pop1 = new PolygonCategory(color1, Color.Black, 2);

           pop1.FilterExpression = "[population] < 150000";

           pop1.LegendText = "pop1";

           Color color2 = Color.FromArgb(250, 230, 90);

           PolygonCategory pop2 = new PolygonCategory(color2, Color.Black, 2);

           pop2.FilterExpression = "  [population] > 150000 ";         

           Color color3 = Color.FromArgb(240, 215, 10);

           PolygonCategory pop3 = new PolygonCategory(color3, Color.Black, 2);

           pop3.FilterExpression = "  [population] > 200000 ";

           Color color4 = Color.FromArgb(215, 190, 5);

           PolygonCategory pop4 = new PolygonCategory(color4, Color.Black, 2);

           pop4.FilterExpression = "  [population] > 250000 ";

         

           scheme.ClearCategories();

           scheme.AddCategory(pop1);

           scheme.AddCategory(pop2);

           scheme.AddCategory(pop3);

           scheme.AddCategory(pop4);

           

           

           Areas = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\Raion.shp", false, prog));

           Areas.Symbology = scheme;

           

           MapLabelLayer labelLayer = new MapLabelLayer();

           LabelSymbolizer lb = new LabelSymbolizer();

           lb.FontSize = 15;

           LabelCategory category = labelLayer.Symbology.Categories[0];

           category.Expression = "[name]";

           labelLayer.Symbolizer = lb;

           category.Symbolizer.Orientation = ContentAlignment.MiddleCenter;

           MapLabelLayer labelLayer2 = labelLayer;

           PolygonSymbolizer style = new PolygonSymbolizer(color1);

           style.OutlineSymbolizer = new LineSymbolizer(Color.Black, 2);

          

           Areas.Symbolizer = style;

           Areas.LabelLayer = labelLayer;

           Areas.ShowLabels = true;

    

       }

       

       private void loadMainStreets()

       {

           LineScheme road_scheme = new LineScheme();

           Color color1 = Color.FromArgb(175, 185, 185);

           LineCategory traff1 = new LineCategory(color1, 10);

           traff1.FilterExpression = "[traffic] < 4";

           Color color2 = Color.FromArgb(135, 145, 140);

           LineCategory traff2 = new LineCategory(color2, 10);

           traff2.FilterExpression = "  [traffic] >= 4 ";

           Color color3 = Color.FromArgb(100, 115, 110);

           LineCategory traff3 = new LineCategory(color3, 10);

           traff3.FilterExpression = "  [traffic] > 8 ";

           Color color4 = Color.FromArgb(65, 70, 65);

           LineCategory traff4 = new LineCategory(color4, 10);

           traff4.FilterExpression = "  [traffic] > 12 ";

           

           road_scheme.ClearCategories();

           road_scheme.AddCategory(traff1);

           road_scheme.AddCategory(traff2);

           road_scheme.AddCategory(traff3);

           road_scheme.AddCategory(traff4);

            

             LineSymbolizer road = new LineSymbolizer(Color.Gray, 15);

           MainStreets = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\MainStreets.shp", false, prog));

           MainStreets.Symbology = road_scheme;   

           PolygonSymbolizer water = new PolygonSymbolizer(Color.LightBlue);

           water.OutlineSymbolizer = new LineSymbolizer(Color.LightBlue, 1);

           Water = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\Water.shp", false, prog));

           Water.Symbolizer = water;

          

       }

       private void loadBigStreets()

       {

              ….

….

       }

       private void loadStreets()

       {

….

….

       }

       private void loadBuildings()

       {

           PolygonSymbolizer style = new PolygonSymbolizer(Color.LightGreen);

           style.OutlineSymbolizer = new LineSymbolizer(Color.Black, 2);

           Buildings = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\Buildings.shp", false, prog));

           MapLabelLayer labelLayer = new MapLabelLayer();

           LabelSymbolizer lb = new LabelSymbolizer();

           lb.FontSize = 15;

           LabelCategory category = labelLayer.Symbology.Categories[0];

           category.Expression = "[number]";

           labelLayer.Symbolizer = lb;

           Buildings.LabelLayer = labelLayer;

           Buildings.ShowLabels = true;

           Buildings.Symbolizer = style;

       }

      

       private void loadStreetsRazmetka()

       {

           PolygonSymbolizer style = new PolygonSymbolizer(Color.Gray);

           style.OutlineSymbolizer = new LineSymbolizer(Color.Gray, 1);

           StreetsPoly = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\StreetsPoly.shp", false, prog));

           map.Layers.Add(StreetsPoly);

           LineSymbolizer razmet = new LineSymbolizer(Color.White,Color.Empty, 14 ,System.Drawing.Drawing2D.DashStyle.Dash,System.Drawing.Drawing2D.LineCap.Round);

           

           Razmetka = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\Razmetka.shp", false, prog));

                      

           Razmetka.Symbolizer = razmet;

           StreetsPoly.Symbolizer = style;

       }

       private void loadIcons()

       {

           PointScheme icon = new PointScheme();

           PointCategory ico1 = new PointCategory(Images._1,32);

           ico1.FilterExpression = "[category]  = 'pdd1'";

           PointCategory ico2 = new PointCategory(Images._2, 32);

           ico2.FilterExpression = "[category]  = 'pdd2'";

           PointCategory ico3 = new PointCategory(Images._3, 32);

           ico3.FilterExpression = "[category]  = 'pdd3'";

           PointCategory ico4 = new PointCategory(Images._4, 32);

           ico4.FilterExpression = "[category]  = 'pdd4'";

           PointCategory ico5 = new PointCategory(Images._5, 32);

           ico5.FilterExpression = "[category]  = 'pdd5'";

           PointCategory ico6 = new PointCategory(Images._6, 32);

           ico6.FilterExpression = "[category]  = 'pdd6'";

           PointCategory ico7 = new PointCategory(Images._7, 32);

           ico7.FilterExpression = "[category]  = 'pdd7'";

           PointCategory ico8 = new PointCategory(Images._8, 32);

           ico8.FilterExpression = "[category]  = 'pdd8'";

           PointCategory ico9 = new PointCategory(Images._1, 32);

           ico9.FilterExpression = "[category]  = 'pdd9'";

           PointCategory ico10 = new PointCategory(Images._10, 32);

           ico10.FilterExpression = "[category]  = 'pdd10'";

           PointCategory icoIce = new PointCategory(Images.IceCream, 48);

           icoIce.FilterExpression = "[category]  = 'IceCream'";

           PointCategory icoSand = new PointCategory(Images.Sand, 48);

           icoSand.FilterExpression = "[category]  = 'Sand'";

           icon.ClearCategories();

           icon.AddCategory(ico1);

           icon.AddCategory(ico2);

           icon.AddCategory(ico3);

           icon.AddCategory(ico4);

           icon.AddCategory(ico5);

           icon.AddCategory(ico6);

           icon.AddCategory(ico7);

           icon.AddCategory(ico8);

           icon.AddCategory(ico9);

           icon.AddCategory(ico10);

           icon.AddCategory(icoIce);

           icon.AddCategory(icoSand);

           Icons = map.Layers.Add(DataManager.DefaultDataManager.

OpenVector(@"GisData\Icons.shp", false, prog));

           Icons.Symbology = icon;

       }

       private void UncheckOtherButtonsButMe(ToolStripButton checkedButton)

       {

           foreach (ToolStripItem item in this.toolStrip1.Items)

           {

               ToolStripButton buttonItem = item as ToolStripButton;

               if (buttonItem != null)

               {

                   if (buttonItem.Name != checkedButton.Name)

                   {

                       buttonItem.Checked = false;

                   }

               }

           }

       }       

       

       private void cmdZoomIn_Click(object sender, EventArgs e)

       {

          

           if (map == null) return;

           if (cmdZoomIn.Checked == false)

           {

               UncheckOtherButtonsButMe(cmdZoomIn);

               cmdZoomIn.Checked = true;

               foreach (IMapFunction gt in map.MapFunctions.Values)

               {

                   gt.Deactivate();

                   MyZoomInFunction zf = gt as MyZoomInFunction;

                   if (zf != null)

                   {

                       zf.Activate();

                       map.Cursor = Cursors.UpArrow;

                      

                       this.mode = 1;

                       try

                       {

                           MemoryStream ms = new MemoryStream(Resource.cursorZoomIn);

                           map.Cursor = new Cursor(ms);

                       }

                       catch

                       {

                           map.Cursor = Cursors.Arrow;

                       }

                       continue;

                   }

               }

           }

       }

       private void cmdZoomOut_Click(object sender, EventArgs e)

       {

           if (map == null) return;

           if (cmdZoomOut.Checked == false)

           {

               UncheckOtherButtonsButMe(cmdZoomOut);

               cmdZoomOut.Checked = true;

               foreach (IMapFunction gt in map.MapFunctions.Values)

               {

                   gt.Deactivate();

                   MyZoomOutFunction zf = gt as MyZoomOutFunction;

                   if (zf != null)

                   {

                       zf.Activate();

                       map.Cursor = Cursors.UpArrow;

                       this.mode = 2;

                       try

                       {

                           MemoryStream ms = new MemoryStream(Resource.cursorZoomOut);

                           map.Cursor = new Cursor(ms);

                       }

                       catch

                       {

                           map.Cursor = Cursors.Arrow;

                       }

                       continue;

                       

                   }

               }

           }

       }

       private void cmdMaxExtents_Click(object sender, EventArgs e)

       {

           if ( map == null) return;

           UncheckOtherButtonsButMe(cmdMaxExtents);

           map.ZoomToMaxExtent();

           map.FunctionMode = FunctionModes.None;

           mode = 0;

           zoomCount = 0;

           InvisibleLayers();

           City.IsVisible = true;

           if (checkBox2.Checked) City.ShowLabels = true;

           else City.ShowLabels =false;

           City.SelectionEnabled = true;

           map.Invalidate();

           Rectangle r = map.MapFrame.View;

           int w = r.Width;

           int h = r.Height;

           r.Inflate((int)(r.Width / 4), (int)(r.Height / 4));

           map.MapFrame.View = r;

           map.MapFrame.ResetExtents();

       }

       

       private void cmdPan_Click(object sender, EventArgs e)

       {

           if ( map == null) return;

           if (cmdPan.Checked == false)

           {

               UncheckOtherButtonsButMe(cmdPan);

               cmdPan.Checked = true;

               

               map.FunctionMode = FunctionModes.Pan;

               mode = 0;

           }

       }

       

       private void cmdSelect_Click(object sender, EventArgs e)

       {

           if (map == null) return;

           if (cmdSelect.Checked == false)

           {

               UncheckOtherButtonsButMe(cmdSelect);

               cmdSelect.Checked = true;

               map.FunctionMode = FunctionModes.Info;

               foreach (IMapFunction gt in map.MapFunctions.Values)

               {

                   gt.Deactivate();

                   SelectInfoFunction zf = gt as SelectInfoFunction;

                   if (zf != null)

                   {

                       zf.Activate();

                       map.Cursor = Cursors.Hand;

                       mode = 0;

                       continue;

                   }

               }

           }

       }

       

     

       private void map_click(object sender, EventArgs e)

       {

           

           if (this.mode == 1 && ((MouseEventArgs)e).Button == MouseButtons.Left)

           {   

               this.zoomCount += 1;

               Console.Out.WriteLine(this.zoomCount);

           }

           else if (this.mode == 1 && ((MouseEventArgs)e).Button == MouseButtons.Right)

           {

               this.zoomCount -= 1;

               Console.Out.WriteLine(this.zoomCount);

           }

           else if (this.mode == 2 && ((MouseEventArgs)e).Button == MouseButtons.Right)

           {

               this.zoomCount += 1;

               Console.Out.WriteLine(this.zoomCount);

           }

           else if (this.mode == 2 && ((MouseEventArgs)e).Button == MouseButtons.Left)

           {

               this.zoomCount -= 1;

               Console.Out.WriteLine(this.zoomCount);

           }

           if (zoomCount == 1)

           {

               City.IsVisible = true;

               selectedFalse();

               City.SelectionEnabled = true;

                if (checkBox2.Checked) City.ShowLabels = true;

              else City.ShowLabels =false;

           }

           if (zoomCount == 2)

           {

               Areas.IsVisible = true;

               selectedFalse();

               Areas.SelectionEnabled = true;

           }

           

       private void map_2click(object sender, EventArgs e)

       {

           map_click(sender, e);

       }

       private void checkBox1_CheckedChanged(object sender, EventArgs e)

       {

           if (checkBox1.Checked)

           {

               editFalse();

               map.MapFrame.ResetExtents();

           }

           else

           {

               editTrue();

               map.MapFrame.ResetExtents();

           }

       }

       private void checkBox2_CheckedChanged(object sender, EventArgs e)

       {

           if (checkBox2.Checked)

           {

               City.ShowLabels = true;

               Areas.ShowLabels = true;

               MainStreets.ShowLabels = true;

               Water.ShowLabels = true;

               BigStreet.ShowLabels = true;

               Streets.ShowLabels = true;

               Buildings.ShowLabels = true;

 

               map.MapFrame.ResetExtents();

           }

           else

           {

               City.ShowLabels = false;

               Areas.ShowLabels = false;

               MainStreets.ShowLabels = false;

               Water.ShowLabels = false;

               BigStreet.ShowLabels = false;

               Streets.ShowLabels = false;

               Buildings.ShowLabels = false;

               map.MapFrame.ResetExtents();

           }

       }

   }

Класс MyFeatureIdentifier (окно атрибутивных данных объекта)

public class MyFeatureIdentifier : Form

   {

       private SplitContainer splitContainer1;

       private ContextMenu mnuTreeContext;

       private Dictionary<string, string> _featureIDFields;

       private MenuItem _mnuSelectMenu;

       private MenuItem _mnuAssignIdField;

       private ListBoxDialog _lstBox = new ListBoxDialog();

       private SplitContainer splitContainer2;

       private DataGridView dgvAttributes;

       private Label label1;

       private PictureBox pictureBox1;

public MyFeatureIdentifier()

       {

           InitializeComponent();

           this.splitContainer1.SplitterDistance = 450;

       }

public virtual void Add(IFeatureLayer layer, IEnvelope bounds)

       {

           Coordinate c  = new Coordinate(bounds.X,bounds.Y);

           double x = c.X;

           double y = c.Y;

           Envelope env = new Envelope(x - 1, x + 1, y - 1, y + 1);

           List<IFeature> result = layer.DataSet.Select(env);

         

           foreach (IFeature f in result)

           {

               if (f == null) return;

               DataTable dt = new DataTable();

               dt.Columns.Add("Field Name");

               dt.Columns.Add("Value");

               if (f.DataRow == null)

               {

                   f.ParentFeatureSet.FillAttributes();

               }

               DataColumn[] columns = f.ParentFeatureSet.GetColumns();

              

               for (int i = 0;i<columns.Length-2;i++)

               {

                   DataColumn fld = columns[i];

                   DataRow dr = dt.NewRow();

                   dr["Field Name"] = fld.ColumnName;

                   if (f.DataRow != null) dr["Value"] = f.DataRow[fld.ColumnName].ToString();

                   dt.Rows.Add(dr);

               }

               dgvAttributes.DataSource = dt;

               String photo = f.DataRow[columns[columns.Length-2].ColumnName].ToString();

               photo = @"Images\" + photo;

               pictureBox1.ImageLocation = photo;

               

               String text_file = f.DataRow[columns[columns.Length - 1].ColumnName].ToString();

               text_file = @"Texts\" + text_file;

               try

               {

                   StreamReader fs = new StreamReader(text_file, System.Text.Encoding.Default);

                   String text = fs.ReadToEnd();

                   label1.Text = text;

               }

               catch (ArgumentException)

               {

                   label1.Text = "Описание отсутствует";

               }

               catch (FileNotFoundException)

               {

                   label1.Text = "Описание отсутствует";

               }

               catch (DirectoryNotFoundException)

               {

                   label1.Text = "Описание отсутствует";

               }

       }

     }

  }

}


 

А также другие работы, которые могут Вас заинтересовать

29656. Монизм, дуализм, плюрализм 41.5 KB
  Структурная организация методологического знания прямо связана с теми функциями которые оно выполняет в процесс е научного познания. Рефлексия над процессом научного познания не является совершенно необходимым его компонентом. Рефлексия и осознание нужны тогда когда ставится задача построения нового научного знания или формирования принципиально нового поведенческого акта. Чем же здесь может помочь методология каковы ее функции в процессе конкретнонаучного познания Анализируя различные ответы на этот вопрос можно встретиться как с...
29657. Психологическая наука в противоположность метафизике 41 KB
  Однако масштаб абстракций и обобщений существенно ниже уже и конкретнее в эмпирической психологии чем в философской метафизике или основанной на ней априорной психологии. Примерами метафизических вопросов в психологии могут быть следующие. Номотетический и идиографический подходы в эмпирической психологии Номотетический подход Эмпирическая психология производит эмпирическое знание в рамках прежде всего номотетического подхода связанного с позитивистской и постпозитивистской философией. Идиографическое познание применяется в ряде отраслей...
29658. Эмпирическая и априорная психологии 29 KB
  Ситуация множественности методологических подходов и соответственно средств методологического анализа которые одновременно являются и истинными если это понятие вообще применимо к методологическому знанию адекватными и ложными неадекватными в зависимости от множества привходящих условий провоцирует самые разные установки исследователей и практиков относительно роли методологического знания и целесообразности его использования в конкретном исследовании а также разные методологические эмоции. Сторонники методологического...
29659. Парадигмы, аномалии, кризисы, научные революции 71.5 KB
  Это было время господства ассоцианизма взаимопроникновения идей физиологической психологии и психологии сознания но также и время после выхода основополагающих трудов Г. Эббингауза 1850 – 1909 когда появилась надежда на разработку объективного метода исследования в области психологии. То есть для него в первую очередь неприемлема именно эта характеристика естественнонаучного познания – путь выдвижения гипотез а не собственно экспериментальный метод как это иногда сегодня представляют сторонники описательной психологии функционирующей...
29660. Психология теоретическая и эмпирическая 243.5 KB
  Особая дисциплина описывающая и изучающая конкретные явления психической жизни в отличие от рациональной психологии выводящей явления из природы и сущности души. опытная школа в психологии соединила установку на эмпирическое наблюдение конкретный анализ и индуктивное познание психических явлений с учением об особой сущности этих явлений постигаемых только посредством самонаблюдения. Теоретическая психология Теоретическая психология наука предметом которой является саморефлексия психологии выявляющая и исследующая...
29661. Психология естественно-научная и гуманитарная 62.5 KB
  В первую очередь это отказ от культа эмпирических методов и связывания признака научности только с верифицируемостью знания т. Построение научного знания только на основе индуктивной логики – неприемлемый для психологического наблюдения критерий построения теории против которого выступают сторонники гуманитарной парадигмы добавим что именно против этого выступал и К. Как мы показали ранее этот метод действительно с одной стороны предполагал построение психологического знания по классическому образцу науки Нового времени с его...
29662. Априорное знание, метафизика и объективность 49.5 KB
  Когда психолог обнаруживает статистически значимую связь между креативностью и рефлективностью как параметром когнитивного стиля {Дорфман Ковалева 2000а это не значит что чем выше креативность тем выше рефлективность у каждого человека в отдельности. некие общие представления об устройстве мира и человека. В свою очередь это предполагает что методы естественных наук которые изучают мироздание используются также при изучении психики и поведения человека. Культурно–историческая парадигма напротив подчеркивает своеобразие человека...
29663. Понятие категории как узлового пункта познания 57.5 KB
  В общей методологии понятие системы является чрезвычайно широким. Различают материальные системы Солнечная система среди них – системы организм – среда; идеальные системы например знаковые; социальные системы. Берталанфи Общая теория систем категория системы из философскометодологической перешла в иной статус – названия объяснительного принципа конкретизируемого различным образом в научном познании. Кеннон утверждал принцип системности как принцип гомеостаза обеспечивающего динамическое постоянство свойств системы в ее...
29664. Категория активность 53 KB
  Леонтьев указывает на явления активности составляющие как бы внутреннюю предпосылку самодвижения деятельности и ее самовыражения [Леонтьев А. Поэтому описание явлений активности обычно ведется в терминах автономности спонтанности самопроизвольности инициативности и т. Однако любое проявление активности имеет место в некотором окружении. Невозможность роста активности без отражения а также не возможность отражения без активности самого отражающего объекта делает эти понятия изначально взаимосвязанными.