0

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

我有一张这样的桌子:

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

如您所见,此表包含类型为point的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

怎么了?我错过了什么?我该如何解决这个问题?

4

1 回答 1

0

如果您能够将分隔列中的纬度/经度值导入为例如 DOUBLE 数据类型,那么您可以尝试以下操作:

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

在这种情况下,我将“坐标”列添加为 POINT 类型。然后使用 lan 和 lon 列更新 coords 列。

于 2018-02-26T14:21:48.310 回答