mysql - 如何正确设置MySql数据库中具有类型点的字段的值?

标签 mysql database gps geospatial mysql-spatial

我不太喜欢地理空间数据,并且遇到以下问题。我正在使用MySql,并且在尝试添加具有point作为此表行中的类型的字段的值时发现一些困难。

我有一个这样的表:

CREATE TABLE MarketDetails (
  id              BigInt(20) NOT NULL AUTO_INCREMENT,
  localization_id BigInt(20) NOT NULL,
  market_name     VarChar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
  market_cod      VarChar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
  description     Text CHARACTER SET latin1 COLLATE latin1_swedish_ci,
  gps             point, 
  PRIMARY KEY (
      id
  )
)

正如您所看到的,该表包含类型为gps字段。在我看来,这种数据类型最适合存储点的 GPS 坐标。

我尝试使用 IDE 插入此字段的值,但它不起作用...使用我的 IDE,我可以插入所有其他字段值,但不能插入 gps 字段值。

我如何尝试手动执行此操作?例如我插入了这条记录:

id               localization_id      market_name       market_cod       description                  gps                                                                                                                                                                                                                                                            
---------------------------------------------------------------------------------------------------------------
1                31                   Kibuye            cod001           Kibuye Village Market        

如何正确创建一个更新 SQL 查询来更新此记录,并使用这些坐标设置 gps 字段?:

lat: -2,17897
long: 29,371491

我正在尝试类似的方法,但它不起作用:

UPDATE  MarketDetails
SET     gps = Point(ST_GeomFromText('POINT(1 1)'))
WHERE id = 1

我收到此错误消息:

#42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') WHERE id = 1' at line 2

出了什么问题?我缺少什么?我该如何解决这个问题?

最佳答案

如果您能够在单独的列中导入纬度/经度值,例如DOUBLE 数据类型,那么你可以试试这个:

ALTER TABLE table ADD coords Point;
UPDATE table SET coords = POINT(lat, lon);

在本例中,我添加了“coords”列作为 POINT 类型。 然后使用 lan 和 lon 列更新 coords 列。

关于mysql - 如何正确设置MySql数据库中具有类型点的字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471135/

相关文章:

mysql - 根据mysql中的另一列从列中检索数据

MySQL触发器不起作用,没有错误

mysql - 如何使用mysql join on or condition?

javascript - 移动设备 webapp 的 "Find Nearest"进程?

python - 比较/聚类轨迹((x,y)点的 GPS 数据)和挖掘数据

java - Spring 数据库负载测试 : How to release connections

SQL如何处理页面上的大量评论/注释

SQL Server 存储过程的含义

database - 在Go中迭代包含多个结构的文件

ios - 没有位置坐标没有互联网与显着位置监控