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

Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 08:53
mihailproroot
Доброго времени суток.
Может кто подскажет, как решить такую задачу.
Есть у наблюдатель (будь то на сфере или эллипсоиде). Координаты наблюдателя - B L H (широта, долгота, высота). Он смотрит в некоторую точку горизонта с заданным азимутом Az, под некоторым углом места Alfa и расстоянием до данной точки D.
Нужно найти геоцентрические координаты (X Y Z), в которую смотрит наблюдатель.
Есть ли варианты решения данной задачи?

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 09:26
gamm
mihailproroot писал(а):
09 июн 2022, 08:53
Есть ли варианты решения данной задачи?
несомненно есть - переходите от BLH к XYZ, и прибавляете к этой точке вектор направления взгляда в той же системе. Осталось отложить дальность. Как то так ...

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 09:54
AlexRomantsov
Здравствуйте. Варианты есть. Можно наводящие вопросы? В какой программной среде, в ГИС? В какой из них? Дистанции (расстояния) до точки D в каком диапазоне, метры, километры, сотни километров? Азимуты и углы в градусах или радианах? Широты долготы в WGS84? Геоцентрическая система какая, ITRF, WGS, PZ?

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 11:31
mihailproroot
AlexRomantsov писал(а):
09 июн 2022, 09:54
Здравствуйте. Варианты есть. Можно наводящие вопросы?
Здравствуйте.
В какой программной среде, в ГИС?
- QGIS. Пишу свое ПО на QGis API C++.
Дистанции (расстояния) до точки D в каком диапазоне
- километры
Азимуты и углы в градусах или радианах?
- в градусах (можно и в радианы перевести)
Широты долготы в WGS84?
- Да
Геоцентрическая система какая, ITRF, WGS, PZ?
- WGS

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 12:39
AlexRomantsov
Грусть.
В QGIS рассчитать новые координаты точки по дистанции, азимуту, наклону можно следующим выражением:
project( #вычисление координат новой точки по дистанции, азимуту, углу наклона
transform($geometry,'EPSG:4326', 'EPSG:32645'), #для начала точку слоя из wgs в utm45 (я на долготе 85гр)
1000, #дистанция в м
radians(30), #азимут в градусах против часовой
radians(95) #наклон в градусах, от оси в верх! т.е. наклон -5 градусов - значение 95 градусов.
)
А дальше засада - функция transform() при пересчете в геоцентрическую СК (например EPSG:4328) возвращает какие то XY, а Z вообще отдает не геоцетрическую, а исходную геодезическую H.

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 12:42
AlexRomantsov
ну и project похоже не умеет на элипсоиде считать, только на плоской прямоугольной. А это ограничивает его использование на дистанциях не более 10-20км (в зависимости от требуемой точности). Ну разве прикрутить к формуле расчета поправку к H на кривизну земли.

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 13:05
AlexRomantsov
Через transform() не получилось вычислить геоцентрические, даже из WGS в WGS geocent

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 13:14
gamm
в R c transform такая же проблема, он игнорирует глобус. И есть другая функция в пакете sp, которая глобус учитывает. Насколько я помню, это разные функции gdal. По крайней мере, когда мы считали на С++ через gdal, выбрав правильную функцию, все получалось.

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 14:06
AlexRomantsov
В библиотеках PROJ (https://proj.org/) возможно есть готовые функции на C++ для расчета геоцентрических координат

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 15:14
mihailproroot
Я так понял сама задача сводится к трассировке лучей (Raycasting).
В 3D библиотеках есть соответствующий API (для нахождения точек, в которые смотрит (условный) наблюдатель).
gamm писал(а):
09 июн 2022, 09:26
несомненно есть - переходите от BLH к XYZ, и прибавляете к этой точке вектор направления взгляда в той же системе. Осталось отложить дальность. Как то так ...
Может ли кто-нибудь написать формулы для нахождения вектора взгляда?

Re: Геоцентрические координаты точки, в которую смотрит наблюдатель

Добавлено: 09 июн 2022, 15:50
Игорь Белов
Морозов В. П., Курс сфероидической геодезии, М., Недра, 1979.
§ 36. Решение главных геодезических задач между точками в пространстве.