我正在处理地图数据,纬度/经度扩展到小数点后8位。例如:
Latitude 40.71727401
Longitude -74.00898606
我在谷歌文档中看到的 它使用:
lat FLOAT( 10, 6 ) NOT NULL,
lng FLOAT( 10, 6 ) NOT NULL
但是,它们的小数点后只到6。 我应该使用FLOAT(10,8)还是有其他方法来存储这些数据,以便它是精确的。它将用于地图计算。谢谢!
我正在处理地图数据,纬度/经度扩展到小数点后8位。例如:
Latitude 40.71727401
Longitude -74.00898606
我在谷歌文档中看到的 它使用:
lat FLOAT( 10, 6 ) NOT NULL,
lng FLOAT( 10, 6 ) NOT NULL
但是,它们的小数点后只到6。 我应该使用FLOAT(10,8)还是有其他方法来存储这些数据,以便它是精确的。它将用于地图计算。谢谢!
当前回答
你应该简单地使用varchar (20)
其他回答
你应该简单地使用varchar (20)
不要使用浮动…它会环绕你的坐标,导致一些奇怪的现象。
使用十进制
在rails上使用迁移ruby
class CreateNeighborhoods < ActiveRecord::Migration[5.0]
def change
create_table :neighborhoods do |t|
t.string :name
t.decimal :latitude, precision: 15, scale: 13
t.decimal :longitude, precision: 15, scale: 13
t.references :country, foreign_key: true
t.references :state, foreign_key: true
t.references :city, foreign_key: true
t.timestamps
end
end
end
在laravel中使用十进制列类型进行迁移
$table->decimal('latitude', 10, 8);
$table->decimal('longitude', 11, 8);
有关更多信息,请参阅可用的列类型
自从提出这个问题以来,MySQL现在已经支持空间数据类型了。所以目前接受的答案是正确的,但如果你正在寻找额外的功能,如找到给定多边形内的所有点,那么使用POINT数据类型。
检查Mysql文档中的地理空间数据类型和空间分析功能