Uso correcto de LATERAL FROM
Estoy tratando de usar PostGIS para realizar una serie de pasos dentro de una declaración SQL para básicamente convertir un raster en puntos, hacer un buffer, disolver y luego determinar el límite general, es decir, el casco convexo basado en un atributo.
Aquí es donde estoy, pero obtengo un error que sugiere el uso de LATERAL FROM, pero no sé qué debo hacer.
Cualquier ayuda sería muy apreciada.
[0A000] ERROR: las llamadas a funciones de agregado no pueden contener llamadas a funciones que devuelven conjuntos. Sugerencia: Es posible que puedas mover la función que devuelve conjuntos a un elemento LATERAL FROM. Posición: 123
SELECT name,
st_union(
st_buffer(
st_transform(
(ST_PixelAsCentroids(rast, 1)).geom
, 32756),
50, 2)
)
FROM rasters
WHERE id < 5
davy.ai
Para resolver el mensaje de error, puedes intentar la siguiente modificación en tu declaración SQL:
Explicación:
ST_Reclass
para convertir tu raster en un formato binario que pueda ser utilizado porST_DumpPoints
.ST_DumpPoints
hará que cada píxel se convierta en una geometría de punto, que es lo que estás intentando lograr.SELECT
interna en una subconsulta, lo cual nos permitirá usar una unión LATERAL más adelante.CROSS JOIN LATERAL
para realizar una operación de geometría (es decir, un buffering) en cada punto.ST_Collect
) y calcula el casco convexo (ST_ConvexHull
).