Измерения: расстояние и площадь

Измерение расстояния и площади по карте с привязкой к узлам сети, профилем высот по рельефу и выгрузкой в GeoJSON.

Где найти
кнопка с линейкой в строке режимов над картой; то же — палитрой команд (Ctrl+K) «Измерения на карте».
Права
доступно всем, кто вошёл.
Короткое видео: как это выглядит в системе
Функция показана в сквозном сценарии:Первый вход и карта
Читаю как

Возможности

  • «Расстояние» — длина ломаной, длина и азимут каждого отрезка, угол поворота.
  • «Площадь» — площадь и периметр контура.
  • Привязка к узлам сети: точка рядом с узлом ставится точно в узел (выключается переключателем «Привязка к узлам сети»).
  • Профиль высот по рельефу для каждого расстояния: высоты начала и конца, перепад и уклон, подъём и спуск.
  • Готовые измерения остаются на карте; их вершины можно перетаскивать. Каждое можно скопировать или удалить, все вместе — выгрузить в GeoJSON.

Как это работает

Измерения считаются в браузере, на сервер ничего не отправляется и в базе не сохраняется. Длины и площади считаются на сфере радиусом Земли (формулы большого круга и Гаусса), поэтому не зависят от масштаба и проекции карты; на длинах в городе расхождение с геодезическими — доли процента.

Привязка. При каждом движении курсора ищется ближайший узел сети в радиусе 12 пикселей. Привязанная точка попадает точно в узел, поэтому длина между узлами совпадает с длиной трассы.

Профиль высот строится по 120 точкам вдоль линии из рельефа MapTiler (terrain-rgb, тайлы масштаба 14). Точность рельефа — около ±5 м, поэтому профиль подходит для оценки уклона трассы, а не для исполнительной съёмки.

Пока включён режим измерений, щелчки по объектам не открывают их карточки, а наведение не подсвечивает объекты.

Что нужно для работы

  • Права не нужны: измерять может любой, кто открыл карту.
  • Профиль высот — ключ MapTiler у веба (NUXT_PUBLIC_MAPTILER_KEY); без него длины и площади считаются, а профиля нет («Профиль высот недоступен»).

Шаги

  1. Нажмите кнопку «Измерения» (линейка) в строке режимов над картой — откроется панель «Измерения», режим «Расстояние» включится сам.

    Измерения: расстояние и площадь: шаг 1

  2. Щёлкайте точки линии; точка у узла сети «прилипает» к нему. Двойной щелчок, Enter или правая кнопка — конец. В панели — длина и профиль высот по рельефу: высоты начала и конца, уклон, подъём и спуск.

    Измерения: расстояние и площадь: шаг 2

  3. «Площадь» (квадрат рядом с линейкой): обведите контур и замкните его двойным щелчком или Enter. Готовые измерения остаются на карте; «GeoJSON» выгружает их файлом, «Очистить» убирает все.

    Измерения: расстояние и площадь: шаг 3

Примеры

Длина трассы и уклон. На копии Алматы от узла 2КОК-13А к узлу 2КОК-16 и дальше вдоль улицы — 232,3 м. Профиль: начало 838,8 м, конец 844,6 м, перепад +5,8 м, средний уклон +25 ‰; подъём 7 м, спуск 1 м. Конец выше начала, поэтому дренажная вода по этой трассе стекает к началу линии.

Площадь раскопки. Обведите место работ четырьмя точками и замкните контур — в панели площадь и периметр; кнопка «GeoJSON» сохранит контур файлом measure-ГГГГ-ММ-ДД-ЧЧ-ММ-СС.geojson для отчёта или ГИС.

Если не получается

  • Щелчок не ставит точку — точка попала на панель «Измерения»: её можно перетащить за заголовок.
  • Двойной щелчок приближает карту — режим измерений выключен; включите его кнопкой с линейкой.
  • «Профиль высот недоступен» — нет ключа MapTiler или рельеф не загрузился; длина при этом посчитана.

Для разработчика

  • Веб: components/DrawPanel.vue (панель, положение запоминается в drawPanelPos), composables/useMapDraw.ts (точки, привязка, слои на карте, клавиши), utils/terrainSample.ts (профиль).
  • Клавиши — область measure в utils/hotkeys.ts.
  • Тесты: tests/composables/useMapDraw.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо