Nur räumliche Tabellen aus der PostgreSQL-Datenbank auswählen?

10

Meine Datenbank enthält sowohl räumliche als auch nicht räumliche Tabellen. Ich möchte jedoch nur räumliche Tabellen aus der Abfrage abrufen.

Vorschläge, nur räumliche Tabellen auszuwählen. 'the_geom' ist die Geometriespalte in der räumlichen Tabelle.

Andernfalls ist es möglich, Tabellen aus dem Spaltennamen auszuwählen.

Ich habe es mit diesem Code versucht select relname from pg_stat_user_tables WHERE schemaname='public'. aber daraus erhalten wir alle Tabellennamen.

Kishor
quelle

Antworten:

16

Alle räumlichen Tabellenreferenzen werden in der Metadatentabelle geometr_spalten gespeichert. Also versuche:

select * from geometry_columns

und Sie sollten nur die räumlichen Tabellen erhalten

mapoholic
quelle
Vielen Dank ... Ich glaube, ich habe eine einfache Sache verpasst
Kishor
2
Ich habe einen anderen Code, SELECT table_name FROM information_schema.columns WHERE column_name = 'the_geom'
Kishor
yip- das ist der lange Weg :-)
mapoholic
ya, du bist richtig.
Kishor
@kishor, Sie sollten Ihren Kommentar als "Antwort" hinzufügen, damit die Leute ihn auch als Option sehen, selbst wenn festgestellt wurde, dass die Antwort von mapoholic die bevorzugte Methode sein kann.
RyanKDalton
2

Kurzer Weg

select * from geometry_columns

Tiefer Weg

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

Die zweite Option sollte auch dann funktionieren, wenn die Informationen von geometr_columns gelöscht wurden. Die 'wkb_geometry' ist der Standardname für Geometriedatenspalten, wenn Sie das ogr2ogr-Tool zum Zuführen Ihrer Datenbank verwendet haben.

Jorge Arévalo
quelle
2

Eine andere, um nur räumliche Tabellen in der Datenbank auszuwählen.

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

Mit diesem Code können wir auch Tabelleninformationen abrufen, indem wir den Spaltennamen kennen.

Kishor
quelle