Выбор между форматами хранения координат
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 14 июл 2016, 12:00
- Репутация: 0
Выбор между форматами хранения координат
Доброго времени суток.
Коротенько опишу проблему: В БД проекта приходится хранить координаты объектов, в legacy коде изначально было хранение координат в радианах (при этом долгота была смещена, т.е. левая часть [-180 : 0) пересчитывались в (180 360]). Сейчас трюки с пересчётом ушли в прошлое и координаты продолжают храниться с использованием радиан, но уже под "соусом" PostGIS.
Тут возникает основной вопрос и пару дополнительных:
1. Координаты можно хранить в различных видах: радианы, градусы десятичные, метры. В принципе PostGIS это позволяет без особых проблем. Но всё же червячок сомнений гложет и возникает вопрос: какой вид для хранения считается наилучшим? (Радианы для хранения мы использовали де факто из-за расчётов, но это не принципиально).
2. Может кто-то сталкивался с "поворотом" долготы и может пояснить для чего могли такое делать?
3. В связи с приснопамятным переходом на ПЗ-90.11, можете пояснить каким образом координаты записывать в БД (интересует SRID для ПЗ-90.х)?
4. Если хранить в радианах или десятичных градусах, то сколько знаков после запятой считается нормальной точностью вплоть до сотых секнды?
Заранее благодарен за любую помощь!
Коротенько опишу проблему: В БД проекта приходится хранить координаты объектов, в legacy коде изначально было хранение координат в радианах (при этом долгота была смещена, т.е. левая часть [-180 : 0) пересчитывались в (180 360]). Сейчас трюки с пересчётом ушли в прошлое и координаты продолжают храниться с использованием радиан, но уже под "соусом" PostGIS.
Тут возникает основной вопрос и пару дополнительных:
1. Координаты можно хранить в различных видах: радианы, градусы десятичные, метры. В принципе PostGIS это позволяет без особых проблем. Но всё же червячок сомнений гложет и возникает вопрос: какой вид для хранения считается наилучшим? (Радианы для хранения мы использовали де факто из-за расчётов, но это не принципиально).
2. Может кто-то сталкивался с "поворотом" долготы и может пояснить для чего могли такое делать?
3. В связи с приснопамятным переходом на ПЗ-90.11, можете пояснить каким образом координаты записывать в БД (интересует SRID для ПЗ-90.х)?
4. Если хранить в радианах или десятичных градусах, то сколько знаков после запятой считается нормальной точностью вплоть до сотых секнды?
Заранее благодарен за любую помощь!
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Выбор между форматами хранения координат
1. Принято хранить в градусах. Можно использовать тип geography, хотя во многих случаях удобней всё-таки по-старинке в geometry (больше функций доступно), а в geography кастовать по необходимости, когда нужны расчёты на эллипсоиде.
2. Трудно сказать. Возможно, разработчики решили, что с неотрицательными числами работать удобнее. Если данные на Россию, Чукотка не отваливается.
3. Добавьте своё определение в таблицу spatial_ref_sys. Из коробки там есть только старая ПЗ-90 (во всяком случае, в той версии, что установлена у меня). Разница будет только в параметрах перехода к WGS84. О стандартном SRID для ПЗ-90.11 слышать не приходилось (может, кто-нибудь знает?) Вроде бы значения больше 32768 зарезервированы для пользовательских определений, можно выбрать любой из этого диапазона.
4. Шести знаков после запятой будет достаточно.
2. Трудно сказать. Возможно, разработчики решили, что с неотрицательными числами работать удобнее. Если данные на Россию, Чукотка не отваливается.
3. Добавьте своё определение в таблицу spatial_ref_sys. Из коробки там есть только старая ПЗ-90 (во всяком случае, в той версии, что установлена у меня). Разница будет только в параметрах перехода к WGS84. О стандартном SRID для ПЗ-90.11 слышать не приходилось (может, кто-нибудь знает?) Вроде бы значения больше 32768 зарезервированы для пользовательских определений, можно выбрать любой из этого диапазона.
4. Шести знаков после запятой будет достаточно.
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 14 июл 2016, 12:00
- Репутация: 0
Re: Выбор между форматами хранения координат
Спасибо за ответы.
Но тогда есть ещё пара моментов:
Но тогда есть ещё пара моментов:
А каким образом PostGIS, точнее даже функционал библиотеки geos, различают в чём им передают координаты при произведении расчётов? Закладка параметра в SRID?Ariki писал(а):1. Принято хранить в градусах. Можно использовать тип geography, хотя во многих случаях удобней всё-таки по-старинке в geometry (больше функций доступно), а в geography кастовать по необходимости, когда нужны расчёты на эллипсоиде.
Для градусов соглашусь. Для радиан по подсчётам 8 знаков.Ariki писал(а):4. Шести знаков после запятой будет достаточно.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Выбор между форматами хранения координат
Если вы посмотрите определения систем координат в столбцах srtext и proj4text таблицы spatial_ref_sys, то найдёте там указание на единицы измерения.heleo писал(а):А каким образом PostGIS, точнее даже функционал библиотеки geos, различают в чём им передают координаты при произведении расчётов? Закладка параметра в SRID?
Совершенно верно.heleo писал(а):Для градусов соглашусь. Для радиан по подсчётам 8 знаков.
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Выбор между форматами хранения координат
Кажется libgeos все расчеты делает на плоскости. А вот на сфере у PostGIS есть своя библиотека - liblwgeom.heleo писал(а): А каким образом PostGIS, точнее даже функционал библиотеки geos, различают в чём им передают координаты при произведении расчётов? Закладка параметра в SRID?
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Выбор между форматами хранения координат
Да, действительно, поэтому geos'у всё равно, в каких единицах координаты. Если нужно считать буфера или расстояния, нужно либо преобразовывать в geography, переведя предварительно в градусы, либо явно использовать функции, работающие на сфере или эллипсоиде (опять-таки подразумеваются градусы), или использовать проекцию с допустимыми для конкретной задачи искажениями (в этом случае результат будет в единицах проекции).
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 14 июл 2016, 12:00
- Репутация: 0
Re: Выбор между форматами хранения координат
Спасибо. Погуглил что там в сорцах.Дмитрий Барышников писал(а):Кажется libgeos все расчеты делает на плоскости. А вот на сфере у PostGIS есть своя библиотека - liblwgeom.heleo писал(а): А каким образом PostGIS, точнее даже функционал библиотеки geos, различают в чём им передают координаты при произведении расчётов? Закладка параметра в SRID?
* PROJ4 (Required, Version 4.6.0 or higher):
The PROJ4 catographic projection library is required if you want to use the
ST_Transform() function to reproject features within the database.
* GEOS (Required, Version 3.3.0 or higher
- 3.4+ is strongly recommended and needed for full features):
The GEOS library provides support for exact topological tests such as
ST_Touches(), ST_Contains(), ST_Disjoint() and spatial operations such as
ST_Intersection(), ST_Union() and ST_Buffer(). GEOS 3.4+ is recommended.
Если верить их README.postgis, получается библиотека liblwgeom служит для поддержки топологии, если под этим подразумевается "сфера", ну что же будем знать теперь)
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 14 июл 2016, 12:00
- Репутация: 0
Re: Выбор между форматами хранения координат
Благадарствую. Значит будем переходить на десятичные градусы в дальнейшем.Ariki писал(а):Да, действительно, поэтому geos'у всё равно, в каких единицах координаты. Если нужно считать буфера или расстояния, нужно либо преобразовывать в geography, переведя предварительно в градусы, либо явно использовать функции, работающие на сфере или эллипсоиде (опять-таки подразумеваются градусы), или использовать проекцию с допустимыми для конкретной задачи искажениями (в этом случае результат будет в единицах проекции).
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей