1

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

1 に答える 1

1

plyp.executeを使用してジオメトリ オブジェクトにアクセスし、それらを関数から返すことができますが、戻り値の型は基本的にジオメトリを表す 16 進数でエンコードされた文字列になります。

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

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

  return pts
 $$
LANGUAGE plpython3u;

このリンクにはいくつかの例もあります。

あなたの場合、ST_MakePoint または ST_GeomFromText を使用して、プロシージャ内のポイントを実際に構築することができます。

または、 plpython proc 内でshapelyのようなライブラリを使用することもできます。

于 2014-12-23T02:00:10.840 に答える