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

9
'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)

错误图片:img5


是的,它们两个都属于GEOMETRY类型。 - CodeTalk
请发布或描述表格?没有它,给出建议是没有意义的。 - Michael Durrant
@user975947:你选择的名称(LatLong)表明你没有理解几何字段的工作原理。你在一个字段中存储了纬度和经度。 - ypercubeᵀᴹ
请看我遇到的错误以上。 - CodeTalk
输入的值应该是这个样子吗? - CodeTalk
显示剩余2条评论
2个回答

18

你可以使用 POINT() 将数据存储到类型为 GEOMETRYPOINT 的列中:

POINT(43.005895, -71.013202)

如果几何列的名称为geom,你可以使用以下方法:

INSERT INTO table
    ( ..., geom, ...) 
  VALUES
    ( ..., POINT(43.005895, -71.013202), ...)
如果您想显示存储的数据,可以使用 X()Y() 函数:
SELECT X(geom) AS x, Y(geom) AS y
FROM table 

这很有帮助,我猜我只是忘记添加point()了。以前从未使用过几何值。谢谢 ypercube! - CodeTalk
当我使用以下代码时:INSERT INTO Table(fanDetLocZip, fanDetLocCity,fanDetLocState,fanDetLocLatLong,fanDetLocTZ,fanDetLocDST) VALUES(00210,'Portsmouth','NH',point(43.005895,-71.013202),-5,1),它会输入奇怪的值。请参见上面的截图。 - CodeTalk
奇怪,好吧,至少能用。也许是浏览器的问题或者其他什么原因。谢谢YPerCube! - CodeTalk
3
根据这里描述的内容,"POINT" 应该是指位于坐标 (43.005895, -71.013202) 的点吗? http://dev.mysql.com/doc/refman/5.0/en/gis-wkt-format.html - nolazybits

2
为什么不使用Float类型来表示您的纬度/经度?
Float (10,6)

3
用float存储纬度和经度并不好。用double是存储纬度/经度的最佳数据类型。阅读完整讨论 - ArunRaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接