Правильный тип данных для широты и долготы? (в activerecord)

Должен ли я хранить широту и долготу как строки или поплавки (или что-то еще)?

(Я использую activerecord/ruby ​​на рельсах, если это имеет значение).

Ответ 1

Если вам нужно выполнить более сложные географические вычисления, вы можете исследовать PostGIS для Postgresql или MySQL Spatial Extensions для MySQL. Иначе, float (двойная точность может быть хорошей идеей) должен работать.

Редактировать: похоже, что библиотека GeoRuby включает расширение Rails для работы с пространственными расширениями/расширениями ГИС для обеих вышеупомянутых баз данных.

Ответ 2

Это то, что я использую:

add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6}
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}

Ответ 3

Если вы не используете базу данных с пространственной поддержкой, Google Maps рекомендует использовать поплавки размера (10,6). Это дает вам 6 цифр после десятичного числа - если вы хотите больше точности, вы можете соответствующим образом настроить.

Ответ 4

Я бы предложил использовать float, хотя на самом деле это не так сильно отличается. Поплавки легче выполнять вычисления, если вы когда-либо захотите этого в будущем.

Ответ 5

Как правило, вы хотите, чтобы Lat/Long хранился в самом большом поплавком, который у вас есть. На некоторых широтах (например, около экватора) очень малые изменения долготы могут приравниваться к большим различиям в терминах поверхностного расстояния.

Я полагаю, что если это поле, которое вы никогда не захотите делать математикой, вы можете использовать строку. Я бы этого не избежал.