2017-09-28 48 views
0

我不是那麼喜歡地理空間數據,我有以下問題。我正在使用MySql,我發現一些困難,試圖將具有的字段的值添加爲此錶行中的類型。如何在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 
) 
) 

正如你看到麪包車此表包含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 

我得到這個錯誤消息e:

#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 

出了什麼問題?我錯過了什麼?我該如何解決這個問題?

回答

0

如果您能夠將分隔列中的經度/緯度值導入爲例如DOUBLE數據類型,那麼你可以試試這個:

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

在這種情況下,我添加了列「coords」作爲POINT類型。 然後使用lan和lon列更新coords列。

相關問題