Wie erhalte ich den Geometrietyp einer leeren PostGIS-Tabelle?

9

Ich habe eine Webanwendung, die den Geometrietyp des Geomfelds einer PostGIS-Tabelle kennen muss, bevor sie Zeilen einfügt. Ich verwende die folgende Abfrage, um den Geometrietyp der Geom-Spalte zu bestimmen:

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

Dies gibt den Geometrietyp einer tatsächlichen Zeile zurück, sodass es nicht funktioniert, wenn meine Tabelle leer ist. Wie bestimme ich den Geometrietyp der Geometriespalte selbst?

Gerber
quelle

Antworten:

16

Die Abfrage könnte geometry_columnsauf diese Weise für die Tabelle ausgeführt werden

SELECT type 
FROM geometry_columns 
WHERE f_table_schema = 'my_schema' 
AND f_table_name = 'building' 
and f_geometry_column = 'geom';

(oder, wenn Sie einen geografischen Typ verwenden, geometry_columnsmit geography_columnsund f_geometry_columnmit ersetzen f_geography_column)

atlefren
quelle
Das SQL in der Antwort wird geometryfür den Typ zurückgegeben, während wir immer noch nicht wissen können, ob die Geometrie Punkt oder Linie ist.
Giser
1
Das bedeutet, dass Ihre Geometriespalte auf den Geometrietyp "Geometrie" eingestellt ist (dh alle Arten von Geometrien akzeptiert). In diesem Fall müssen Sie jede Geometrie einzeln mit ST_GeometryType
atlefren
SELECT GeometryType(geom) FROM my_schema.building LIMIT 1wie das als OP-Post? Es funktioniert nicht, wenn die Tabelle leer ist.
Giser
Und noch etwas: Wenn die gesamte Geometriespalte geometryfür die gesamte Tabelle auf Typ gesetzt ist , kann ich dann eine Ansicht erstellen, die alle Tabellen enthält, die möglicherweise enthalten sind points lines polyogn?
Giser
1
Richtig. Eine Analogie: Die Erklärung, dass eine Geom-Säule vom Typ "Geometrie" ist, entspricht der Bezeichnung einer Schublade für Socken jeder Farbe. Es ist unmöglich zu überprüfen, welche Farbe die Socken in dieser Schublade haben, wenn sie leer sind.
Atlefren
3

Suchen Sie nach einer Tabelle geometrische Spalten. Hier werden alle Geospalten mit Srid- und Geometrietyp registriert. Wenn dort eine Spalte vom Typ GEOMETRIE vorhanden ist, können alle Geometrietypen gespeichert werden.

wumpz
quelle