それらを単一のクエリに含める必要がある場合は、ST_X
の出力値を使用するだけです。 およびST_Y
ST_MakePoint
内 関数。 x値とy値が列にあるか、操作の結果である場合は、関数でこれらの値を渡す必要があります。
SELECT ST_MakePoint(column_x,column_y) FROM t;
または、ジオメトリ内にある場合。
SELECT ST_MakePoint(ST_X(a_geom),ST_Y(a_geom)) FROM t;
CTE
の使用 またはサブクエリ(コメントを参照)。原則は似ていますが、CTEを使用して一時的なセットを作成し、それをテーブルとして使用します。次の例では、x値とy値を生成し、j
という名前を付けます。 次に、外部クエリでこれらの値をキャッチして、別のSELECT
でポイントを作成します。 、ただし今回はj
を使用します :
WITH j AS (
SELECT 1 AS X, 2 AS y -- your big query goes here
)
SELECT ST_MakePoint(X,Y) FROM j;
クエリに適用する..
デモ(サブクエリ): db<>fiddle
デモ(CTE): db<>fiddle
WITH j AS (
SELECT
ST_X((ST_DumpPoints(ST_AsText(ST_Intersection(
ST_SetSRID(
ST_MakeEnvelope(
ST_X(point),
ST_Y(point),
ST_X(point)+{width},
ST_Y(point)+{height}),
25832),ST_Buffer(j.geometry, {bufferRadius})
)))).geom) AS XOfLowerLeftOfGridCellIntersectingWithBuffer,
ST_Y((ST_DumpPoints(ST_AsText(ST_Intersection(
ST_SetSRID(
ST_MakeEnvelope(
ST_X(point),
ST_Y(point),
ST_X(point)+{width},
ST_Y(point)+{height}),
25832),ST_Buffer(j.geometry, {bufferRadius})
)))).geom) AS YOfLowerLeftOfGridCellIntersectingWithBuffer,
....
)
SELECT ST_MakePoint(XOfLowerLeftOfGridCellIntersectingWithBuffer,
YOfLowerLeftOfGridCellIntersectingWithBuffer)
FROM j
クエリに関するいくつかの考え(全体像を見ることができません):
-
ST_AsText
クエリでは間違いなく意味がありません。あなたはそれを取り除くことができます。 - x座標とy座標を抽出するために使用しているコードは同一であり、
ST_DumpPoints
すでにポイントを返します。したがって、以前に別々の値に分割したのと同じポイントを再作成しているため、ロジックに欠陥があると思います。