web-dev-qa-db-fra.com

Type de données correct pour la latitude et la longitude? (dans activerecord)

Dois-je stocker la latitude et la longitude sous forme de chaînes ou de flotteurs (ou autre chose)?

(J'utilise activerecord/Ruby on Rails, si cela importe).

72
Tom Lehman

Si vous devez effectuer des calculs géographiques plus complexes, vous pouvez rechercher PostGIS pour Postgresql ou MySQL Spatial Extensions pour MySQL. Sinon, un flotteur (la double précision peut être une bonne idée) devrait fonctionner.

Edit: Il semble que la bibliothèque GeoRuby inclut une extension Rails pour travailler avec le extensions spatiales/SIG pour les deux bases de données susmentionnées.

21
Greg Campbell

Voici ce que j'utilise:

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

Si vous n'utilisez pas une base de données spatialisée, Google Maps recommande en utilisant des flotteurs de taille (10,6). Cela vous donne 6 chiffres après la décimale - si vous voulez plus de précision, vous pouvez ajuster en conséquence.

20
Chris B

Je suggère d'utiliser des flotteurs, même si cela ne fait pas vraiment une grande différence. Les flotteurs sont plus faciles à faire si vous le souhaitez à l'avenir.

3
Mike Trpcic

En général, vous voulez que Lat/Long soit stocké dans le plus grand type de flotteur que vous ayez. À certaines latitudes (par exemple: près de l'équateur), de très petits changements de longitude peuvent équivaloir à de grandes différences en termes de distance de surface.

Je suppose que si c'est un champ sur lequel vous ne voudrez jamais faire de calcul, vous pouvez utiliser une chaîne. J'éviterais ça cependant.

2
T.E.D.