在 MySQL 数据库中存储纬度和经度值时出现问题

2022-08-30 22:40:09

我想将从Google Maps GeoCoding API获取的纬度和经度值存储在MySQL数据库中。这些值采用浮点型格式。

12.9274529

77.5905970

当我想将其存储在数据库(即数据类型浮点型)中时,它会舍入浮点数并以以下格式存储它:

12.9275

77.5906

我是否使用了错误的数据类型?如果是,那么我应该使用什么数据类型来存储纬度和经度值?

更新:

这是 Allin 请求的 CREATE TABLE

CREATE TABLE `properties` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text,
  `latitude` float DEFAULT NULL,
  `longitude` float DEFAULT NULL,
  `landmark` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `serial` (`serial`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

答案 1

如果您不希望数字近似,则需要使用十进制

定点(精确值)类型

DECIMAL 和 NUMERIC 类型存储精确的数值数据值。当必须保持精确精度(例如,对于货币数据)时,将使用这些类型。

现在“你来了”的答案:

用。其中 是数字中的总位数,是 后面的位数。(这意味着之前的点将是数字。DECIMAL(10,7)107.3

根据需要调整这些数字。另外请查看我在答案前面链接的手动条目。


答案 2

MySQL具有用于GIS应用程序的特殊类型。

使用类型并查看:point

http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html

有关一般性讨论,请参阅:http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html

有些人制作了一个特殊的UDF来计算球体(即地球)
上点之间的距离 参见:http://www.lenzg.net/archives/220-New-UDF-for-MySQL-5.1-provides-GIS-functions-distance_sphere-and-distance_spheroid.html

操作方法如下:http://howto-use-mysql-spatial-ext.blogspot.com/2007/11/using-circular-area-selection.html


推荐