2014-12-22 30 views
1

我想在pl/python3/postgis中創建一個返回一組幾何記錄(例如點)的函數。我設法用我的點的座標創建了一本字典,但是我無法弄清楚如何將它們變成實際的postgis「point」geoms。這是到目前爲止我的代碼:返回SETOF來自plpython/Postgis的積分

CREATE OR REPLACE FUNCTION grid_points() 
    RETURNS text AS 
    $$ 

    grid_cell_length_x = 2 
    grid_cell_length_y = 1 

    grid_points = {} 

    for i in range(0, 3): 
    for j in range(0,3): 
     key = "grid_poin_" + str(i) + "" + str(j) 

     x = 5 + i * grid_cell_length_x 
     y = 10 - j * grid_cell_length_y 

     value = (x, y) 
     grid_points[key] = value 

    return(
    grid_points) 

$$ 
LANGUAGE plpython3u; 

select grid_points(); 

回答

0

您可以使用plyp.execute訪問幾何對象和函數返回他們 - 雖然返回類型基本上將表示幾何一個十六進制編碼的字符串。

CREATE OR REPLACE FUNCTION grid_points() 
    RETURNS SETOF geometry AS $$ 

    pts = plpy.execute ("SELECT geom FROM sometable WHERE ...") 

    return pts 
$$ 
LANGUAGE plpython3u; 

還有一對examples on this link

就你而言,你可能想要使用ST_MakePoint或ST_GeomFromText來實際構造過程中的點。

或者,您可以在plpython proc中使用像shapely這樣的庫。