问题:
处理地图数据时,以足够的精度存储纬度/经度坐标至关重要。在这种情况下,要求是容纳小数点后 8 位的值。
讨论:
引用的 Google 文档建议使用 FLOAT(10, 6) 字段,这最多允许 6 位小数。为了容纳 8 位小数,可以考虑使用 FLOAT(10, 8)。不过,还有一个更精确、更合适的解决方案。
解决方案:
MySQL 提供 Spatial 数据类型,而 Point 是一个合适的单点数据类型。用于精确存储地理坐标的值类型。以下示例演示了其用法:
CREATE TABLE `buildings` ( `coordinate` POINT NOT NULL, /* Even from v5.7.5 you can define an index for it */ SPATIAL INDEX `SPATIAL` (`coordinate`) ) ENGINE=InnoDB;
要插入数据,可以使用如下 SQL 语句:
INSERT INTO `buildings` (`coordinate`) VALUES (POINT(40.71727401 -74.00898606));
Point 数据类型确保坐标以高精度存储,保留精确地图计算所需的 8 位小数。
以上是MySQL中如何精确存储小数点后8位的经纬度数据?的详细内容。更多信息请关注PHP中文网其他相关文章!