Координаты - хранить в секундах или градусах?
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 25 фев 2012, 10:21
- Репутация: 0
- Откуда: Киев
Координаты - хранить в секундах или градусах?
Здравствуйте.
У меня есть карта из нескольких слоев. Мне нужно наносить на свои нее точки.
В каких единицах хранятся координаты карты - я могу только догадываться. Судя по смещению и масштабированию, которое пришлось сделать чтобы увидеть ее в браузере - координаты в градусах.
Т.е. я предположил, что координаты карты содержат градусы и минуты-секунды переведенные в десятичную систему (минуты/60, секунды/3600). SRID=4326
Чтобы нанести на карту свои точки я сначала пошел тем-же путем (минуты/60 + секунды/3600 + градусы, т.е. минуты и секунды получались после запятой, градусы - без изменений).
Но возникла проблема.
В админке, в редактировании координат моих точек приходится делать перевод в широту-долготу. Соответственно в базе, после всех этих делений в 90% уже теряется точность, а после обратного перевода в широту-долготу в админке и сохранении ошибка будет увеличиваться. Т.е. каждый раз сохраняя координаты, из за постоянного перевода ошибка может со временем стать уже существенной.
Можно было бы хранить мои точки в секундах,миллисекундах (благо миллисекунды дуги, по стандарту - в десятичной системе). Но тогда теряется возможность использовать встроенные функции для подсчета, например расстояния между объектами карты и моими точками - или я ошибаюсь?
Кроме того я не уверен, правильно ли понял то как хранится информация карты - могло ли быть такое что происходило деление минут и секунд перед сохранением?
Соответственно при выводе информации, например координаты 50°30' - здесь 30' дожны преобразоваться в пикселы, т.е. 30'*10 = 5 пискелов. Хранится ли 30' в PostGIS обычно как есть илив десятичной системе? Или преобразование происходит при запросе данных (сомневаюсь, но все-же...)?
Подскажите пожалуйста как быть.
Спасибо.
У меня есть карта из нескольких слоев. Мне нужно наносить на свои нее точки.
В каких единицах хранятся координаты карты - я могу только догадываться. Судя по смещению и масштабированию, которое пришлось сделать чтобы увидеть ее в браузере - координаты в градусах.
Т.е. я предположил, что координаты карты содержат градусы и минуты-секунды переведенные в десятичную систему (минуты/60, секунды/3600). SRID=4326
Чтобы нанести на карту свои точки я сначала пошел тем-же путем (минуты/60 + секунды/3600 + градусы, т.е. минуты и секунды получались после запятой, градусы - без изменений).
Но возникла проблема.
В админке, в редактировании координат моих точек приходится делать перевод в широту-долготу. Соответственно в базе, после всех этих делений в 90% уже теряется точность, а после обратного перевода в широту-долготу в админке и сохранении ошибка будет увеличиваться. Т.е. каждый раз сохраняя координаты, из за постоянного перевода ошибка может со временем стать уже существенной.
Можно было бы хранить мои точки в секундах,миллисекундах (благо миллисекунды дуги, по стандарту - в десятичной системе). Но тогда теряется возможность использовать встроенные функции для подсчета, например расстояния между объектами карты и моими точками - или я ошибаюсь?
Кроме того я не уверен, правильно ли понял то как хранится информация карты - могло ли быть такое что происходило деление минут и секунд перед сохранением?
Соответственно при выводе информации, например координаты 50°30' - здесь 30' дожны преобразоваться в пикселы, т.е. 30'*10 = 5 пискелов. Хранится ли 30' в PostGIS обычно как есть илив десятичной системе? Или преобразование происходит при запросе данных (сомневаюсь, но все-же...)?
Подскажите пожалуйста как быть.
Спасибо.
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Координаты - хранить в секундах или градусах?
В каком софте у вас "админка"?
PostGIS хранит координаты в специальной структуре (Geometry) без потери информации. В зависимости от СК координаты могут быть метры, градусы, футы, лапти и т.д. PostGIS не хранит координаты как Г-М-С (это только способ отображения градусов).
Вот непространственная база PostgreSQL может хранить в атрибутах Г-М-С, но это к ГИС имеет опосредованное отношение.
PostGIS хранит координаты в специальной структуре (Geometry) без потери информации. В зависимости от СК координаты могут быть метры, градусы, футы, лапти и т.д. PostGIS не хранит координаты как Г-М-С (это только способ отображения градусов).
Вот непространственная база PostgreSQL может хранить в атрибутах Г-М-С, но это к ГИС имеет опосредованное отношение.
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 25 фев 2012, 10:21
- Репутация: 0
- Откуда: Киев
Re: Координаты - хранить в секундах или градусах?
В админке редактируется координаты точек.
Соответственно они там в Г-М-С (градусы-минуты-секунды).
При загрузке данных для формы редактирования я перевожу все координаты в Г-М-С. При сохранении - перекодирую обратно в формат допустимый для столбца геометрии.
Соответственно у меня два пути
1. Хранить в десятичных градусах
2. Хранить в секундах
Но при постоянных перекодированиях может накапливаться увеличивающаяся погрешность (ошибка), либо необходимо будет каждый раз при сохранении делать контрольное перекодирование и сверку.
Соответственно возник вопрос - если мой слой с точками хранить в столбце геометрии в секундах (что намного точнее), а остальные слои останутся в десятичных градусах, не потеряю ли я возможность использовать встроенные функции для оперирования с данными предыдущих слоев и слоя моих точек (например для вычисления расстояния между моей точкой и объектом предыдущих слоев).
P.S.
Админка на сайте (PHP), все данные выводятся через браузер - sorry забыл написать об этом.
Соответственно они там в Г-М-С (градусы-минуты-секунды).
При загрузке данных для формы редактирования я перевожу все координаты в Г-М-С. При сохранении - перекодирую обратно в формат допустимый для столбца геометрии.
Соответственно у меня два пути
1. Хранить в десятичных градусах
2. Хранить в секундах
Но при постоянных перекодированиях может накапливаться увеличивающаяся погрешность (ошибка), либо необходимо будет каждый раз при сохранении делать контрольное перекодирование и сверку.
Соответственно возник вопрос - если мой слой с точками хранить в столбце геометрии в секундах (что намного точнее), а остальные слои останутся в десятичных градусах, не потеряю ли я возможность использовать встроенные функции для оперирования с данными предыдущих слоев и слоя моих точек (например для вычисления расстояния между моей точкой и объектом предыдущих слоев).
P.S.
Админка на сайте (PHP), все данные выводятся через браузер - sorry забыл написать об этом.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Координаты - хранить в секундах или градусах?
1. почему вы используете формат D M S а не D M S.SS
2. вы в курсе, что 0,01 секунды на экваторе это 30 см, вам точно нужна такая точность?
2. вы в курсе, что 0,01 секунды на экваторе это 30 см, вам точно нужна такая точность?
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 25 фев 2012, 10:21
- Репутация: 0
- Откуда: Киев
Re: Координаты - хранить в секундах или градусах?
Мне тоже самое сказал сегодня руководитель проекта.
(насчет точности)
Кроме того вопрос отпал полностью, т.к. решено было уйти от минут и секунд в админке и полностью перейти на десятичные градусы.
Большое спасибо за помощь!
Из ответов узнал пару полезных вещей.
P.S.
Все же не понимаю почему при сохранении предпочитают десятичные градусы, а не секунды.
Конечно точность может и не так важна, но как-то не красиво выглядит.
Например:
51°20' в десятичных градусах - 51.333333333333
51°20' в секундах - 184800 (нет никаких троек в периоде)
Второй вариант выглядит как минимум эстетичнее

Кроме того вопрос отпал полностью, т.к. решено было уйти от минут и секунд в админке и полностью перейти на десятичные градусы.
Большое спасибо за помощь!
Из ответов узнал пару полезных вещей.

P.S.
Все же не понимаю почему при сохранении предпочитают десятичные градусы, а не секунды.
Конечно точность может и не так важна, но как-то не красиво выглядит.
Например:
51°20' в десятичных градусах - 51.333333333333
51°20' в секундах - 184800 (нет никаких троек в периоде)
Второй вариант выглядит как минимум эстетичнее
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Координаты - хранить в секундах или градусах?
Видимо не хранят потому, что эту информацию потом будут читать люди. Первый вид легко отображается в обычный мозг, второй только в весьма специфический. Для полной чистоты можно еще и в двоичном счислении выводить данные - как хранятся, но люди как-то плохо устроены для такого счета. Хотя я знавал человека, который от долгого низкоуровнего программирования стал считать в 8-ой системе. Тяжело ему было в магазине у кассы...Tango писал(а):то не красиво выглядит.
Например:
51°20' в десятичных градусах - 51.333333333333
51°20' в секундах - 184800 (нет никаких троек в периоде)
Второй вариант выглядит как минимум эстетичнее
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 25 фев 2012, 10:21
- Репутация: 0
- Откуда: Киев
Re: Координаты - хранить в секундах или градусах?
Врядли люди будут читать столбцы геометрии. Даже Ваш знакомый это не осилит.
Наверное есть какие-то логичные причины, хотя может быть просто какая-нибудь традиция? Интересно было бы узнать на самом деле...
Наверное есть какие-то логичные причины, хотя может быть просто какая-нибудь традиция? Интересно было бы узнать на самом деле...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость