Ruby on rails 纬度和经度的数据类型是否正确?(在activerecord中)

Ruby on rails 纬度和经度的数据类型是否正确?(在activerecord中),ruby-on-rails,activerecord,types,Ruby On Rails,Activerecord,Types,我应该将纬度和经度存储为字符串或浮点数(或其他形式) (如果有必要的话,我正在使用activerecord/RubyonRails) 更新: Mysql在开发中,postgresql在生产中(为什么这很重要?我建议使用浮动,尽管它并没有带来太大的区别。如果您希望在将来使用浮点运算,则可以更轻松地对其进行计算。如果您需要进行更复杂的地理计算,可以研究Postgresql或MySQL。否则,浮点(双精度可能是个好主意)应该可以工作 编辑:该库似乎包含一个Rails扩展,用于处理上述两个数据库的spa

我应该将纬度和经度存储为字符串或浮点数(或其他形式)

(如果有必要的话,我正在使用activerecord/RubyonRails)

更新:


Mysql在开发中,postgresql在生产中(为什么这很重要?

我建议使用浮动,尽管它并没有带来太大的区别。如果您希望在将来使用浮点运算,则可以更轻松地对其进行计算。

如果您需要进行更复杂的地理计算,可以研究Postgresql或MySQL。否则,浮点(双精度可能是个好主意)应该可以工作


编辑:该库似乎包含一个Rails扩展,用于处理上述两个数据库的spatial/GIS扩展。

通常,您希望将Lat/Long存储在最大的浮点类型中。在某些纬度(如赤道附近),经度的微小变化就相当于地表距离的巨大差异


我想如果这是一个你永远不想做任何数学运算的字段,你可以使用一个字符串。不过,我还是要避免这种情况。

如果你没有使用空间数据库,谷歌地图会使用大小(10,6)的浮动。小数点后有6位数字-如果需要更高的精度,可以相应调整。

这就是我使用的:

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

因为它们的精度是固定的,所以您应该将它们转换并存储为整数,以显著提高性能


(请参阅)

Mysql在开发中,postgresql在生产中(为什么这很重要?)值的可能重复应该在区间(-180,180)内,对吗?为什么您的比例不是7?来自Google Maps文档:“为了将表所需的存储空间保持在最小值,您可以指定lat和lng属性为大小为(10,6)的浮动”您可以尝试另一个更流行的库。或结帐