Местная система координат линейного объекта: различия между версиями
Строка 53: | Строка 53: | ||
При значительной длине трассы (точнее, при заметном изменении широты вдоль линии трассы) корректнее поместить центр проекции в середину геодезической линии, соединяющей конечные точки. В это случае придётся сначала решить обратную геодезическую задачу, что даст азимут с первой точки на вторую, азимут со второй точки на первую и длину отрезка геодезической линии между ними, а затем решить прямую геодезическую задачу, чтобы получить координаты средней точки линии и азимуты направлений с неё на конечные точки. | При значительной длине трассы (точнее, при заметном изменении широты вдоль линии трассы) корректнее поместить центр проекции в середину геодезической линии, соединяющей конечные точки. В это случае придётся сначала решить обратную геодезическую задачу, что даст азимут с первой точки на вторую, азимут со второй точки на первую и длину отрезка геодезической линии между ними, а затем решить прямую геодезическую задачу, чтобы получить координаты средней точки линии и азимуты направлений с неё на конечные точки. | ||
<!-- | |||
Для определения параметра ''alpha'' нужно решить обратную геодезическую задачу и найти азимут в первой точке на вторую ''α''₁₂. Здесь возможны два случая: | Для определения параметра ''alpha'' нужно решить обратную геодезическую задачу и найти азимут в первой точке на вторую ''α''₁₂. Здесь возможны два случая: | ||
* вторая точка севернее первой, −90° < ''α''₁₂ < +90°; ''alpha'' = ''α''₁₂ | * вторая точка севернее первой, −90° < ''α''₁₂ < +90°; ''alpha'' = ''α''₁₂ | ||
Строка 61: | Строка 61: | ||
Значение параметра ''k_0'' также можно оценить по результатам решения обратной геодезической задачи: ''k_0'' = ''L'' / ''S'', где ''L'' — заданная длина линии, ''S'' — длина геодезической из решения ОГЗ. | Значение параметра ''k_0'' также можно оценить по результатам решения обратной геодезической задачи: ''k_0'' = ''L'' / ''S'', где ''L'' — заданная длина линии, ''S'' — длина геодезической из решения ОГЗ. | ||
--> | |||
=== Решение обратной геодезической задачи === | === Решение обратной геодезической задачи === | ||
Версия от 20:06, 9 сентября 2016
по адресу http://gis-lab.info/qa/local-cs-linear-object.html
Конструирование проекции для представления системы координат линейного объекта в ГИС
Введение
Система координат линейного объекта строится для эксплуатации протяжённого инженерного сооружения. Принципы построения проекции сходны с классическим подходом, изложенным в статье «Добавление местной координатной системы в GIS». Однако постановка задачи отличается.
Постановка задачи
На оси сооружения задана линия положением двух его конечных точек в глобальной системе координат (ГСК).
Пусть в местной системе (МСК) начало координат совмещено с первой точкой, расстояние между точками задано величиной L, а ось OX направлена вдоль оси сооружения наружу. В такой системе координаты второй точки будут равны X = −L, Y = 0.
Требуется подобрать проекцию, подходящую для представления такой МСК в ГИС.
О проекции
Выбор проекции однозначен. Это косая проекция Меркатора с такими значениями параметров, чтобы так называемая начальная линия (линия наименьшего масштаба) проходила через конечные точки, а расстояние между этими точками равнялось L.
Для косой проекции Меркатора задаются следующие параметры:
- широта и долгота центра проекции φ₀, λ₀
- азимут начальной линии α
- масштаб на начальной линии k₀
- прямоугольные координаты в центре проекции x₀, y₀
- разворот координатных осей γ
Азимут начальной линии должен находиться в диапазоне −90° < α < +90°. Таким образом, если разворот γ не задан, ось OY будет направлена вдоль начальной линии в северную полуплоскость, OX в восточную.
Из-за ограничений реализации в библиотеке PROJ.4 азимут α не может равняться 0°. Это не проблема, — если ось направлена вдоль меридиана, можно выбрать проекцию Гаусса-Крюгера. Также α не может принимать значения ±90°. Это тоже не проблема, поскольку в подобных случаях азимут вдоль геодезической линии меняется довольно быстро, и можно выбрать центр проекции на некотором удалении от первоначально выбранной точки. Если же трасса изгибается вдоль параллели, лучше остановить выбор на равноугольной конической проекции Ламберта.
Разворот γ был введён для компенсации начального разворота осей, чтобы вернуть оси OY направление строго на север. Поэтому, если он не задан, подразумевается его численное равенство α. Возможность задавать его явно позволяет произвольно управлять ориентацией осей МСК.
Определение параметров
Приведём данные тестового примера. Осевая линия задана положением конечных точек на эллипсоиде WGS 84: φ₁ = 51° с.ш., λ₁ = 22° в.д., φ₂ = 50° с.ш., λ₂ = 20° в.д. Расстояние вдоль оси задано длиной L = 180300 м.
Рассмотрим последовательность решения задачи с использованием PROJ.4. Вид строки параметров таков:
+proj=omerc +lat_0=φ₀ +lonc=λ₀ +alpha=α +gamma=γ +k_0=k₀ +x_0=x₀ +y_0=y₀
Простой подход состоит в том, чтобы поместить центр проекции в одну из конечных точек. В соответствии с постановкой задачи определяются следующие параметры:
+lat_0=51 +lonc=22
Для нахождения остальных параметров нужно только решить обратную геодезическую задачу.
При значительной длине трассы (точнее, при заметном изменении широты вдоль линии трассы) корректнее поместить центр проекции в середину геодезической линии, соединяющей конечные точки. В это случае придётся сначала решить обратную геодезическую задачу, что даст азимут с первой точки на вторую, азимут со второй точки на первую и длину отрезка геодезической линии между ними, а затем решить прямую геодезическую задачу, чтобы получить координаты средней точки линии и азимуты направлений с неё на конечные точки.
Решение обратной геодезической задачи
Итак, из решения ОГЗ мы хотим получить азимут α₁₂ и расстояние S, нужные для определения параметров alpha и k_0 соответственно.
Пикантность ситуации придаёт тот факт, что на эллипсоиде через две точки проходит геодезическая линия, которая в блестящей математике косой проекции сэра Мартина Хотайна отображается в кривую на апосфере, не совпадающую с дугой большого круга. Расчёты показывают, что вследствие этого точность соответствия alpha = α₁₂ и k_0 = L / S при расстояниях в несколько десятков километров перестаёт удовлетворять требованиям геодезии.
Впрочем, многие объекты имеют скромные размеры «всего» в несколько километров, и для них этот неприятный момент имеет исключительно теоретическое значение.
Однако есть ещё одно обстоятельство. Утилита geod из пакета PROJ.4 версии 4.9.0 будет решать геодезические задачи на эллипсоиде, используя библиотеку GeographicLib. Но сегодня в ходу PROJ.4 версии 4.8.0, и geod умеет считать только для сферы.
Так или иначе, надо научиться обходиться подручными средствами.
Подготовим файл данных с координатами конечных пунктов inv.dat:
51N 22E 50N 20E
и решим ОГЗ:
$ geod -I -f "%.10f" -F "%f" +ellps=WGS84 +units=m inv.dat
Возможно, в следующей версии PROJ.4 результатом этой команды будет решение на эллипсоиде. Сегодня же из решения на сфере радиусом, равным экваториальному радиусу эллипсоида WGS 84, получилась такая строка значений α₁₂, α₂₁, S:
-127.3948484062 51.0617802663 180119.673397
Построение проекции
По результатам решения ОГЗ построим черновую проекцию. Поскольку φ₂ < φ₁, имеет место второй вариант; примем alpha = α₁₂ + 180° = 52.6051515938°, gamma = +90°. Масштабный коэффициент пока приравняем единице: k_0 = 1. Получен предварительный набор параметров:
+proj=omerc +lat_0=51 +lonc=22 +alpha=52.6051515938 +gamma=90 +k_0=1 +x_0=0 +y_0=0
Подготовим файл с координатами конечных точек p12.dat:
22 51 20 50
Выполним команду:
$ proj -f "%f" +proj=omerc +lat_0=51 +lonc=22 +alpha=52.6051515938 +gamma=90 +k_0=1 +x_0=0 +y_0=0 +ellps=WGS84 p12.dat
Программа выдаёт координаты первой и второй точек x₁, y₁ и x₂, y₂ в МСК:
-0.000000 0.000000 -180292.238188 238.386305
Координаты первой точки равны нулю, как и должно быть. Координаты второй точки отличаются от ожидаемых значений −L и 0. Ненулевая величина y₂ говорит о том, что начальная линия проходит мимо второй точки. Значит, нужно подобрать параметр alpha, чтобы исправить промах.
Численные методы отлично справляются с поиском корня уравнения x₂(alpha) = 0. Добавим немного геометрии в задачу и будем улучшать значение параметра по формуле alpha′ = alpha − arctg [(y₂ − y₁) / (x₂ − x₁)]. Может, это не очень эффективно, но через пять итераций при alpha = 52.6809193468 получаем такие координаты:
-0.000000 0.000000 -180292.395746 0.000000
Вычисляем параметр k_0 по формуле k_0 = −L / (x₂ − x₁) = 180300 / 180292.238188 = 1.0000421773.
Запуск proj с окончательным набором параметров:
proj -f "%f" +proj=omerc +lat_0=51 +lonc=22 +alpha=52.6809193468 +gamma=90 +k_0=1.0000421773 +x_0=0 +y_0=0 +ellps=WGS84 p12.dat
Результаты:
-0.000 0.000 -180300.000 0.000
Проекция построена.
Вторая проекция
Нередко требуется вторая проекция, являющаяся зеркальным отражением первой: начало координат МСК-2 во второй точке, ось OX направлена вдоль оси в сторону, противоположную направлению на первую точку. Таким образом МСК-2 развёрнута по отношению к МСК-1 на 180° и смещена вдоль оси OX на длину L.
Последнее предложение имеет особый смысл для выбора способа построения МСК-2. Если выбрать способ, изложенный для МСК-1, только с центром проекции во второй точке и опорой на азимут α₂₁, выяснится, что апосфера во втором случае будет не та, что в первом, и большие круги, проходящие через две точки, не совпадают. Правда, разница незаметна, пока расстояние не достигает величин в несколько десятков километров.
Таким образом, если нужна пара взаимоувязанных МСК, вторая система строится на параметрах первой. Параметр gamma изменяем на 180°, параметру x_0 присваиваем значение −L, всего-то и делов.
Тестирование
Создадим файл с координатами двух точек pt34.dat на эллипсоиде:
21 51 21 50
Вычислим координаты в МСК-1:
proj -f "%.3f" +proj=omerc +lat_0=51 +lonc=22 +alpha=52.6809193468 +gamma=90 +k_0=1.0000421773 +x_0=0 +y_0=0 +ellps=WGS84 p34.dat
-55539.071 42936.465 -124171.432 -44612.843
Вычислим координаты в МСК-2:
proj -f "%.3f" +proj=omerc +lat_0=51 +lonc=22 +alpha=52.6809193468 +gamma=-90 +k_0=1.0000421773 +x_0=-180300 +y_0=0 +ellps=WGS84 p34.dat
-124760.929 -42936.465 -56128.568 44612.843
Калькулятор подтверждает, что:
- суммы координат x соответствующих точек равны −L
- суммы координат y соответствующих точек равны нулю
Заключение
Рассмотренный способ построения проекции прост, поскольку позволяет заменить знание математической картографии обращением к PROJ.4, который используется как чёрный ящик.
В косой проекции Меркатора масштаб отображения вдоль начальной линии не является постоянным, поскольку при изменении широты меняется кривизна сечения эллипсоида. Это несущественно для объектов длиной в несколько километров, но становится заметным при очень больших длинах. Чтобы уменьшить эффект, центр проекции располагают в середине линии.
В этом случае задача построения проекции по двум точкам усложняется: центр проекции нужно поместить на дугу большого круга, проходящего через конечные точки. Пожалуй, всё же проще использовать для решения таких задач сферическую тригонометрию на апосфере.