2012-12-03 81 views
0

查詢SELECT geom FROM myLayer;我在表格中得到一個2公里長的字符串,我希望我可以將它轉換爲弧度值以便稍後處理。這是我得到的一個例子:如何將幾何數據字符串轉換爲度數?

"01060000000100000001030000000100000005000000000070AC9FB81841000053BF535551410000303295B8184100001A6053555141000060FE8EB818410000670654555141000090399AB8184100004C6854555141000070AC9FB81841000053BF53555141" 

回答

2

你所看到的是表示PostGIS如何在內部存儲幾何圖形。你需要使用類似ST_AsText或ST_ASEWKT(見http://www.postgis.org/docs/ST_AsEWKT.html

所以,你比如, SELECT ST_ASEWkt(geom) FROM myLayer;

爲了得到它的弧度,有什麼我可能做的是它的項目爲十進制度數據(即WGS84),分別剝離x和y座標並轉換它們(假設這裏是點幾何)。因此,例如: SELECT ST_X(ST_Transform(geom, 4326))*3.14/180, ST_Y(ST_Transform(geom,4326))*3.15/180 FROM myLayer;

希望這有助於。

2

您有投影座標,並且您想要提供地理(未投影)座標。我敢打賭,你想度和不弧度,這樣一個共同的目標SRID是4326使用ST_Transform重新投影數據:

SELECT ST_Transform(geom, 4326) AS geom_in_degrees 
FROM your_table; 

注意的SRID應在源幾何列進行設置。如果不是,那麼就有問題。


在一個進一步的理論筆記,通過π倍的度座標轉換爲弧度(我從來沒有見過這個!),你可以擴展從原點(0,0)的座標/ 180。這可以使用仿射變換功能來完成,或者它是幫助程序ST_Scale

SELECT ST_Scale(
     ST_SetSRID(ST_Transform(geom, 4326), 0), 
     pi()/180.0, pi()/180.0) AS geom_in_radians 
FROM your_table;; 
相關問題