首页 > 数据库 > mysql教程 > MySQL中如何精确存储小数点后8位的经纬度数据?

MySQL中如何精确存储小数点后8位的经纬度数据?

Linda Hamilton
发布: 2024-12-01 11:38:09
原创
866 人浏览过

How Can I Precisely Store Latitude/Longitude Data with 8 Decimal Places in MySQL?

MySQL 精确存储小数点后 8 位的经纬度数据

问题:

处理地图数据时,以足够的精度存储纬度/经度坐标至关重要。在这种情况下,要求是容纳小数点后 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板