79983

СОЗДАНИЕ 3D МОДЕЛЕЙ НА ОСНОВЕ КОСМОСЪЕМОК И НАЗЕМНЫХ СНИМКОВ

Дипломная

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

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

Русский

2015-02-15

2.8 MB

11 чел.

МИНОБРНАУКИ  РОССИИ

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Факультет информатики

Кафедра прикладной информатики

 

                                                                                        

УДК 681.03

                                                                                          ДОПУСТИТЬ К ЗАЩИТЕ В ГАК

                                                          Зав. кафедрой, проф., д.т.н.                                                                                           ___________ С.П.Сущенко  

                                                                       «_____»__________2013 г.

 

БАКАЛАВРСКАЯ  РАБОТА

 

СОЗДАНИЕ 3D МОДЕЛЕЙ НА ОСНОВЕ КОСМОСЪЕМОК И НАЗЕМНЫХ СНИМКОВ

по основной образовательной программе подготовки бакалавров

010400 – Прикладная математика и информатика

Шапхаева Наталья Алексеевна

                               

Руководитель ВКР, профессор, д.т.н.

_______________А.И.Рюмкин

                                                                                                                                       подпись

«_____»___________ 2013 г.

                                                                                               

                                                

Автор работы

                                                                                             студент группы № 1492

                                                                             _____________ Н.А.Шапхаева

                                                                                                      подпись

 

Электронная версия бакалаврской работы    Администратор электронной

помещена в электронную библиотеку.        библиотеки факультета

                                                                             _____________ Е.Н.Якунина

                                                                                                      подпись

Томск 2013

Реферат

Выпускная квалификационная работа   38 с., 19 рис., 6 источников.

МЕТОД ПОСТРОЕНИЯ, 3D МОДЕЛЬ ГОРОДА, KML,Google Earth, С#

Объект исследования – метод создания трёхмерных моделей города

Цель работы – создание  трехмерных моделей города с использованием снимков зданий и  данных Google Maps.

Методы проведения работы – теоретическое исследование, анализ,  разработка приложения

Основные результаты – разработано приложение для построения трехмерных моделей, получены 3D модели.

Содержание

Введение 3  

Раздел 1. Теоретические основы работы 4     

1.1. Обзор методов построения трехмерных моделей 4

1.2. Обзор геоинформационных систем 11

1.3. Обзор языка KML 14

1.4.Технология создания трехмерных моделей. 18

Раздел 2. Описание программы. 21

Заключение 29

Список использованных источников 30

Приложение А. Руководство пользователя 31

Введение

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

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

1. Изучение методов построения трехмерных моделей.

2. Изучение GIS для получения данных.

3. Реализация метода, вычисляющего трехмерные координаты зданий на основе данных GIS и фотоснимков.

 4. Реализация программы, создающей трехмерные модели зданий на основе вычисленных координат.

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

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

  1.  Теоретические основы работы.

  1.  Обзор методов построения моделей.

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

  1.  Ручное создание моделей в программах трехмерного моделирования.

Моделирование геометрии и текстурирование моделей проводятся вручную. В городской застройке выделяются наборы типовых строений, затем для каждого такого набора строений создаются модели. Эти модели при размещении на карту множатся необходимое количество раз.  Для ускорения процесса трехмерные объекты часто получают методом выдавливания зданий по их отпечаткам на плане города. Высота, на которую выдавливается каждое здание, равно количеству этажей в этом здании. Чтобы сделать текстурирование  обычно используются наземные фотоснимки или  изображения из библиотек текстур. Данный метод создания 3D моделей городов является самым старым и хорошо изученным. Модели зданий создаются в таких программах как AutoCAD (рис.1), ArchiCAD, ArcGIS+3DAnalyst, 3ds Max или Google SketchUp.  В основном данным способом застраивают лишь небольшие части города, за счет огромной трудоемкости процесса. Помимо трудоемкости, модели достаточно дорогостоящие и занимают много времени.

Преимущества:

а) Возможность создания моделей с очень высокой геометрической детализацией.

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

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

Недостатки:

а) Очень высокая трудоемкость. Несмотря на то, что современные 3D редакторы позволяют ускорить некоторые этапы моделирования, все равно все они выполняются вручную.

б) Потенциально низкая метрическая точность. Источником размеров для модели здания обычно служат фотографии фасадов, поэтажный план или отпечаток здания на плане города. Фотограмметрические измерения по наземным фотографиям не производятся, так как это слишком затратно и не предусмотрено в 3D редакторах. Плоский план не несет всей необходимой информации о форме здания. Недостающие размеры рассчитываются приближенно, часто на глаз. Это конечно не относится к случаю, когда исходными данными для проектирования является архитектурная модель здания, использованная при его постройке, либо данные наземного лазерного сканирования. Однако такой случай – большая редкость.

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

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

Рис.1. Пример модели, созданной по методике ручного создания 3D моделей

  1.  Полуавтоматическое создание 3D моделей

В данной методике геометрические модели зданий создаются операторами по аэроснимкам. Этот подход применяется в Delta/Digitals и CyberCity-Modeler. Для построения моделей зданий CyberCity-Modeler позволяет также использовать данные лазерного сканирования.

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

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

Преимущества:

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

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

в) Здания являются отдельными объектами, которым могут быть назначены любые атрибуты: адрес, год постройки, тип здания, материал стен. Модель города со зданиями в виде отдельных объектов имеет более широкое применение. Ее можно использовать для городского планирования, расчета зашумленности, построения карты распространения радиоволн, прогнозирования затопления (рис.2).

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

Недостатки:

а) По сравнению с полностью автоматической генерацией моделей в данном методе присутствует ручной труд операторов. Это повышает стоимость всей модели и увеличивает время работы над ней.

б) Низкое качество текстур. Текстуры извлекаются из аэроснимков и имеют низкое разрешение, в сравнении с наземной фотосъемкой. При недостаточном числе избыточных изображений, может оказаться, что некоторые стороны зданий вовсе без текстур.

Рис.2. Пример модели, созданной по методике полуавтоматического создания 3D моделей

  1.  Полностью автоматическая генерация 3D моделей

Самая молодая и перспективная технология. Использует алгоритмы восстановления геометрической формы объектов по их стереоизображениям. Стереоизображения получают с самолета, для этого используют наклонные цифровые камеры, типа Pictometry  или Geosystem 3-OC-1 . Эти же изображения используются как источник текстур фасадов зданий. Для уточнения геометрии зданий и получения модели рельефа может использоваться воздушный лазерный сканер.

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

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

Преимущества:

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

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

г) Низкая стоимость создания модели за счет исключения ручного труда операторов.

Недостатки:

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

б) Невозможность отделить объекты строений от поверхности рельефа или друг от друга. Автоматическое распознавание в настоящее время неспособно надежно проводить  классификацию объектов и надежно определять их границы. Как следствие этого автоматически сгенерированные модели городов состоят из одной сплошной поверхности, включающей в себя здания, деревья и рельеф (технология C3 Technologies) либо из поверхности рельефа и городских кварталов (технология университета Беркли). Так как здания в таких моделях не представлены отдельными объектами, им нельзя назначить атрибуты. Это усложняет создание адресной базы данных и ограничивает применение модели. Например, для расчета зашумленности требуется классификация объектов по типу материала, из которого они состоят, что невозможно сделать, при отсутствии отдельных объектов. Простой подсчет числа зданий в городе тоже невозможен.

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

Рис.3. Пример модели, созданной с использованием полностью автоматической генерации 3D моделей

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

1.2. Обзор геоинформационных систем.

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

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

Работающая ГИС включает в себя пять ключевых составляющих: аппаратные средства, программное обеспечение, данные, исполнители и методы.

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

Программное обеспечение. ГИС содержит функции и инструменты, необходимые для хранения, анализа и визуализации географической (пространственной) информации. Ключевыми компонентами программных продуктов являются: инструменты для ввода и оперирования географической информацией; система управления базой данных (DBMS или СУБД); инструменты поддержки пространственных запросов, анализа и визуализации (отображения); графический пользовательский интерфейс (GUI или ГИП) для легкого доступа к инструментам.

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

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

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

Основные и часто встречающиеся функций ГИС при работе с картой включают:

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

Геоинформационные системы обладают рядом преимуществ:

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

При рассмотрении различных ГИС, был выбран для использования Google Earth. Также для работы необходим картографический сервис под названием Google Maps.

Google Earth — программа, сочетающая в себе спутниковые снимки, карты, 3D-модели объектов, фотографии и другую полезную информацию о нашей планете, ее географии, климате, населении, инфраструктуре населенных пунктов и т.п. Кроме Земли, доступны атласы и информация о Луне, Марсе и космическом пространстве вокруг Земли. В отличие от других аналогичных сервисов, показывающих спутниковые снимки в обычном браузере (например, Google Maps), в данном сервисе используется специальная, загружаемая на компьютер пользователя клиентская программа Google Earth. Такой подход хотя и требует закачивания и установки программы, но зато в дальнейшем обеспечивает дополнительные возможности, трудно реализуемые с помощью веб-интерфейса.

Основные возможности Google Earth:

  •  Трехмерная модель земного шара с нанесенными на нее спутниковыми снимками, картами и другими данными.
  •  Виртуальная камера, благодаря которой пользователь может легко попасть в любую точку Земли.
  •  Интерактивные 3D-модели зданий и других крупных объектов.
  •  Названия населенных пунктов, улиц, географических объектов, аэропортов, дорог...
  •  Метки и фотографии пользователей.
  •  Функция измерения расстояний.
  •  Возможность сохранения поиска, настроек и закладок Google Earth.
  •  Режим просмотра улиц городов и других населенных пунктов.
  •   Простой и удобный интерфейс.

Существует возможность использовать сервис Google Maps в качестве основы для своих сторонних сервисов. У Google существует API для Google Maps, который позволяет интегрировать Google Maps в веб-сайты с необходимыми геоданными. Используя Google Maps API, можно включить любую карту из Google Maps на внешнем сайте, управляя этой картой через JavaScript, например, для добавления маркеров географических точек, приближения или удаления при просмотре карт.

  1.  Обзор языка KML

KML – это формат файлов, который используется для отображения географических данных в таких геобраузерах, как Google Планета Земля, Google Карты и Google Карты для мобильных устройств. KML создан на основе стандарта XML и использует основанную на тегах структуру с вложенными элементами и атрибутами. Во всех тегах учитывается регистр, поэтому их необходимо вводить в точности так, как показано в Справочном руководстве KML. Указатель содержит сведения о том, какие теги являются необязательными. Внутри элемента теги должны находиться в том порядке, который приведен в указателе.

Преимуществами KML, по сравнению с другими форматами, являются простота и легкость его редактирования, понимания и интерпретации. Файл KML может быть создан и отредактирован вручную в любом текстовом редакторе. В файле KML можно указывать ссылками на трехмерные объекты, например здания, мосты, монументы и скульптуры, в формате файла модели COLLADA. Модели определяются независимо от программы Google Earth в собственном пространстве координат с помощью таких приложений, как SketchUp, 3D Studio Max и других. При импорте по указанной ссылке трехмерной модели в Google Earth она загружается, поворачивается и масштабируется так, чтобы соответствовать системе координат изображения Земли.

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

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

Описание элементов языка KML, которые используются в работе

<kml>

Описание:

Корневой элемент файла KML. Он является обязательным и размещается в начале файла после объявления xml. Элемент <kml> может также включать пространство имен для любых внешних схем XML, на которые имеется ссылка в файле.

Синтаксис:

<kml xmlns="http://www.opengis.net/kml/2.2" hint="target=sky">

 ...

</kml>

<Polygon>

Описание:

Элемент Polygon определяется внешней границей и 0 или несколькими внутренними границами. Если элемент Polygon выпуклый, его границы соединяются с поверхностью земли и формируют дополнительные многоугольники. Это выглядит как здание.

Для многоугольников значение <coordinates> указывается против часовой стрелки. При использовании элемента Polygon придерживаются "правила правой руки": если расположить пальцы правой руки в том направлении, в котором указываются координаты, большой палец будем указывать в направлении, перпендикулярном многоугольнику.

Синтаксис:

<Polygon id="ID">

 <extrude>0</extrude>                       

 <altitudeMode>clampToGround</altitudeMode>

 <outerBoundaryIs>

   <LinearRing>

     <coordinates>...</coordinates>     

   </LinearRing>

 </outerBoundaryIs>

 <innerBoundaryIs>

   <LinearRing>

     <coordinates>...</coordinates>        

   </LinearRing>

 </innerBoundaryIs>

</Polygon>

Элементы, характерные для Polygon:

  1.  <extrude>

Логическое значение. Определяет, соединен ли элемент Polygon с поверхностью земли. Чтобы придать элементу Polygon выпуклость, следует использовать режим указания высоты relativeToGround, relativeToSeaFloor или absolute. Выдавливаются только вершины, а не весь геометрический объект. Например, прямоугольник преобразуется в каркас с пятью гранями. Выдавливание вершин Polygon выполняется от центра земного шара.

  1.  <altitudeMode>

Определяет, как интерпретируются компоненты altitude в элементе <coordinates>. Возможны следующие значения:

Режим clampToGround (по умолчанию) – означает, что нужно игнорировать указанную высоту (например, в теге <coordinates>).

Режим relativeToGround – устанавливает относительную высоту элемента над земной поверхностью для определенного местоположения. Например, если по абсолютной высоте местоположение находится на уровне моря, и для высоты точки установлено значение 9 метров, высота расположения значка метки точки в этом режиме будет составлять 9 метров.

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

  1.  <outerBoundaryIs> (обязательно)

Содержит элемент <LinearRing>.

  1.  <innerBoundaryIs>

Содержит элемент <LinearRing>

  1.  <LinearRing>

Определяет строку замкнутой линии, обычно внешнюю границу многоугольника (Polygon). Также можно использовать LinearRing как внутреннюю границу многоугольника для создания в нем отверстий. Многоугольник может содержать несколько элементов <LinearRing>, используемых в качестве внутренних границ.

<Placemark>

Описание:

Элемент Placemark отображается в списке на панели "Метки". У меток с элементом Point имеется связанный значок, которым отмечена точка на Земле в средстве трехмерного просмотра. В средстве трехмерного просмотра Google Планета Земля метка с Point – это единственный объект, который можно повернуть или нажать на него. У других объектов нет значков в средстве трехмерного просмотра.

Синтаксис:

<Placemark id="ID">

 <name>...</name

</Placemark>

  1.  Технология создания трехмерных моделей.

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

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

Восстановление матрицы перспективной проекции.

Матрица перспективной проекции записывается в следующем виде

     (1)

Проекционное преобразование точки [x,y,z,1] c помощью матрицы Т выглядит так:          

   (2)                 

Нормализуем вектор [X,Y,0,H] и получаем вектор [x*,y*,0,1], где x* и y* являются координатами в перспективной проекции точки.  Раскрывая уравнение (2), получим следующую систему уравнений:

(3)

Подставляя значение H из третьего уравнения в первое и второе получаем:

(4)

Нужно найти все элементы матрицы Tij. Для вычисления этих элементов необходимо задать не менее шести опорных точек [xk,yk,zk] и их проекций [x*k, y*k], и для того, чтобы решение существовало, эти точки должны лежать в одной плоскости. Для n точек получается система из 2n уравнений.

Приняв элемент  равным единице получаем

(6)

Система уравнений (2) содержит 2n уравнений и 11 переменных. Ее можно записать как:

 (7)

Решается данная система методом наименьших квадратов, в итоге получаем:

(8)

Восстановление координат трехмерной точки

        (9)

Приближенное значение этого уравнения можно получить следующим образом:

(10)

Общая технология создания модели.

На схеме (рис.4)  представлены основные этапы обработки проекций и описаны последовательные действия  по созданию трехмерной модели.

Рис.4. Основные этапы технологии создания модели.

  1.  Подбор входных данных. Фотографии должны быть минимально нелинейно искаженными, их проекции должны быть центральными или параллельными. Проекции должны охватывать здание со всех сторон. Каждая грань должна встречаться на фотографиях на двух или более проекциях. Необходимо выделить более 6 опорных точек с известными трехмерными координатами.
  2.  Оцифровка (обрисовка) проекций. Пользователь курсором мышки обходит по точкам каждую грань на проекции. Грани не должны пересекаться.
  3.  Задание дополнительной информации. Пользователь должен сопоставить одни и те же точки на всех проекциях и связать их между собой. Точка должна присутствовать минимум на двух проекциях, иначе невозможно вычислить трехмерные координаты. Также пользователь для каждой точки должен указать трехмерные координаты точек, логично, что для точки, отражающейся на различных проекциях, координаты нужно вводить один раз.
  4.  Построение модели. После ввода достаточного количество информации генерируется модель здания. Вычисляются матрицы проектирования (8), если информации недостаточно, то переход на этап 2 или 3. Если информация полная, для каждой точки вычисляются трехмерные координаты (10).

Раздел 2. Описание программы.

Средой разработки приложения является основанная на Net Framework среда VisualStudio 2012 от компании Microsoft. В качестве языка разработки был выбран объектно – ориентированный язык высокого уровня C#.  Программа может быть запущена при наличии в системе Windows обновления Net Framework 4.5.

Диаграмма классов разработанного приложения приведена ниже (рис.5)

Рис.5. Диаграмма классов

Описание класса ImagePoint.

Рис.6. Диаграмма класса ImagePoint

В данном классе содержатся атрибуты X и Y, являющиеся координатами точки на изображении с индексом атрибута imgIndex. Атрибут Known указывает на то, известны ли трехмерные координаты данной точки. Атрибут Height указывает на высоту изображения. Атрибут YfromBottom возвращает координату Y данной точки с началом системы координат в левом нижнем углу изображения. Метод InRadius(Point point, double scale) возвращает true в случае если, точка point находится в некотором радиусе от текущей точки. ToXml() возвращает объект класса XML element, соответствующий данному объекту, CreateFromXml() выполняет обратную операцию. Описываемый класс предназначен для хранения точек привязанных к изображению (рис.6).

Объекты класса ImagePoint генерируют элемент ImagePoint следующей структуры:

<ImagePoint>

       <X>642</X>

       <Y>138</Y>

       <ImgIndex>0</ImgIndex>

       <Known>True</Known>

</ImagePoint>

Элементы X и Y содержат координаты точки по осям Х и Y соответственно, элемент ImgIndex содержит информацию о индексе изображения в списке класса Images. Элемент Known является флагом, принимающим значение true в случае если координаты вершины известны.

Описание класса Matrix.

Рис.7. Диаграмма класса Matrix

Данный класс (рис.7) реализует необходимый для разрабатываемого приложения функционал работы с матрицами. В этом классе содержатся поля Rows и Cols, с модификатором private, в которых хранится информация о количестве строк и столбцов соответственно. Также в классе содержится двумерный массив модификатором private, к котором содержатся значения элементов матрицы. Для создания объектов данного класса предусмотрены два конструктора со  слдедующими сигнатурами: Matrix(int RowCount, int ColumnCount) и Matrix(), в которых при инициализации все значения элементов матрицы устанавливаются равными 0. Метод SetSize изменяет размер матрицы, при этом исходные данные теряются. В данном классе создается копия исходной матрицы. Метод Transpose() транспонирует матрицу, GetTranspose() возвращает транспонированную матрицу. Inverse() возвращает true при существовании обратной матрицы, либо false при необратимости матрицы. Для реализации перемножения матриц был перегружен оператор умножения *. AddLine(), SubtractLine(),MultiplyLine(),SwapLines() и DivideLine() выполняют элементарные преобразования над матрицей.

Описание класса KMLBPoint.

Рис.8. Диаграмма класса KMLBPoint

Рассматриваемый класс (рис.8) содержит атрибуты Lat, Lng, Height, соответствующие трехмерным координатам точек. Этот класс предназначен для хранения структуры данных и необходимого функционала для работы с точками, соответствующими вершинам создаваемого объекта. Атрибут Known указывает на существование трехмерных координат у рассматриваемой точки. Атрибут List<ImagePoint> список объектов точек на изображении, которые соответствуют данной вершине. Метод AddImagePoint() добавляет объект класса ImagePoint в список  ImagePoint, при этом также идет проверка на недублирование точек. Метод  GetImagePoint(int imgIndex) возвращает объект класса ImagePoint, соответствующий индексу imgIndex. Метод ChangeImagePoint (int imgIndex, int X, int Y) изменяет координаты imgIndex на X и Y. Метод InRadius() возвращает true, если точка point находится в некотором радиусе от точки изображения с индексом imgIndex. Метод  GetImageIndexes() возвращает список индексов изображения, для которых отображена данная точка.  Метод ToXml() возвращает объект класса XML element, соответствующий данному объекту, метод CreateFromXml() – обратная операция к ToXml().

Объекты класса KMLBPoint генерируют элемент KMLBPoint с атрибутами lat, lng и height, соответсвующими координататам данной точки широте, долготе и высоте, а также атрибут known являющийся флагом, принимающим значение true в случае если координаты вершины известны. Данный элемент содержит множество элементов ImagePoint.

<KMLBPoint lat="56,5118404438259" lng="85,0329490362092" height="15" known="True">

     <ImagePoint>

       …

     </ImagePoint>

   </KMLBPoint>

Описание класса BuildingPoints.

Рис.9. Диаграмма класса BuildingPoints

Класс (рис.9) представляет структуру данных необходимых для работы с вершинами объекта. Атрибут List<KMLBPoint> points представляет собой список вершин, представленных объектами класса KMLBPoint. Атрибут  KnownPointsCount возвращает количество вершин с вычисленными координатами. Атрибут List<KMLBPoint> GetPointsUpperGround() возвращает списки вершин, которые находятся над поверхностью Земли. Атрибут List<KMLBPoint> GetUnknownPoints() возвращает список точек, координаты которых неизвестны. Метод AddPoint() добавляет новую вершину создаваемого объекта. Метод GetPointByImgCoords() возвращает вершину по индексу изображения и координатам точки. Метод GetImagePoint() возвращает объект класса ImagePoint, если точка с координатами, указаными в объекте Point находится в некотором радиусе на изображении с индексом imgIndex, либо возвращает NULL, если такая точка отсутствует. Метод  GetPointsOfImage() возвращает список точки, которые привязаны к изображению с индексом imgIndex. Метод  GetKMLPointsOfImage() возвращает список вершин, которые находятся на изображении с индексом  imgIndex. Метод  ToXml() возвращает объект класса XML element, соответствующий данному объекту, метод CreateFromXml() – обратная операция к ToXml().

Объекты класса BuildingPoints генерируют элемент BuildingPoints, содержащий множество элементов KMLBPoint.

<BuildingPoints>

   <KMLBPoint

 lat="56,5118404438259"

lng="85,0329490362092"

height="15"

known="True">

    …

   </KMLBPoint>

 </BuildingPoints>

Описание класса Images.

Рис.10.Диаграмма класса Images

Данный класс (рис.10) хранит изображения и реализован функционал для перехода к следующему или предыдущему изображению, исключая дублирование изображений в левом и правом окнах. Атрибут List<Image> imageList содержит список изображений, leftPointer -  индекс изображения открытого в левом окне, rightPointer, соответственно, в правом окне. Атрибут  List<string> fileNamesList – список названий изображений. Метод GetImage() возвращает изображение с индексом pointer. Метод  ImagePointer(), в том случае,  если передано TRUE, возвращает индекс левого изображения, в случае false правое изображение. AddImage() добавляет изображение. GetPreviousLeftImage(), GetNextLeftImage(), GetPreviousRightImage(), GetNextRightImage() позволяют менять указатель на текущий. Метод  ToXml() возвращает объект класса XML element, соответствующий данному объекту, метод CreateFromXml() – обратная операция к ToXml().

Объекты класса Images генерируют элемент Images, содержащий множество элементов Image, c данными о файлах изображений открытых в приложении.

 <Images>

   <Image>C:\Users\admin\Pictures\Home1\IMAG0393.jpg</Image>

 </Images>

Описание класса KMLBM.

Рис.11. Диаграмма класса KMLBM

Данный класс (рис.11) реализует основной функционал разрабатываемого приложения. Поле images является объектом класса Images, поле buildingPoints – объектом класса BuildingPoints. Поле Dictionary – словарь матриц перспективых проекций, где в роли ключа выступает индекс изображения. Атрибуты ImageCount – количество изображений, PPMCount – возвращает количество вычисленных матриц перспективных проекций, KnownPoints – возвращает количество вершин конструированного объекта, у котоых известны координаты, PointsCount – количество вершин объектов, ImagePointer – указатель на левое изображение, если передано TRUE, иначе возвращает правое изображение. Метод AddImage() добавляет изображения. Метод GetNextImage() возвращает изображение, если атрибут IsPrevious и IsLeft TRUE, то возвращает предыдущее изображение, иначе – следующее изображение для левого и правого изображений соответственно. Метод  GetImage() возвращает изображение по переданному индексу. AddPoint() добавляет вершины на изображение. Метод  GetPoint() возвращает точку или NULL,если точки не существует либо если она входит в радиус другой точки. GetImagePoint() возвращает точку, привязанную к изображению. Метод  GetPointsOfImage() возвращает список всех точек на изображении по индексу этого изображения. Метод  CalcPPMatrices() вычисляет все возможные матрицы перспективной проекции. Метод  CalcUnknownPoints() вычисляет координаты всех возможных неизвестных точек. Метод  GetPerspectiveProjectionMatrix() возвращает матрицу перспективной проекции по переданному индексу изображения. Метод  CalculateUnknownPoint() вычисляет координаты частной неизвестной точки. Метод  ToXml() возвращает объект класса XML element, соответствующий данному объекту, метод CreateFromXml() – обратная операция к ToXml().

Объекты класса KMLBM генерируют документ, содержащий элемент BuildingPoints и элемент Images.

<KMLBM>

 <BuildingPoints>

</BuildingPoints>

 <Images>

 </Images>

</KMLBM>

Заключение

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

Список использованных источников

  1.  Введение в документацию KML.: Руководство разработчика. -  [Электронный ресурс], https://developers.google.com/kml/documentation/?hl=ru, 2012
  2.  Язык географической разметки KML: Вернеке Дж. - Издательство: ДМК Пресс, 2010. -378 c.
  3.  Костюк Ю.Л. Технология создания трехмерных моделей объектов по плоским проекциям и ее применение в геоинформатике/ А.С. Парамонов, В.Г. Гриценко. - Томск: Изд-во Том. ун-та, 1998. – 11с.
  4.  Ципилева Т.А. Геоинформационные системы. — Томск: Томский межвузовский центр дистанционного образования, 2004. — 162 с.
  5.  API Google Maps / [Электронный ресурс] https://developers.google.com/maps/location-based-apps?hl=ru
  6.  GIS-Lab / [Электронный ресурс] http://wiki.gis-lab.info/w/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0


Приложение А. Руководство пользователя.

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

Рис.12. Добавление изображений

Также можно загрузить уже существующий проект, выполнив следующие действия: Проект – Загрузить (рис.13).

Рис.13. Выбор действий с проектом

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

Рис.14. Добавление точек на изображение

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

Рис.15. Дублирование точек

Для созданных точек необходимо задать их координаты, для этого нужно нажать на правую кнопку мыши на существующей точке и выбрать поле «Изменить координаты» (рис.15). В открывшемся окне (рис.16) можно перейти непосредственно к моделируемому зданию, введя адрес в поле, расположенном в верхней части формы, и нажав на кнопку «перейти». При нажатии на кнопку «Маркер»,  создается маркер, который можно перенести на соответствующее место на карте. После нажатия на кнопку «Ок» в левой части окна, заполняются поля «Широта» и «Долгота», поле «Высота» необходимо заполнить вручную (рис.17).

Рис.16.  Изменение координат точек

Рис.17. Получение координат точек

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

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

Рис.18. Сохранение KML файла

После открытия сохраненного KML файла, откроется Google Earth, в котором можно увидеть трехмерную модель здания (рис.19)

Рис.19. Построенная трехмерная модель здания


 

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

34030. Философия Фейербаха. Антропологический материализм Фейербаха 28.5 KB
  С точки зрения Фейербаха идеализм есть не что иное как рационализированная религия а философия и религия по самому их существу считал Фейербах противоположны друг другу. Религия и близкая к ней по духу идеалистическая философия возникают по мнению Фейербаха из отчуждения человеческой сущности посредством приписывания богу тех атрибутов которые в действительности принадлежат самому человеку. Материализм Фейербаха характеризуется как антропологический так как в центре внимания Фейербаха не отвлеченное понятие материи а человек как...
34031. К.Маркс (1818 - 1883) 45 KB
  Маркс первоначально занимался философским творчеством. Несмотря на то что Маркс не создал целостного философского учения он привнес много новых идей в различные разделы философского знания и по сути дела заложил основы качественно нового мировоззрения. В гносеологии Маркс развивал идеи немецкой классики об активном характере познающего субъекта. Практику Маркс определяет как целенаправленную материальнопреобразующую деятельность общественного субъекта.
34032. Позитивизм и его разновидности 26.5 KB
  Таким образом получается что произвести соединение умов в едином общении принципов и через это доставить твердую основу для социальной реорганизации и для действительно нормального порядка вещей и составляет назначение позитивизма. Для позитивизма в соответствии с его же принципом не существует других настоящих наук кроме естествознания изучающего явления внешнего мира. Если вдуматься в суть позитивизма во всех его разновидностях то следует сказать: это реальность развития философской мысли. Словом эта тенденция усиления связи...
34033. Волюнтаризм Шопенгауэра 25.5 KB
  Интеллект утомляется а воля неутомима. Реальна только одна космически громадная воля которая проявляется во всем течении событий Вселенной: мир только зеркало этого воления выступающее как представление. Мир по Шопенгауэру нелеп а вся история мира это история бессмысленной флуктуации волевых искр когда воля вынуждена пожирать самое себя так как кроме нее ничего нет и она к тому же голодная и жестокая постоянно ткущая паутину страдания. Он подверг критике ошибочную позицию сторонников крайнего рационализма согласно которому...
34034. Философия экзистенцизма 33.5 KB
  Экзистенциализм Философия существования. изолированный одинокий индивид все интересы которого сосредоточены на нем же самом на его собственном ненадежном и бренном существовании. Экзистенциальные проблемы это такие пробл которые возникают из самого факта сущ человека. Для Э имеет значение только его собственное сущ и его движение к небытию.
34035. ФИЛОСОФИЯ В ЭПОХУ ПОСТМОДЕРНА 24 KB
  Осознание факта исчерпаемости энергии и земных ресурсов конечности не только человека но и человечества. Отказ от культа человека приводящему к забвению трансцендентного и пренебрежению к природе. Всеобщая единая действительность должна быть познана не через мир а через человека.
34036. Религиозная философия 25 KB
  Субстанционный мир мир находится в единстве с богом. Умственный мир умственноидеальная сфера. Чувственный мир мир людей.
34037. Философия Соловьева 23.5 KB
  В философии Соловьева как и в учении Гегеля онтология и гносеология бытие и познание неразделимы и опираются на единую основу. Соловьева поэтому всю его систему часто называют философией всеединства. Философия по мнению Соловьева возникает в период напряженного кризиса когда религиозная социальная роль не разрывает человеческое общество сознание.
34038. Установление ставок земельного налога. Льготы по взиманию земельного налога 36.5 KB
  ЗЕМЕЛЬНЫЙ НАЛОГ В 2011-2012 ГОДАХ. Земельный налог является местным налогом. на территории которой находится земельный участок. Земельный налог уплачивают организации и физические лица обладающие земельными участками на праве собственности праве постоянного бессрочного пользования или праве пожизненного наследуемого владения.