Создаём интерактивную карту родного села в программе QGIS (ч.3)
Часть третья: добавляем на карту трёхмерную модель дома
Итак, в прошлых частях мы научились работать с базовыми примитивами (точками, линиями и полигонами), а также дообавлять на карту растровые подложки. Сегодня мы зайдём чуть дальше и узнаем, как добавить на нашу трехмерную карту модели домов.
В качестве исходных данных возьмём проект, созданный на прошлом этапе. Перед нами окно QGIS с архивной картой села (растровой подложкой). Предположим, что мы хотим показать на трёхмерной карте модель дома вот здесь:
Приступим к работе. Начнём с того, что добавим на место дома примитив-точку. Для этого в верхнем меню QGIS выбираем Слой -> Создать слой -> Создать слой Shapefile:
В открывшемся окне вводим имя файла (условное "Дом Петровых"), и выбираем тип геометрии: "Точка":
Нажимаем "ОК". Обратите внимание на панель "Слои",здесь появился новый слой с нашим названием, вот он. Выделим его, кликнув по нему мышкой. Слой подсветится синим.
Но точка на карту пока не добавлена. Чтобы это сделать, нужно выделить слой (кликнув по нему мышкой: уже сделано), а на панели инструментов нажать иконку с жёлтым карандашиком (она называется "Режим редактирования"):
Обратите внимание на панель "Слои". Здесь на названии нашего активного слоя "Дом Петровых" появился карандашик: это значит, что мы сейчас находимся в режиме редактирования слоя. После этого нажимаем на иконку "Добавить точечный объект", вот она.
После этого мы попадаем в режим добавления объекта. Кликнем по нужному месту левой кнопкой мыши: на карте появится точка, а следом всплывающее окно ввода идентификатора (id) объекта. Здесь, как и в прошлый раз, советую вводить id по порядку. Вводим "01" и нажимаем "ОК".
Точка добавлена. К слову, никто не мешает вам в одном слое создать несколько точек. Это можно сделать сразу же, не создавая под каждую точку отдельный слой (но в этом случае для каждой точки в слое будет использоваться общая 3D-модель).
Что делать, если случайно поставил точку не в том месте?
Точку после добавления можно перемещать. Для этого нужно нажать на иконку "Перемещение вершин в текущем слое" вот тут:
После этого наведите курсор на точку, которую хотите переместить, щёлкните по ней левой кнопкой мыши, а затем укажите для неё новое место. Готово! Не забываем нажать на иконку "Сохранить изменения", и выйти из режима редактирования слоя, нажав ещё раз на жёлтый карандашик:
Теперь запускаем модуль QGIS2threejs. Появляется трёхмерная карта... На которой нет нашей точки. Ничего страшного, это нормально. Нам нужно удостовериться, что на панели "Слои" (Layers) в левой части экрана появился новый слой "Дом Петровых". Вот он:
Установим галочку и после, щёлкнув правой кнопкой по слою, выберем "Properties". Появится окно свойств. Здесь во вкладке "Styling" в разделе "Z-Coordinate" привяжем высоту точки к нужному слою. Выберем "Mode" и укажем нужный слой:
По умолчанию используется трёхмерная модель "Сфера". Вот она, теперь её видно:
Но нам-то не сфера нужна, а дом. Снова заходим в свойства слоя. Здесь, опять же во вкладке "Styling" в разделе "Shape" выберем "3D-Model":
Появится окно ввода данных. Перво-наперво нам нужно указать путь к нашей модели. Нам нужна строка "Model File" (файл модели), а точнее, три точки под ними. Нажимаем на них, появится окно выбора файла.
А теперь самое интересное. Где взять 3D-модель дома? Если у вас нет навыков их создания, можно поискать готовые на специализированных сайтах вроде Cults3D или 3ddd.ru. Ну или скачать вот эту для пробы: ссылка. Нажимаем ОК. Модель появилась, но она оказалась крупновата:
Снова открываем окно свойств. Меняя значения параметров "Scale" (масштаб) и "Rotation (z)", масштабируем модель и правильно ориентируем её (вращаем вокруг своей оси):
Модель добавлена. Если бы в этом слое у нас было несколько точек, то, выбрав модель для одной, мы бы показали на карте сразу несколько домов:
Но тут есть один нюанс. Такой "групповой" способ добавления точек удобен только в том случае, если ряд объектов ориентирован в пространстве одинаково. Как на картинке вверху: три дома стоят короткой стороной к улице, а их длинные стороны параллельны. Изменение параметров "Scale" и "Rotaion (z)" для слоя приведет к тому, что масштабироваться и вращаться будут все дома сразу.
Если в этой группе один дом стоит "поперёк" других (например, длинной стороной к улице), то его ориентация на карте будет неправильной. В этом случае для такого "объекта-исключения" лучше добавить отдельный слой.