我应该将纬度和经度存储为字符串还是浮点数(或其他东西)?
(我在轨道上使用activerecord / ruby,如果这很重要的话)。
答案 0 :(得分:135)
这就是我使用的:
add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6}
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
答案 1 :(得分:21)
如果您需要进行更复杂的地理计算,可以调查Postgresql的PostGIS或MySQL的MySQL Spatial Extensions。否则,浮点数(双精度可能是一个好主意)应该有效。
编辑:看起来GeoRuby库包含一个Rails扩展,用于处理上述两个数据库的空间/ GIS扩展。
答案 2 :(得分:20)
如果您没有使用支持空间的数据库,Google地图recommends会使用大小为10,6的浮点数。这给你6位小数后的数字 - 如果你想要更高的精度,你可以相应地调整。
答案 3 :(得分:3)
我建议使用花车,虽然它并没有真正发挥作用。如果您将来希望浮动,浮动更容易进行计算。
答案 4 :(得分:2)
通常,您希望Lat / Long存储在您拥有的最大浮点类型中。在某些纬度(例如:赤道附近),经度的微小变化可能等于表面距离方面的巨大差异。
我想如果它是一个你不想做任何数学运算的字段,你可以使用一个字符串。我会避免这样做。
答案 5 :(得分:-1)
由于它们是固定的精度,因此您应该转换并存储为整数,以显着提高性能。
(见http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL)