Selecionando apenas tabelas espaciais do banco de dados PostgreSQL?

10

Meu banco de dados contém tabelas espaciais e não espaciais, mas quero recuperar apenas a tabela espacial da consulta.

Alguma sugestão para selecionar apenas tabelas espaciais. 'the_geom' é a coluna de geometria na tabela espacial.

Caso contrário, é possível selecionar tabelas do nome da coluna.

Eu tentei com este código select relname from pg_stat_user_tables WHERE schemaname='public'; mas a partir disso obtemos todos os nomes de tabela.

Kishor
fonte

Respostas:

16

Todas as referências de tabela espacial são mantidas na tabela de metadados geometry_columns. Então tente:

select * from geometry_columns

e você deve obter apenas as tabelas espaciais

mapoholic
fonte
Thank u muito ... Eu acho que eu tenha perdido uma coisa simples
Kishor
2
Eu tenho um outro código, SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Kishor
yip- esse é o longo caminho :-)
mapoholic 8/08/2012
Você está certo.
Kishor
@kishor, você deve adicionar seu comentário como uma "resposta", para que as pessoas o vejam como uma opção também, mesmo que tenha sido estabelecido que a resposta de mapoholic pode ser o método preferido.
RyanKDalton
2

Atalho

select * from geometry_columns

Maneira mais profunda

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

A segunda opção deve funcionar mesmo que as informações de geometry_columns tenham sido excluídas. O 'wkb_geometry' é o nome padrão das colunas de dados da geometria se você usou a ferramenta ogr2ogr para alimentar seu banco de dados.

Jorge Arévalo
fonte
2

Outro para selecionar apenas tabelas espaciais no banco de dados.

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

Usando esse código, também podemos recuperar as informações da tabela sabendo o nome da coluna.

Kishor
fonte