Расчет географических координат в Proj.4
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 28 июн 2012, 13:24
- Репутация: 0
Расчет географических координат в Proj.4
Здравствуйте, подскажите пожалуйста как при помощи библиотеки Proj.4 рассчитать географическую координату по точке (широта, долгота) и расстоянию в км.
Например к 10 гр. с.ш. и 0 гр. в.д прибавить 6600 км по широте и 6000 км по долготе и получить географическую координату.
Например к 10 гр. с.ш. и 0 гр. в.д прибавить 6600 км по широте и 6000 км по долготе и получить географическую координату.
-
- Участник
- Сообщения: 99
- Зарегистрирован: 17 июн 2012, 11:11
- Репутация: 1
- Откуда: Новосибирск
- Контактная информация:
Re: Расчет географических координат в Proj.4
Честно, я сам новичок, но очень близкой к Вашей задаче является прямая геодезическая задача - вычисление геодезических координат - широты и долготы некоторой точки, лежащей на земном эллипсоиде, по координатам другой точки и по известным длине и дирекционному углу данного направления, соединяющей эти точки.
Посмотреть можно тут http://trac.osgeo.org/proj/wiki/man_geod
Посмотреть можно тут http://trac.osgeo.org/proj/wiki/man_geod
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Расчет географических координат в Proj.4
Поигрался с geod. Дирекционные углы (84.85453 и 0) подбирались вручную по здравому смыслу (направления на восток и на север).
1) 6000 км по долготе:
10dN 54d47'38.321"E
2) 6600 км по широте:
69d26'2.922"N 54d47'38.321"E
Итого: координаты в DMS -- 69d26'2.922"N, 54d47'38.321"E, в DD -- 69.434145, 54.793978
Если я наврал, поправьте, пож-та, граждане понимающие
1) 6000 км по долготе:
Код: Выделить всё
echo "10dN 0dE 84.85453 6000" | geod +ellps=WGS84 +units=km
2) 6600 км по широте:
Код: Выделить всё
echo "10dN 54d47'38.321\"E 0 6600" | geod +ellps=WGS84 +units=km
Итого: координаты в DMS -- 69d26'2.922"N, 54d47'38.321"E, в DD -- 69.434145, 54.793978
Если я наврал, поправьте, пож-та, граждане понимающие
Редактор материалов, модератор форума
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 28 июн 2012, 13:24
- Репутация: 0
Re: Расчет географических координат в Proj.4
Спасибо за ответы, которые напривили на решение, позже напишу результат
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 28 июн 2012, 13:24
- Репутация: 0
Re: Расчет географических координат в Proj.4
Обещанный результат)
вызывать GetShiftedCoordDegree нужно обязательно после GeodSetup
вызывать GetShiftedCoordDegree нужно обязательно после GeodSetup
Код: Выделить всё
// longitude долгота в градусах
// latitude широта в градусах
// x смещение по долготе в метрах
// y смещение по широте в метрах
// result_longitude долгота результат
// result_latitude широта результат
//void GetShiftedCoordDegree(double longitude, double latitude, double x, double y, double *result_longitude, double *result_latitude, int *error);
#include "projects.h"
#include "geocent.h"
#define DEG2RAD(x) x * PI / 180.
double deg2rad(double degree)
{
while (degree > 180)
degree -= 180;
while (degree < -180)
degree += 180;
return DEG2RAD(degree);
}
#define RAD2DEG(x) x * 180. / PI;
double rad2deg(double radian)
{
while (radian > PI)
radian -= PI;
while (radian < -PI)
radian += PI;
return RAD2DEG(radian);
}
// настраиваем geod, установка проекции, эллипса и т.п.
void GeodSetup(int argc, char **argv)
{
geod_set(argc, argv); /* setup projection */
}
void GetShiftedCoordDegree(double longitude, double latitude, double x, double y, double *result_longitude, double *result_latitude, int *error)
{
// process - функция в geod.c
process(deg2rad(latitude), deg2rad(longitude), deg2rad(90), x, result_latitude, result_longitude);
process(*result_latitude, *result_longitude, deg2rad(0), y, result_latitude, result_longitude);
*result_longitude = rad2deg(*result_longitude);
*result_latitude = rad2deg(*result_latitude);
}
Последний раз редактировалось Voltron 06 авг 2012, 20:37, всего редактировалось 1 раз.
Причина: Не забываем про теги [code]
Причина: Не забываем про теги [code]
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость