在 Mysql 中存储经度/纬度的数据类型

Posted

技术标签:

【中文标题】在 Mysql 中存储经度/纬度的数据类型【英文标题】:Datatype to Store Longitude/Latitude in Mysql 【发布时间】:2012-03-22 12:59:18 【问题描述】:
'43.005895','-71.013202'

尝试使用:

INSERT INTO table(fanDetLocZip, fanDetLocCity, fanDetLocState, fanDetLocLat, fanDetLocLong, fanDetLocTZ, fanDetLocDST)  
VALUES(00210, 'Portsmouth', 'NH', '43.005895', '-71.013202', -5, 1);

我目前正在使用数据类型SPATIALGEOMETRY

它给了我这样的错误:

无法从您发送到 GEOMETRY 字段的数据中获取几何对象

所有值都有 2 位数字,小数点后有 6 位小数。我如何将它存储在mysql中?

我在使用时遇到错误:INSERT INTO Table(fanDetLocZip, fanDetLocCity, fanDetLocState, fanDetLocLatLong, fanDetLocTZ, fanDetLocDST) VALUES(00210, 'Portsmouth', 'NH', point(43.005895,-71.013202), -5,1)

错误图片:

【问题讨论】:

能否添加表的定义(CREATE 语句)?哪一列的类型是 GEOMETRY 这是两列。你有 GEOMETRY 或 POINT 类型的列吗? 是的,这两个是 GEOMETRY 类型 发布创建或描述表?没有它,给建议是没有意义的。 @user975947:您选择的名称(LatLong)表明您不了解几何字段的工作原理。您在一个字段中同时存储了纬度和经度。 【参考方案1】:

您可以使用POINT() 存储到GEOMETRYPOINT 类型的列中:

POINT(43.005895, -71.013202)

如果几何列被命名为geom,你可以使用这个:

INSERT INTO table
    ( ..., geom, ...) 
  VALUES
    ( ..., POINT(43.005895, -71.013202), ...)

如果要显示存储的数据,可以使用X() and Y() 函数:

SELECT X(geom) AS x, Y(geom) AS y
FROM table 

【讨论】:

这很有帮助,我猜我只是没有添加 point() 。以前从未使用过几何值。谢谢超立方体! 当我使用:INSERT INTO Table(fanDetLocZip, fanDetLocCity,fanDetLocState,fanDetLocLatLong,fanDetLocTZ,fanDetLocDST) VALUES(00210,'朴茨茅斯','NH',point(43.005895,-71.013202),-5 ,1) 它输入的值很奇怪。见上面的截图。 奇怪,好吧,至少有效。也许它是一个浏览器错误或什么的。谢谢 YPerCube! 不应该是这里描述的 POINT 是 POINT(43.005895 -71.013202) 吗? dev.mysql.com/doc/refman/5.0/en/gis-wkt-format.html【参考方案2】:

你为什么不使用浮点类型来代替你的纬度/经度?

Float (10,6)

【讨论】:

float 不好存储经纬度。 Double 是存储纬度/经度的最佳数据类型。 Read Complete Discussion

以上是关于在 Mysql 中存储经度/纬度的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

存储纬度和经度的最佳 mysql 数据类型是啥?

用于存储纬度和经度的数据类型 [重复]

存储经度和纬度值需要哪种数据类型[重复]

float 和 double 数据类型是不是适合存储纬度和经度? [复制]

mysql存储地图经纬度的表怎么设计?

纬度和经度的数据类型是啥?