Преобразование координат GPS в X,Y на растре
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 12 янв 2009, 12:47
- Репутация: 0
Преобразование координат GPS в X,Y на растре
Здраствуйте!
Подскажите как полученные координаты от GPS преобразовать в координаты на карте, которая поставляется в виде ESRI Shape.
Для отображения этих файлов использую SharpMap.
Я так думаю, что в ГИС, преобразование координат - это отдельная тема, поэтому буду благодарен любым ссылкам на освещение темы!
Заранее спасибо!
Подскажите как полученные координаты от GPS преобразовать в координаты на карте, которая поставляется в виде ESRI Shape.
Для отображения этих файлов использую SharpMap.
Я так думаю, что в ГИС, преобразование координат - это отдельная тема, поэтому буду благодарен любым ссылкам на освещение темы!
Заранее спасибо!
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Преобразование координат GPS в X,Y на растре
Если Вы используете Shape Files, то должно быть известно, какая система координат была задействована при создании этих файлов...
Вообще в SharpMap есть целая иерархия классов, которые используют системы координат от EPSG. Основными функциями преобразования координат в SharpMap являются:
1. Аффинное преобразование
2. Трансформация Гельмерта
В принципе, если координатной системой в Shape Files является WGS-84, то никакой речи о преобразовании быть не может, поскольку GPS использует ту же систему координат...
Ну если Вам необходимо разобраться в преобразовании координат, тогда просмотрите исходный код класса WGS84ConversionInfo, там есть ответы на Ваши вопросы!
Вообще в SharpMap есть целая иерархия классов, которые используют системы координат от EPSG. Основными функциями преобразования координат в SharpMap являются:
1. Аффинное преобразование
2. Трансформация Гельмерта
В принципе, если координатной системой в Shape Files является WGS-84, то никакой речи о преобразовании быть не может, поскольку GPS использует ту же систему координат...
Ну если Вам необходимо разобраться в преобразовании координат, тогда просмотрите исходный код класса WGS84ConversionInfo, там есть ответы на Ваши вопросы!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Преобразование координат GPS в X,Y на растре
JEY, поправка-уточнение, в данном случае, скорее всего речь идет не о трансформации (упомянутые аффинные преобразования и Гельмерт), а о проекционном преобразовании, разумеется, как вы правильно заметили, если известна СК shape-файла.
Vladimir, таким образом прежде чем углубиться в изучение классов, рекомендую четко ответить себе и нам на один вопрос, известна ли СК shape-файла и какая она, в зависимости от ответа решения могут быть разными.
Vladimir, таким образом прежде чем углубиться в изучение классов, рекомендую четко ответить себе и нам на один вопрос, известна ли СК shape-файла и какая она, в зависимости от ответа решения могут быть разными.
пристегивайтесь, турбулентность прямо по курсу
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Преобразование координат GPS в X,Y на растре

Именно поэтому я упомянул все возможные виды преобразования координатных систем, те, которые SharpMap содержит в своих исходных кодах!
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 12 янв 2009, 12:47
- Репутация: 0
Re: Преобразование координат GPS в X,Y на растре
Наверное мне поможет это:

По сути мне надо координату, полученную от GPS приемника (ну там NMEA 0183), отобразить на карте.
Нашел на сайте шарпмапа в хауту разделе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));

По сути мне надо координату, полученную от GPS приемника (ну там NMEA 0183), отобразить на карте.
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Преобразование координат GPS в X,Y на растре
Ну тогда Ваша задача почти решена. Там же, на сайте SharpMap Вы сможете найти пример в исходном коде, который реализует работу с данными GPS...
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 12 янв 2009, 12:47
- Репутация: 0
Re: Преобразование координат GPS в X,Y на растре
Что значит World Coordinates ? Это не то, что я получаю от GPS?
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 30 авг 2008, 20:55
- Репутация: 0
Re: Преобразование координат GPS в X,Y на растре
Скорее всего, но необходимо посмотреть в руководстве что есть world cordinate.
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Преобразование координат GPS в X,Y на растре
World Coordinates - это система координат, которая используется SharpMap для отображения карты. Она отличается от пользовательской системы координат...
Например: Если WorldCoordinates - это WGS84, то от пользовательской системы координат она отличается и началом отсчета и положением осей и единицами измерения!
Например: Если WorldCoordinates - это WGS84, то от пользовательской системы координат она отличается и началом отсчета и положением осей и единицами измерения!
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 12 янв 2009, 12:47
- Репутация: 0
Re: Преобразование координат GPS в X,Y на растре
Честно говоря мало что понял.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 на растре
Тут все ясно! Так с 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!
Это координаты в системе 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!
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 12 янв 2009, 12:47
- Репутация: 0
Re: Преобразование координат GPS в X,Y на растре
JEY, thank's a lot!
НО все же, как Вы делаете такое преобразование:
Как так получается что 4658.1305 = 46.968841
НО все же, как Вы делаете такое преобразование:
???В сообщениях от 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 на растре
В сообщении от 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
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
-
- Новоприбывший
- Сообщения: 12
- Зарегистрирован: 28 ноя 2011, 16:40
- Репутация: 0
Re: Преобразование координат GPS в X,Y на растре
Подскажите, а есть такой перевод в PostGis автоматом ? Не могу никак найти функцию ...JEY писал(а):46°58,1305' = 46 + (58,1305 / 60) = 46.968841
31°57,7097' = 37 + (57,7097 / 60) = 31.961828
т.е. есть в определенных полях таблицы координаты в виде 4658.1305 , 3157.7097 а в geom поле надо вставить координату POINT(46.968841, 31.961828)
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Преобразование координат GPS в X,Y на растре
Для перевода данных в градусы необходимо знать проекцию в которой у вас сейчас находятся данные. Потом просто скомпоновать геометрию на базе выбранных полей и выполнить ST_Transform.Koba писал(а):Подскажите, а есть такой перевод в PostGis автоматом ? Не могу никак найти функцию ...
т.е. есть в определенных полях таблицы координаты в виде 4658.1305 , 3157.7097 а в geom поле надо вставить координату POINT(46.968841, 31.961828)
Spatial is now, more than ever, just another column- The Geometry Column.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей