2014-07-12 107 views
0

我試圖在postgresql中將球面座標轉換爲直角座標。如何在postgresql中將球面座標轉換爲直角座標

插圖:

  • 輸入:仰角,方位角
  • 輸出:X,Y,Z

樣本數據

hour Elevation Azimuth x y z 
06:29:00 -0.833 67.72 0.379094033 0.9252439455 -0.0145380682 
07:00:00 6.28 68.75 0.3602640625 0.9264147202 0.1093872546 
08:00:00 20.15 69.78 0.3244723425 0.880938168 0.3444787991 
09:00:00 34.06 69.39 0.2916199874 0.7754290366 0.5600603468 

任何查詢或功能在那裏轉換?

我試圖創建一個函數創建

CREATE OR REPLACE FUNCTION ST_spr2cart(point_a geometry, point_b geometry) 
    RETURNS geometry AS 
$BODY$SELECT ST_SetSRID(ST_MakePoint(
    Cos(a1) * Cos(b1), 
    Cos (a1) * sin (b1), 
    sin(a1)), ST_SRID($1)) 
FROM (SELECT 
    ST_m($1) AS a1, 
    ST_m($2) AS b1 
) AS f$BODY$ 
LANGUAGE sql IMMUTABLE; 

功能,但是當我執行它,有一個錯誤。

+0

我加了我試過的任何東西...... – user2177232

+1

你會得到什麼錯誤? –

回答

0
CREATE OR REPLACE FUNCTION ST_spr2cart(point_a float, point_b float) 
    RETURNS geometry AS 
$BODY$SELECT ST_MakePoint(
    Cos(a * pi()/180) * Cos(b * pi()/180), 
    Cos(a * pi()/180) * sin(b * pi()/180), 
    sin(a * pi()/180)) 
FROM (SELECT 
$1 AS a, 
$2 AS b 
) AS f$BODY$ 
LANGUAGE sql IMMUTABLE; 

select st_astext(ST_spr2cart (elevation , azimuth)) from tablename; 
+0

用'pi()'替換'3.14159'。一般來說,大多數軟件本身使用弧度來表示三角形角度。 –

相關問題