小编典典

8 位小数的纬度/经度应该使用哪种 MySQL 数据类型?

all

我正在处理地图数据,并且Latitude/Longitude扩展到小数点后 8 位。例如:

Latitude 40.71727401
Longitude -74.00898606

我在Google
文档
中看到 它使用:

lat FLOAT( 10, 6 ) NOT NULL,  
lng FLOAT( 10, 6 ) NOT NULL

但是,它们的小数位只能到 6。
我是否应该使用FLOAT(10, 8)或者是否有其他方法可以考虑存储这些数据,以便精确。它将与地图计算一起使用。谢谢!


阅读 93

收藏
2022-04-20

共1个答案

小编典典

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;

/* then for insertion you can */
INSERT INTO `buildings` 
(`coordinate`) 
VALUES
(POINT(40.71727401 -74.00898606));
2022-04-20