从plpython / Postgis返回SETOF点数

时间:2014-12-22 21:22:06

标签: postgresql postgis plpython

我想在pl / python3 / postgis中创建一个函数,它返回一组几何记录(例如点)。我设法创建了一个包含我的点坐标的字典,但我无法弄清楚如何将它们变成实际的postgis" point" geoms。到目前为止,这是我的代码:

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();

1 个答案:

答案 0 :(得分: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的库