Tengo una tabla de puntos y estoy tratando de visualizar sus distribuciones. Cada punto tiene un PUNTO de geometría (WGS84) y algunos atributos numéricos: a, b, c.
| id | geom | a | b | c |
|-----------------|----|---|---|
| 1 | POINT(... | 12 | 9 | 2 |
| etc ... |
El primero que probé fue el proyecto a un área igual a la proyección (EPSG: 3175), uso ST_SnapToGrid
y, a continuación, grupo en el punto resultante de la geometría.
SELECT
avg(a), avg(b), avg(c),
ST_Transform(ST_SnapToGrid(ST_Transform(geom, 3175), 50), 4326) AS bin
FROM points
GROUP BY bin
En este grupo los puntos dentro de 50x50 metros cubos con sus valores agregados que me puede importar en qgis para jugar con. Yo optimizado esto mediante la adición de otra columna a la tabla de puntos de llamada bin_id
que era una clave externa en una bins
tabla:
| id | geom |
|----|-----------|
| 1 | POINT(... |
Entonces yo podría escribir una consulta como esta:
SELECT avg_a, avg_b, avg_c, geom
FROM (
SELECT
avg(a) AS avg_a,
avg(b) AS avg_b,
avg(c) AS avg_c,
bin_id
FROM points
GROUP BY bin_id
) AS tmp
JOIN bins ON tmp.cell_id = bins.id
Todo esto funciona bien, pero quiero usar los Rásteres en su lugar. En todos los ejemplos que he visto muestran cómo importar las imágenes rasterizadas o shapefiles en PostGIS. Pero necesito saber cómo generar uno de los datos que ya están en PostGIS.
Idealmente quiero un ráster con 3 bandas: avg_a
, avg_b
& avg_c
Puede que alguien me apunte en la dirección correcta?
EDIT 1: no me opongo a hacerlo fuera de la base de datos.
EDIT 2: Parece que se puede utilizar el GDAL API para hacerlo.