¿Seleccionar solo tablas espaciales de la base de datos PostgreSQL?

10

Mi base de datos contiene tablas espaciales y no espaciales, pero quiero recuperar solo la tabla espacial de la consulta.

Cualquier sugerencia para seleccionar solo tablas espaciales. 'the_geom' es la columna de geometría en la tabla espacial.

De lo contrario, ¿es posible seleccionar tablas de su nombre de columna?

Lo intenté con este código select relname from pg_stat_user_tables WHERE schemaname='public'; pero de esto obtenemos todos los nombres de tablas.

Kishor
fuente

Respuestas:

16

Todas las referencias de tablas espaciales se mantienen en la tabla de metadatos geometry_columns. Entonces intenta:

select * from geometry_columns

y deberías obtener solo las tablas espaciales

mapoholic
fuente
Muchas gracias ... Creo que me he perdido una cosa simple
Kishor
2
Tengo otro código, SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Kishor
yip- ese es el camino largo :-)
mapoholic
Sí, tienes razón.
Kishor
@kishor, debe agregar su comentario como una "respuesta", para que la gente también lo vea como una opción, incluso si se ha establecido que la respuesta de mapoholic puede ser el método preferido.
RyanKDalton
2

Camino corto

select * from geometry_columns

Manera más profunda

SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom' or column_name = 'wkb_geometry'

La segunda opción debería funcionar incluso si se ha eliminado la información de geometry_columns. 'Wkb_geometry' es el nombre predeterminado de las columnas de datos de geometría si utilizó la herramienta ogr2ogr para alimentar su base de datos.

Jorge Arévalo
fuente
2

Otra para seleccionar solo tablas espaciales en la base de datos.

SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'`

Usando este código también podemos recuperar información de la tabla al conocer su nombre de columna.

Kishor
fuente