【问题标题】:Datatype to Store Longitude/Latitude in Mysql在 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)表明您不了解几何字段的工作原理。您在一个字段中同时存储了纬度和经度。

标签: mysql floating-point geospatial sqldatatypes


【解决方案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)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-12-01
  • 2018-01-27
  • 2021-06-08
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多