在 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);
我目前正在使用数据类型SPATIAL
、GEOMETRY
。
它给了我这样的错误:
无法从您发送到 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:您选择的名称(Lat
和 Long
)表明您不了解几何字段的工作原理。您在一个字段中同时存储了纬度和经度。
【参考方案1】:
您可以使用POINT()
存储到GEOMETRY
或POINT
类型的列中:
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 中存储经度/纬度的数据类型的主要内容,如果未能解决你的问题,请参考以下文章