为经纬度修正数据types? (在activerecord中)
我应该将经纬度存储为string还是浮点数(或其他)?
(我使用的是rails上的activerecord / ruby,如果有的话)。
如果您需要执行更复杂的地理计算,则可以调查PostGIS for Postgresql或MySQL Spatial Extensions for MySQL。 否则,float(双精度可能是一个好主意)应该工作。
编辑:它看起来像GeoRuby库包括一个Rails扩展与上述两个数据库的空间/ GIS扩展工作。
这是我使用的:
add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6} add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
如果您没有使用空间启用的数据库,则Google地图build议使用大小为(10,6)的浮点数。 在小数点后面给你6位数 – 如果你想要更高的精度,你可以相应地进行调整。
我会build议使用浮动,但它并没有真正做出这么大的差别。 如果你将来愿意的话,花车更容易计算。
一般来说,您希望Lat / Long存储在您所拥有的最大浮点types中。 在一些纬度地区(例如:赤道附近),经度的微小变化可能等同于地表距离的巨大差异。
我想如果这是一个你永远不想做任何math的领域,你可以使用一个string。 我会尽量避免。
由于它们的精度是固定的,因此您应该将其转换并存储为整数,以显着提高性能。
(请参阅http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL )