3-х мерная модель пещеры с рельефом и текстурой поверхности

Все про топозйомку. Питаємо. Відповідаємо. Ділимося досвідом.
Ответить
Аватара пользователя
ngry
Сообщения: 231
Зарегистрирован: 07 янв 2013, 12:33
Откуда: Киев

3-х мерная модель пещеры с рельефом и текстурой поверхности

Сообщение ngry » 30 окт 2014, 16:00

Пошаговая инструкция как сделать 3-х мерную модель пещеры с рельефом и текстурой поверхности на примере пещеры Байдар-Чокрак.

Подразумевается что работа будет выполняться на компьютере с операционной системой Windows, все те же действия можно выполнять и в других операционных системах, например Linux или Mac OS X, в этом случае будет немного отличаться ход установки необходимых программ и данных, однако основной принцип работы и выполняемые действия останутся такими же.

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

SAS.Planet. Архив с программой распаковывается в любом удобном месте. Стоит учитывать, что программа из интернета может скачать достаточно большое количество данных – растровых тайлов космо-снимков, карт, поэтому диск куда распакована сас-планета должен иметь запас свободного места.
GDAL. Распаковываем архив, в любом удобном месте. Запускаем SDKShell.bat, в появившемся окне командной строки уже можно использовать единственно-необходимую нам программу преобразований координат gdaltransform.
Java. После установки необходимо убедиться, что путь к программе java присутствует в переменной окружения PATH: Computer->Properties->Advanced System Properties->Environment Variables->System PATH. Если всё в порядке то запуск программы java в коммандной строке cmd.exe будет успешным, иначе нужно добавить путь к программе java в переменную PATH (у меня это C:\Program Files\Java\jre1.8.0_25\bin)
Изображение
Модель земной поверхности как результат работы проекта SRTM программа TerrainTool скачает из интернета сама. Способ получения данных земной поверхности проекта ASTER GDEM v2 описан на сайте программы TerrainTool. Вкратце: нужно зарегистрироваться на сервере, предоставляющем данные NASA и скачать нужные вам «гранулы» - участки земной поверхности размером 1х1 градус. Можно скачать нужные данные с торрента, или воспользоваться данными, которые для Крыма, Абхазии, Грузии или Лаоса скачал я (но пока не знаю где разместить примерно 1.5 гигабайт данных).
Программа TerrainTool по-умолчанию располагает данные в папке C:\Users\<имя пользователя>\.terraintool. Туда нужно положить нужные вам гранулы данных ASTER GDEM.

Работа с данными топосъёмки
Предполагается, что работа с программой therion усвоена на базовом уровне, в наличии имеется топосъемка пещеры в виде гео-привязанной нитки хода, и, очень желательно, замеров стен (лево-право-верх-низ). Наличие абрисов, плана, сечений, вертикальных проекций или разреза-развёртки желательно, но не обязательно. Чем больше данных имеется – тем точнее модель, однако для демонстрационных целей, достаточно и нитки хода со стенами.

1. Экпорт нитки хода в гео-формат.

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

Код: Выделить всё

export model -fmt kml -o baydar.kml
Компилируем, файл baydar.kml появляется в директории проекта.

2. Просмотр нитки хода и выбор участка земной поверхности для экспорта 3d-модели в программе Sas.planet.

Запускаем Placemark Manager,
Изображение
добавляем нитку хода в базу данных сас-планеты: Placemark Manager->Import, указываем путь к файлу baydar.kml. В появившемся окне Import Parameters указываем путь импорта, по-умолчанию это New Category. Сас-планета представляет средства катологизирования ваших треков, точек итд, поэтому выбор пути импорта зависит от имеющейся у вас иерархии данных, пример моей организации на картинке ниже:
Изображение
Теперь с помощью инструмента Add Polygon
Изображение
рисуем прямоугольную область земной поверхности, которую мы захотим увидеть в качестве текстуры земной поверхности 3d модели. Для того чтоб прямоугольная область была «более прямоугольной», можно помочь себе, включив отображение границ тайлов, например 19-го уровня: View->Tile Boundaries-> For z19.
Изображение
После успешного завершения рисования прямоугольника (кликом левой кнопки мыши последовательно указываются положение его вершин) нажимаем на кнопку Add to Database
Изображение
сохраняем полученный гео-объект в вашей иерархии данных, не забыв дать ему осмысленное имя:
Изображение

3. Сохранение выбранного участка земной поверхности в виде гео-привязанного растра.

Отискав в данных Сас-планеты нужный участок (у меня это только что сохранённый surface selection по пути Crimea\Baydarian Valley\Baydar\ в Placemark Manager), выбираем его и запускаем инструмент Selection Manager
Изображение
В появившемся окне, выбираем вкладку Download, выбираем слой (Yandex.Satellite) уровень детализации (19) и жмём Start.
Изображение
После завершения закачивания данных из интернета (в заголовке появившегося очередного окошка красуется надпись Download complete) можно переходить к экспорту. Кстати, таким нехитрым способом можно скачать в кеш программы нужные вам участки земной поверхности в автоматическом режиме, только не злоупотребляйте :)
Вызвав ещё раз Selection Manager для нашего участка вокруг пещеры, выбираем вкладку Stitch, указываем уровень детализации (19), указываем путь к получаемому растру (с помощью проводника, нажав на кнопку ...), указываем что хотим получить файлы гео-привязки – ставим галочки напротив нужного формата (я выбрал tab для Map Info и map для Ozi Explorer):
Изображение
По завершению генерации гео-привязанного растра можно перейти к работе с данными digital elevation model, но пока открыта сас-планета, можно получить из неё дополнительно нужные в дальнейшем данные:
а) линейные размеры участка (ширину и высоту)
Изображение
при помощи инструмента «линейка» (437.27 м ширина и 328.38 высота)
Изображение
б) координаты левого верхнего (северо-западного) угла выбранной области в формате deg.min.sec. Формат отображения координат устанавливается Settings->Options->View->Coordinate representation. Переместив указатель мыши в нужный угол считываем координаты внизу в статусной строке программы: N44⁰26’36.12” E33⁰47’48.08”. Эти же координаты можно получить при помощи сторонних программ или веб-страниц для конвертации формата координат, взяв данные из map- или tab- файла привязки для первой точки, но, получить их из сас-планеты в нужном формате, не прибегая к помощи дополнительных программ мне кажется более удобным.
Изображение

4. Создание модели поверхности в TerrainTool.

Подразумевается, что java и данные поверхности успешно установлены (если это не так, программа подскажет чего не хватает).
Запускаем TerrainTool из коммандной строки: java -jar TerrainTool.jar. Выбираем File->Lat/Long куда указываем координаты северо-западного угла нашей области:
Изображение
Жмём Ок. В Options выбираем SRTM+Aster, Autodownload. Переходим File->Create вводим в поля E-W range N-S range ширину и высоту выбранного участка в метрах, шаг сетки (Spacing) и точку привязки, в нашем случае – северо-запад (N-W). В Options Therion вводим epsg:32636 (это EPSG-код проекции UTM зона 36, куда попадает весь Крым) жмём Ok:
Изображение
Дождавшись создания модели поверхности видим окошко с результатом, где высота закодирована цветом:
Изображение
Жмём сохранить File->Save As. Указываем путь к получаемому файлу с данными поверхности в формате терион:
Изображение
Теперь всё готово для включения данных поверхности в генерируемый терионом 3d-файл.

5. Интеграция данных поверхности и текстуры к проекту.

Добавляем строку

Код: Выделить всё

input baydar_srfc.th
в данные съемки (baydar.th), чтоб подключить только что сгенерированную поверхность. Компилируем, проверяем полученную 3d-модель.
ИзображениеИзображение
Осталось добавить текстуру поверхности. Для этого открываем в текстовом редакторе tab- файл привязки и копируем географические координаты первой и второй точек, которые соответствуют северо-западному и юго-восточному углам изображения-космоснимка, получением которого мы занимались ранее. Получаем

Код: Выделить всё

  (33.79668653, 44.44337337) (0, 0) Label "Point 1",
  (33.80219042, 44.44041415) (1026, 770) Label "Point 2",
Теперь при помощи утилиты gdaltransform нужно получить координаты этих точек в прямоугольной системе координат UTM36. Запускаем SDKShell.bat, и в нём

Код: Выделить всё

gdaltransform -s_srs epsg:4326 -t_srs epsg:32636
Этот набор букв означает что мы хотим из географических координат в формате долгота-широта получить X Y координаты прямоугольной системы UTM36, при этом гео-формат данных задан при помощи EPSG-кодов. Вводим через пробел координаты, жмём ввод – получаем нужные значения:
Изображение
Полученные данные используем, чтоб привязать космоснимок и модель поверхности, для этого в файл baydar_srfc.th добавляем следующую строку

Код: Выделить всё

bitmap baydar_sat.jpg [ 0 770 563396.1 4921427.9 1026 0 563837.3 4921103.5 ]
Числа означают: 0, высота космоснимка (пикселей), долгота1, широта1, ширина космоснимка (пикселей), 0, долгота2, широта2.
Значения долготы и широты округлены до одного знака после запятой, можно и не округлять.

Убеждаемся, что после компиляции lox- файл содержит нужную текстуру, и модель пещеры.
ИзображениеИзображение
Вложения
Baydar_therion.7z
Проект для териона со всеми необходимыми данными.
(390.96 КБ) 347 скачиваний
baydar3d.lox.7z
Полученный 3д-файл
(383.76 КБ) 371 скачивание
Последний раз редактировалось ngry 27 янв 2016, 14:48, всего редактировалось 3 раза.

vladimir.ilin
Сообщения: 1
Зарегистрирован: 27 янв 2016, 13:24

Re: 3-х мерная модель пещеры с рельефом и текстурой поверхности

Сообщение vladimir.ilin » 27 янв 2016, 14:09

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

Данные ASTER GDEM v2
Что скачивание с указанных торрентов, что с официального сайта - оба пути требуют регистрации. Посему лично я качал с официального сайта. Так вот, чтобы оно работало, как описано, недобходимо (подразумевается, что регистрация пройдена):
  1. Скачать нужный квадрат. На оф. сайте это можно сделать потыкав мышкой в нужные квадраты на интерактивной карте-индексе, при этом ориентироваться (там оч. крупная карта) можно по координатам - "списать" координаты нужной области в SASGis и ориентировать на них
  • Распаковать полученные архивы. Внутри архива будет папка с именем, соответствующим квадрату, а внутри папки - собственно файлы, представляющие осбой маски высот. Так вот, TerrainTool с такими архивами не умеет, поэтому перепаковать их так, чтобы файлы лежали не в папке, а непосредственно в корне архива.
  • Подложить перепакованный архив в TerrainTool
Настройка TerrainTool
После ввода координат надо указать настроечки должным образом. Для этого в меню Options:
  • Coordinates: выставляем Coordinate System - UTM, Datum - WGS-84
  • Therion: выставляем нужный номер зоны UTM в формате EPSG. В примере приведен номер для крыма, получить чиселку для любой точки земного шара можно, например, тут: http://spatialreference.org/ref/epsg/32636/. Можно просто попереключаться между зонами, пока на карте не появится нужная, и срисовать ее номер

Аватара пользователя
ngry
Сообщения: 231
Зарегистрирован: 07 янв 2013, 12:33
Откуда: Киев

Re: 3-х мерная модель пещеры с рельефом и текстурой поверхности

Сообщение ngry » 27 янв 2016, 14:31

Ориентироваться по различным сеткам (координатным, генштабовским листам) можно также при помощи средств программы SAS.Planet
ИзображениеИзображение

В случае гранул ASTER, SRTM в имени файла (например ASTGTM2_N43E042.zip) указываются координаты юго-восточного (нижнего-левого) угла ячейки градусной сетки: N43 E42.

Ответить