2013-03-07 72 views
1

我有osm2pgsql進口了一些OSM數據:如何解決混合緯度/經度爲了

​​

默認SRID爲4326:

由OpenStreetMap的也用
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] 

,Mapquest服務,谷歌(我已經讀過這個地方)。 現在在我的DB的樣子(例如)的幾何形狀

LINESTRING(10.02 54.34,10.01 54.33,10.03 54.38) 

代替:

LINESTRING(54.34 10.02,54.33 10.01,54.38 10.03) 

的緯度/每個點LNG值被切換。爲什麼?我可以解決這個問題,而不需要再次輸入數據嗎?

我不想在每個查詢之前/之後的應用程序中執行此操作。

回答

1

當然可以這樣做,必須將線串制動爲單個點,然後通過切換X和Y來創建一個新點,再次製作一個線串,然後用新線替換線串。像這樣,只需用你的名字替換名字。

UPDATE the_table AS t 
SET the_linestring=l.the_linestring 
FROM 
    (SELECT id, 
      st_makeline(point) AS the_linestring 
    FROM 
    (SELECT t.id, 
       st_makepoint(st_y(st_pointn(the_linestring,buz)) ,st_x(st_pointn(the_linestring,index_num))) AS point 
     FROM the_table t 
     JOIN 
     (SELECT id, 
       generate_series(1,st_npoints(the_linestring)) AS index_num 
     FROM the_table) AS q ON t.id=q.id) AS q 
    GROUP BY q.id) AS l 
WHERE t.id=l.id; 
+0

好吧,我會認爲這是一個修復。但爲什麼數據是用螺旋座標導入的?我不認爲這是它應該工作的方式。 – dompie 2013-03-11 19:27:36

+0

@dompie我不知道說實話。 – 2013-03-11 19:39:06

2

使用函數ST_FlipCoordinates將YX換成XY軸順序。

+1

這正是我正在尋找的。不幸的是,它只能在PostGIS 2.0中使用 – dompie 2013-03-11 19:22:34