Crear una tabla espacial PostGIS como resultado de una consulta PostGIS


8

Cuando quiero almacenar los resultados de una consulta espacial como otra tabla PostGIS, ¿qué debo hacer? Estoy interesado en identificar todos los edificios residenciales que caen dentro de un conjunto de parcelas:

CREATE TABLE residentialBuildings AS
SELECT buildings.the_geom
FROM parcels as p
JOIN buildings as b
ON ST_Contains(p.the_geom, b.the_geom)
WHERE p.residentialarea > 0;

Esto parece funcionar, pero no devuelve un resultado espacial; en cambio, la tabla tiene la representación binaria de la geometría. No estoy seguro de lo que debería hacer para crear una tabla como resultado. ¿Es necesario que primero hacer una mesa, y luego convertir el resultado en una geometría?

(He leído la documentación, pero siento que me faltan los términos de búsqueda correctos, ya que creo que esto debe ser algo bastante obvio).

Me doy cuenta de que hay muchos comandos para hacer una geometría

ST_GeogFromText 
ST_GeographyFromText 
ST_GeogFromWKB 
ST_GeomCollFromText 
ST_GeomFromEWKB 
ST_GeomFromEWKT 
ST_GeometryFromText 
ST_GeomFromGML 
ST_GeomFromKML 
ST_GMLToSQL 
ST_GeomFromText 
ST_GeomFromWKB 

pero no sé qué opción elegir, o si este es el enfoque correcto.

Respuestas:


8

Puede registrar manualmente las columnas de geometría en geometry_columns . Algo como:

INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type")
VALUES ('', 'public', 'residentialBuildings', 'the_geom', 2, <yourSRID>, 'MULTIPOLYGON')

1
Recibo un mensaje de error que dice ERROR: column "polygon" does not exist SQL state: 42703¿Sabes qué puede estar causando el error? La tabla existe, y también intenté usarla POLYGON.
DJ

Lo siento, olvidé agregar ''.
oscuro

5

El resultado es una tabla espacial con solo una columna en forma de geometría. La representación binaria es correcta. Si está usando esto fuera de PostGIS (digamos ArcGIS o QGIS o lo que sea), probablemente esté buscando dos cosas:


Para aclarar (actualizaré la pregunta) quiero crear una tabla en PostGIS con el resultado.
djq

Sí, entonces su enfoque y resultado están bien. Al igual que en GeoDatabases, las filas en la columna de geometría están hechas de geometrías serializadas. Si desea ver el contenido, simplemente use ST_AsText en la columna de geometría, tal como lo haría con cualquier otra tabla postgis.
Ragi Yaser Burhum
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.