正确的纬度和经度数据类型?(在activerecord中)

Tom*_*man 72 activerecord types ruby-on-rails

我应该将纬度和经度存储为字符串或浮点数(或其他内容)吗?

(我在轨道上使用activerecord/ruby​​,如果这很重要的话).

Gok*_*kul 140

这是我使用的:

add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6}
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
Run Code Online (Sandbox Code Playgroud)

  • 从Google Maps文档中:"为了将表格所需的存储空间保持在最低限度,您可以指定lat和lng属性是大小为浮点数(10,6)" (16认同)

Gre*_*ell 21

如果您需要进行更复杂的地理计算,可以调查PostGIS for Postgresql或MySQL Spatial Extensions for MySQL.否则,浮点(双精度可能是一个好主意)应该工作.

编辑:看起来GeoRuby库包含一个Rails扩展,用于处理上述两个数据库的空间/ GIS扩展.


Chr*_*s B 20

如果您未使用支持空间的数据库,Google地图建议使用大小为10,6的浮点数.这给你6位小数后的数字 - 如果你想要更高的精度,你可以相应地调整.