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

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Vladimir
Новоприбывший
Сообщения: 5
Зарегистрирован: 12 янв 2009, 12:47
Репутация: 0

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

Сообщение Vladimir » 12 янв 2009, 13:30

Здраствуйте!
Подскажите как полученные координаты от GPS преобразовать в координаты на карте, которая поставляется в виде ESRI Shape.
Для отображения этих файлов использую SharpMap.

Я так думаю, что в ГИС, преобразование координат - это отдельная тема, поэтому буду благодарен любым ссылкам на освещение темы!

Заранее спасибо!

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

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

Сообщение JEY » 12 янв 2009, 19:33

Если Вы используете Shape Files, то должно быть известно, какая система координат была задействована при создании этих файлов...

Вообще в SharpMap есть целая иерархия классов, которые используют системы координат от EPSG. Основными функциями преобразования координат в SharpMap являются:

1. Аффинное преобразование
2. Трансформация Гельмерта

В принципе, если координатной системой в Shape Files является WGS-84, то никакой речи о преобразовании быть не может, поскольку GPS использует ту же систему координат...

Ну если Вам необходимо разобраться в преобразовании координат, тогда просмотрите исходный код класса WGS84ConversionInfo, там есть ответы на Ваши вопросы!

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 13 янв 2009, 04:28

JEY, поправка-уточнение, в данном случае, скорее всего речь идет не о трансформации (упомянутые аффинные преобразования и Гельмерт), а о проекционном преобразовании, разумеется, как вы правильно заметили, если известна СК shape-файла.

Vladimir, таким образом прежде чем углубиться в изучение классов, рекомендую четко ответить себе и нам на один вопрос, известна ли СК shape-файла и какая она, в зависимости от ответа решения могут быть разными.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

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

Сообщение JEY » 13 янв 2009, 07:08

:) спасибо! Просто не уловил связи между Shape Files и растром в рамках проекта SharpMap. Дело в том, что SharpMap без специального расширения не поддерживает растры...

Именно поэтому я упомянул все возможные виды преобразования координатных систем, те, которые SharpMap содержит в своих исходных кодах!

Vladimir
Новоприбывший
Сообщения: 5
Зарегистрирован: 12 янв 2009, 12:47
Репутация: 0

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

Сообщение Vladimir » 13 янв 2009, 10:00

Наверное мне поможет это:
Transforming between image coordinates and world coordinates

SharpMap has built-in functions to help you transform between image and world coordinates.

When the user clicks the map at a given pixel (x,y), you can translate this world coordinates using the ImageToWorld method:

SharpMap.Geometries.Point p = myMap.ImageToWorld(new System.Drawing.PointF(x, y));


Please note that the value is calculated based on the current zoom and center-values of the myMap Map object.

If you want to do the opposite transformation, use WorldToImage:

System.Drawing.PointF p = myMap.WorldToImage(new SharpMap.Geometries.Point(34.225, 175.432));
Нашел на сайте шарпмапа в хауту разделе :oops:

По сути мне надо координату, полученную от GPS приемника (ну там NMEA 0183), отобразить на карте.

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

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

Сообщение JEY » 13 янв 2009, 11:35

Ну тогда Ваша задача почти решена. Там же, на сайте SharpMap Вы сможете найти пример в исходном коде, который реализует работу с данными GPS...

Vladimir
Новоприбывший
Сообщения: 5
Зарегистрирован: 12 янв 2009, 12:47
Репутация: 0

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

Сообщение Vladimir » 13 янв 2009, 11:39

Что значит World Coordinates ? Это не то, что я получаю от GPS?

Sanechko
Новоприбывший
Сообщения: 5
Зарегистрирован: 30 авг 2008, 20:55
Репутация: 0

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

Сообщение Sanechko » 14 янв 2009, 22:06

Скорее всего, но необходимо посмотреть в руководстве что есть world cordinate.

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

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

Сообщение JEY » 15 янв 2009, 08:07

World Coordinates - это система координат, которая используется SharpMap для отображения карты. Она отличается от пользовательской системы координат...

Например: Если WorldCoordinates - это WGS84, то от пользовательской системы координат она отличается и началом отсчета и положением осей и единицами измерения!

Vladimir
Новоприбывший
Сообщения: 5
Зарегистрирован: 12 янв 2009, 12:47
Репутация: 0

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

Сообщение Vladimir » 15 янв 2009, 10:08

World Coordinates - это система координат, которая используется SharpMap для отображения карты. Она отличается от пользовательской системы координат...

Например: Если WorldCoordinates - это WGS84, то от пользовательской системы координат она отличается и началом отсчета и положением осей и единицами измерения!
Честно говоря мало что понял.
У меня с GPS приходят координаты, к примеру это точка
P(4658.1305,N,03157.7097,E)
Функция myMap.ImageToWorld в окрестностях точки P возвращает примерно следующее:
P'(46.XXXXX, 031.XXXXXX)
Логично было предположить, что координаты с GPS надо было делить на 100 чтобы скормить их SharpMap'у. Но к сожалению такой подход дает отклонение порядка сотни километров.

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

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

Сообщение JEY » 15 янв 2009, 12:49

Тут все ясно! Так с GPS приходят координаты точки P 46°58,1305' с.ш. и 31°57,7097' в.д.

Это координаты в системе WGS-84, вот это и есть World Coordinates! Теперь делаем так:

SharpMap.Geometries.Geometry Geometries = New List(SharpMap.Geometries.Geometry);

Geometries.Add(New SharpMap.Geometries.Point(46.968841,31.961828));

SharpMap.Layers.VectorLayer GPSLayer = New SharpMap.Layers.VectorLayer("GPS");

GPSLayer.DataSource = New SharpMap.Data.Providers.GeometryProvider(Geometries);
GPSLayer.Style.Symbol = Bitmap.FromFile(@"C:\data\car.gif"); //если нужна иконка.

Map.Layers.Add(GPSLayer);

Если все без ошибки, тогда должно работать отлично. Поясню: функция ImageToWorld здесь не нужна. Координаты с GPS приходят верные, только их нужно перевычислять.

В сообщениях от GPS 4658.1305 = 46.968841, а 03157.7097 = 31.961828 это NMEA 0183!

Vladimir
Новоприбывший
Сообщения: 5
Зарегистрирован: 12 янв 2009, 12:47
Репутация: 0

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

Сообщение Vladimir » 15 янв 2009, 13:06

JEY, thank's a lot!
НО все же, как Вы делаете такое преобразование:
В сообщениях от GPS 4658.1305 = 46.968841, а 03157.7097 = 31.961828 это NMEA 0183!
???

Как так получается что 4658.1305 = 46.968841 :?:

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

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

Сообщение JEY » 15 янв 2009, 13:39

В сообщении от 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

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

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

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

JEY писал(а):46°58,1305' = 46 + (58,1305 / 60) = 46.968841
31°57,7097' = 37 + (57,7097 / 60) = 31.961828
Подскажите, а есть такой перевод в PostGis автоматом ? Не могу никак найти функцию ...
т.е. есть в определенных полях таблицы координаты в виде 4658.1305 , 3157.7097 а в geom поле надо вставить координату POINT(46.968841, 31.961828)

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 02 дек 2011, 13:01

Koba писал(а):Подскажите, а есть такой перевод в PostGis автоматом ? Не могу никак найти функцию ...
т.е. есть в определенных полях таблицы координаты в виде 4658.1305 , 3157.7097 а в geom поле надо вставить координату POINT(46.968841, 31.961828)
Для перевода данных в градусы необходимо знать проекцию в которой у вас сейчас находятся данные. Потом просто скомпоновать геометрию на базе выбранных полей и выполнить ST_Transform.
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

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

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

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