【问题标题】:Return SETOF Points from plpython/Postgis从 plpython/Postgis 返回 SETOF 点
【发布时间】:2014-12-23 10:00:10
【问题描述】:

我想在 pl/python3/postgis 中创建一个返回一组几何记录(例如点)的函数。我设法用我的点的坐标创建了一个字典,但我不知道如何将它们变成实际的 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();

【问题讨论】:

    标签: postgresql postgis plpython


    【解决方案1】:

    您可以使用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 这样的库。

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多