2014-02-19 42 views
1

在MySQL中我有大約100桌的數據庫。MySQL中的空間 - 從轉換SRID 31287至4326

它們都含有一種名爲'shape'列,這是一個多邊形類型字段。

它包含了我所相信的信息(ST_SRID返回1,但它是錯的)是SRID 31287.

我想將其轉換爲SRID 4326,我將如何去做到這一點?

+0

請看我的答案,因爲選擇的答案很簡單。 https://stackoverflow.com/a/47559573/124486 –

回答

0

這裏有兩個問題。

  1. 你的內部表示是錯誤的,它的SRID 1,它應該是SRID 31287.改變內部表示可能在每一個數據庫:MySQL will get a mutator for it in version 8, ST_SRID,PostGIS中有ST_SetSRID
  2. 你需要真正從SRID 31287轉換SRID 4326.在PostGIS中,這可能只有只有MySQLMicrosoft SQL都不能重投SRID。

要解決PostGIS中的第一個問題,您將使用ST_SetSRID,並解決您使用ST_Transform的第二個問題。

+1

這是正確的 - 我在開發過程中切換到了postgis。不知道爲什麼這個答案被標記爲正確的。 – alexisdevarennes

-1

我只能希望這會幫助你(直接或作爲一個指針)作爲其SQL Server的一個答案,但如何...

UPDATE Table SET SpatialColumn = Geometry::STGeomFromText(SpatialColumn.STAsText(), 4326); 

當然,你可以換爲幾何,如果地理你正在使用地理欄目。您需要用您的表名和SpatialColumn替換您的空間列的名稱。

注意:這假定你的31287 SRID座標定義爲數字緯度/經度值。

+0

非常感謝。這是訣竅! – alexisdevarennes

+0

@ user2973474非常歡迎您! –

+0

這與MySQL有什麼關係? –

0

在MySQL中,它看起來是這樣的:

UPDATE `table name` SET `column name` = ST_GeomFromText(ST_AsText(`column name`), 4326); 

希望這有助於

0

這爲我工作

(對於MySQL)

UPDATE Table SET SpatialColumn = ST_GeomFromText(ST_AsText(SpatialColumn), 4326); 
相關問題