Преобразование координат GPS в X,Y на растре

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Koba
Новоприбывший
Сообщения: 12
Зарегистрирован: 28 ноя 2011, 16:40
Репутация: 0

Re: Преобразование координат GPS в X,Y на растре

Сообщение Koba » 02 дек 2011, 13:40

Я нашел вот такую статью (http://old.postgis.fr/node/351), если вы говорите что достаточно только выполнить функцию трансформ, зачем тогда автор статьи надумал такую конструкцию ?

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

update test set the_geom=geometryfromtext('POINT('||trunc((trunc(longitude/100)+(longitude-1000)/60)::numeric,6)||' '||trunc((trunc(latitude/100)::int+(latitude-5400)/60)::numeric,6)||')',4326);
gps=# select latitude,longitude,astext(the_geom) from test limit 10;
latitude | longitude | astext
-----------+-----------+----------------------------
5405.6298 | 1047.1342 | POINT(10.78557 54.09383)
5405.6255 | 1047.0722 | POINT(10.784536 54.093758)
5405.5982 | 1047.0358 | POINT(10.78393 54.093303)
5405.5373 | 1046.9382 | POINT(10.782303 54.092288)
5405.4637 | 1046.8294 | POINT(10.78049 54.091061)
5405.3542 | 1046.7878 | POINT(10.779796 54.089236)
5405.2649 | 1046.6943 | POINT(10.778238 54.087748)
5405.1725 | 1046.5783 | POINT(10.776305 54.086208)
5405.0423 | 1046.5537 | POINT(10.775895 54.084038)
5404.9063 | 1046.5737 | POINT(10.776228 54.081771)
(10 lignes)

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Преобразование координат GPS в X,Y на растре

Сообщение ericsson » 02 дек 2011, 13:45

Потому что "5405.6298" это 54º 05.6298' на самом деле, что равно 54.09383º

Koba
Новоприбывший
Сообщения: 12
Зарегистрирован: 28 ноя 2011, 16:40
Репутация: 0

Re: Преобразование координат GPS в X,Y на растре

Сообщение Koba » 02 дек 2011, 13:49

Да, но не понятно как в PostGis эти данные переформатировать, когда я применяю запрос указанный выше, у меня получаются неправильные результаты, ведь проекция тут не причем, идет просто переформатирование
4644.9116 3325.6618 POINT(71.76103 33.415193)
4644.9066 3325.6529 POINT(71.760881 33.41511)
4644.9041 3325.6451 POINT(71.760751 33.415068)
4644.9039 3325.6416 POINT(71.760693 33.415065)
4644.9104 3325.6695 POINT(71.761158 33.415173)
4644.9112 3325.6662 POINT(71.761103 33.415186)
4644.9148 3325.6615 POINT(71.761025 33.415246)
4644.9157 3325.6591 POINT(71.760985 33.415261)
4644.9147 3325.6602 POINT(71.761003 33.415245)
4644.9132 3325.6609 POINT(71.761015 33.41522)
Вообще данные у меня с GPS устройства, которые передаются по протоколу NMEA
Последний раз редактировалось Koba 02 дек 2011, 13:56, всего редактировалось 1 раз.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Преобразование координат GPS в X,Y на растре

Сообщение ericsson » 02 дек 2011, 13:56

Вторая координата переводится вроде правильно (25/60≈0.41)
Первая координата переводится неправильно - 46 градусов превращаются в 71. Это хрень, так быть не должно. 46/60≈0.767, так что возможно, имеет место какой-то сдвиг порядков.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Преобразование координат GPS в X,Y на растре

Сообщение ericsson » 02 дек 2011, 14:10

В NMEA 0183 координаты передаются в формате gggmm.mm
Вообще, есть у меня мысль, что стоит поручить это занятие GPSBabel. У него есть формат XCSV, для которого можно определить т.н. "стили". http://www.gpsbabel.org/htmldoc-development/Styles.html
На входе он съест и NMEA в том числе.

Koba
Новоприбывший
Сообщения: 12
Зарегистрирован: 28 ноя 2011, 16:40
Репутация: 0

Re: Преобразование координат GPS в X,Y на растре

Сообщение Koba » 02 дек 2011, 15:02

ericsson писал(а):В NMEA 0183 координаты передаются в формате gggmm.mm
Вообще, есть у меня мысль, что стоит поручить это занятие GPSBabel. У него есть формат XCSV, для которого можно определить т.н. "стили". http://www.gpsbabel.org/htmldoc-development/Styles.html
На входе он съест и NMEA в том числе.
Спасибо за совет, но тут имеет место быть система, в которой gps устройства с автомобилей передают данные в БД, в таком формате, при этом существует веб-система которая этими данными пользуеться, возникла необходимость генерировать треки в растре на стороне сервера. Вот я и пытаюсь их вывести. Как их конвертануть, ума не приложу.

Т.е. по вашему простая трансформация данных не поможет ?

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Преобразование координат GPS в X,Y на растре

Сообщение ericsson » 02 дек 2011, 15:13

Да нет тут никакой трансформации, есть изменение формата представления с градусов и минут на градусы и десятичные доли градусов. При том одна из координат нормально пересчитывается (та что во втором столбце).

Koba
Новоприбывший
Сообщения: 12
Зарегистрирован: 28 ноя 2011, 16:40
Репутация: 0

Re: Преобразование координат GPS в X,Y на растре

Сообщение Koba » 02 дек 2011, 15:24

to ericsson спасибо за консультацию
JEY писал(а):В сообщении от GPS была такая строка: 4658.1305,N,03157.7097,E. Это часть сообщения протокола NMEA 0183 2.0. Форматирование данных сообщения дает такие результаты:

4658.1305,N - это 46°58,1305' с.ш.
03157.7097,E - это 31°57,7097' в.д.

И дальше все вычисляется достаточно просто:

46°58,1305' = 46 + (58,1305 / 60) = 46.968841
31°57,7097' = 37 + (57,7097 / 60) = 31.961828
Вот это актуально для координат из устройств которые работают по протоколу NMEA
4658,1305 = 46 + (58,1305 / 60) = 46.968841
3157,7097 = 37 + (57,7097 / 60) = 31.961828

Koba
Новоприбывший
Сообщения: 12
Зарегистрирован: 28 ноя 2011, 16:40
Репутация: 0

Re: Преобразование координат GPS в X,Y на растре

Сообщение Koba » 02 дек 2011, 16:41

Для будущих поколений:

Дано:Таблица в PostgreSQL+Postgis (track) в которой есть поля: gid, point_name, point_x, point_y, the_geom(географическое поле)
point_x, point_y - координаты вида 3356.3563, 4362.4326
Задача:Добавить в поле the_geom точку с этими координатами (должны иметь вид 33.733632, 43.853232)

Для этого выполняем запрос:

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

update track set the_geom=geomfromtext('POINT('||floor(point_y/100)+((point_y/100-floor(point_y/100))/0.60)||' '||floor(point_x/100)+((point_x/100-floor(point_x/100))/0.60)||')',4326);
и смотрим что должно получиться:

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

SELECT point_x,point_y, ST_AsText(the_geom) AS geom FROM track LIMIT 10;

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

point_x	point_y	geom	
4539.5990	3349.9672	POINT(33.8327866666667 45.6599833333333)
4539.6595	3349.9457	POINT(33.8324283333333 45.6609916666667)
4539.7204	3349.9245	POINT(33.832075 45.6620066666667)	
4539.7812	3349.9030	POINT(33.8317166666667 45.66302)	
4539.8618	3349.8745	POINT(33.8312416666667 45.6643633333333)
4539.9331	3349.8498	POINT(33.83083 45.6655516666667)
4540.0041	3349.8250	POINT(33.8304166666667 45.666735)	
4540.0760	3349.8004	POINT(33.8300066666667 45.6679333333333)
4540.1523	3349.7778	POINT(33.82963 45.669205)
4540.2307	3349.7571	POINT(33.829285 45.6705116666667)
Последний раз редактировалось Koba 02 дек 2011, 19:03, всего редактировалось 1 раз.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Преобразование координат GPS в X,Y на растре

Сообщение ericsson » 02 дек 2011, 17:31

Вот сознательный человек попался. А то обычно у вопрошающих ничего кроме "все, разобрался" на форум не просачивается.

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя