Tengo una capa de edificios en QGIS almacenada en Postgis. La capa es de tipo MultiPolígono aunque estoy bastante seguro de que solo hay 1 geometría (Polígono) por elemento.
Pude crear un campo de altura (altura del edificio) para cada polígono utilizando una capa LIDAR.
Ahora, me gustaría modificar la geometría de la capa y convertir cada edificio de 2D a 3D utilizando este campo de altura.
En QGIS, probé el algoritmo de Procesamiento "Establecer valor Z", pero cuando verifico el valor $Z de cada elemento, obtengo nulo. Si abro la vista en 3D, veo que está totalmente plana.
También probé "Recubrimiento (establecer valor Z desde ráster)" utilizando un ráster creado con las alturas, y obtuve el mismo resultado.
Entonces mi siguiente paso fue hacerlo con PostGIS. Creé la siguiente consulta que primero convierte cada punto a un punto3D, luego crea PoliLíneas3D, y finalmente, Poligonaliza las líneas:
CREATE TABLE "borrarEdif3DPrueba" AS
WITH points2d AS
(SELECT id,(ST_DumpPoints(the_geom)).geom AS geom, altura_edificio_max
FROM "borraEdifConAltura"
)
,
points3d AS
(SELECT id, ST_MakePoint(
st_x(geom),
st_y(geom),
altura_edificio_max) AS "geomPoint3D"
from points2d)
,
edif_line as (SELECT id, ST_MakeLine("geomPoint3D") AS geom
FROM points3d
GROUP BY id)
,
edifpol as (select id, ST_Force3D(ST_setSRID(ST_CollectionExtract(ST_Polygonize(geom),3),25830))::geometry(MultiPolygonZ, 25830) as geom from edif_line group by id)
SELECT id, geom from edifpol
Importé la capa a QGIS y obtuve el mismo resultado: los valores $Z son nulos y en 3D todo está plano.