2014-12-22 2 views
1

pl/python3/postgis에 지오메트리 레코드 세트 (예 : 점)를 반환하는 함수를 만들고 싶습니다. 나는 점들의 좌표로 사전을 만들었지 만, 나는 그들을 실제적인 postgis "점"기하학으로 변환하는 방법을 알 수 없다. - 반환 형식은 본질적 형상을 나타내는 진수 인코딩 된 문자열입니다 있지만plffthon/Postgis에서 SETOF 포인트를 반환하십시오.

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를 사용하여 프로 시저 내의 점을 실제로 생성하고자 할 수 있습니다.

또는 shapely과 같은 라이브러리를 plpython proc 안에 사용할 수 있습니다.