ST_Transform 和 ST_SetSRID:是否應轉換投影?
人們常常混淆 ST_Transform 與 ST_SetSRID 函式。
-
ST_SetSRID
沒有變更座標,而是新增描述座標實際上具有的空間參考系統的元資料。如果您將您的 WGS 84 經緯度資料蓋上基於公尺的投影。猜猜看?它仍然是經緯度。任何名稱的鏟子仍是鏟子,因此不要使用 ST_SetSRID,並期待奇蹟般地取得公尺座標。 -
ST_Transform
用於將基礎座標從已知的空間參考系統變更為另一個已知的空間參考系統。
使用標準 ALTER TABLE 指令來修正 SRID 錯誤非常容易。以下是幾個範例。
您忘記指定資料的空間參考系統或是指定錯誤,但您知道它是 WGS 84 經緯度
ALTER TABLE mytable
ALTER COLUMN geom TYPE geometry(MultiPolygon, 4326)
USING ST_SetSRID(geom, 4326);
您的資料為 WGS 84 經緯度,而且您正確標籤,但您希望使用美國國家地圖集公尺
ALTER TABLE mytable
ALTER COLUMN geom
TYPE geometry(MultiPolygon, 2163)
USING ST_Transform(geom, 2163);
您將您的資料匯入時未知,您知道它是 WGS 84 經緯度,但您想要轉換成美國國家地圖集公尺
ALTER TABLE mytable
ALTER COLUMN geom
TYPE geometry(MultiPolygon, 2163)
USING ST_Transform(ST_SetSRID(geom, 4326), 2163);