Страница 1 из 1

Вычисление сближения меридианов для заданной точки

Добавлено: 15 апр 2016, 15:51
Variant
Задача: для некоторой точки с известными координатами в системе координат с известными параметрами необходимо вычислить величину сближения меридианов (meridian convergence). Необходим удобный свободный или хотя бы бесплатный инструмент для её решения под Windows, стабильно выдающий корректный результат с точностью хотя бы до сотых долей градуса.

Возможное решение: опробован Azimuth and Distance Calculator для QGIS. Не очень удобный (широту-долготу приходится всё равно вбивать вручную), но какой-то результат выдаёт. Поскольку не являюсь специалистом в области высшей геодезии, с ходу проверить корректность не могу, но вроде похоже на правду. Привязка инструмента к QGIS совершенно не обязательна, единственное удобство при таком подходе, что система координат уже задана в proj4, не нужно вводить её заново.

Знает ли кто-нибудь какие-то другие, может быть более удобные решения? По крайней мере нужен ещё какой-нибудь сторонний инструмент, чтобы проверить корректность выдаваемого с помощью Azimuth and Distance Calculator результата

Re: Вычисление сближения меридианов для заданной точки

Добавлено: 15 апр 2016, 18:44
Boris
согласно вот тут http://miltop.narod.ru/Direction/meridians.htm формула сближения проста как мычание, согласно вот тут http://kadastrua.ru/kartografiya/346-pr ... aussa.html гауссово- сближение вещь сложная, но то же описываемая формулой, так в чем собственно вопрос?
Или речь идет о каком то другом сближении?

Re: Вычисление сближения меридианов для заданной точки

Добавлено: 17 апр 2016, 15:45
Ariki
Можно приближённо посчитать с помощью pyproj. Идея в том, чтобы решить обратную геодезическую задачу на сфероиде на маленьком расстоянии:

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


#!/usr/bin/python

import sys
import pyproj

SRS = '+proj=tmerc +ellps=krass +lon_0=33 +x_0=6500000 +y_0=0 +k_0=1'
EPS = 1.0

p = pyproj.Proj(SRS)
geod_srs = p.to_latlong().srs.decode('ascii')
g = pyproj.Proj(geod_srs)
geod = pyproj.Geod(geod_srs)

while(True):
try:
line = sys.stdin.readline()
x, y = map(float, line.split())
except:
break
lon, lat = pyproj.transform(p, g, x, y)
lon2, lat2 = pyproj.transform(p, g, x, y + EPS)
c = geod.inv(lon, lat, lon2, lat2)[0]
sys.stdout.write('{0:.3f}\n'.format(c))

На вход принимает пары координат (разделённых пробелом, сначала восточная) в системе координат, заданной в начале скрипта. На выходе — сближение меридианов в градусах. Тестировал на данных отсюда: studopedia.org/11-63753.html

Re: Вычисление сближения меридианов для заданной точки

Добавлено: 18 апр 2016, 15:04
Игорь Белов
Предлагаю простое и точное решение в виде алгоритма геообработки.
  • Распаковываем архив в папку ".qgis2/processing/scripts".
  • Добавляем скрипт к инструментам: [Инструменты анализа] → [Скрипты] → [Инструменты] → [Открыть скрипт из файла].
  • Запускаем скрипт: [Инструменты анализа] → [Скрипты] → [Пользовательские скрипты] → [grid declination].
  • Выбираем файл с точками. Указываем систему координат, по отношению к которой считается разворот координатной сетки, если отличается от той, что по умолчанию. Можно явно указать слой вместо временного. Жмём [Run].
Новый слой — копия исходного с новой колонкой, заполненной значениями склонения.

Re: Вычисление сближения меридианов для заданной точки

Добавлено: 18 апр 2016, 15:32
Донецков
Вложения нет, т.к. "файл больше не существует"... :(

Re: Вычисление сближения меридианов для заданной точки

Добавлено: 20 апр 2016, 11:36
Variant
Boris писал(а):
Наверное подойдёт и упрощённая формула, но оценить насколько "несущественная" разница результатов действительно несущественна без специальных аналитических выкладок или практического опыта использования обоих методов невозможно, а у меня такого опыта пока нет.
Упрощённая топографическая формула действительно проста, но есть подозрения что она предлагает лишь приближенный способ экспресс-расчёта с точностью, приемлемой для ориентирования на местности. Как я уже писал, мне было бы достаточно сотых долей градуса, но чтобы хотя бы на эти сотые можно было положиться.
Для бытового применения естественно удобнее иметь не столько формулу, сколько реализующий её готовый инструмент
Ariki писал(а):Можно приближённо посчитать с помощью pyproj
Способ интересный, спасибо, надо будет разобраться, как это работает и попробовать, хотя бы в качестве инструмента проверки. Не исключено, что это в итоге может оказаться самым простым способом: всё равно тот Azimuth and Distance Calculator требовал ручного ввода
ErnieBoyd писал(а):Предлагаю простое и точное решение в виде алгоритма геообработки.
Спасибо, установил, запустил. Выглядит довольно удобным. Но работает не очень стабильно: то выпадает, то ругается непонятно на что, а если всё же подобрать счастливое сочетание параметров, чтобы он начал считать, всё равно потом зависает на 0%. Возможно, потому что тестировал в старой версии QGIS, надо будет попробовать в свежей, возможно, какие-то проблемы уйдут