Come ottenere il tipo di geometria di una tabella PostGIS vuota?


9

Ho un'applicazione web che deve conoscere il tipo di geometria del campo geom di una tabella PostGIS prima di inserire righe al suo interno. Uso la seguente query per determinare il tipo di geometria della colonna geom:

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

Ciò restituisce il tipo di geometria di una riga effettiva, quindi non funziona quando la mia tabella è vuota. Come posso determinare il tipo di geometria della colonna geometrica stessa?

Risposte:


16

La query potrebbe essere eseguita sulla geometry_columnstabella in questo modo

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

(oppure, se si utilizza un tipo di area geografica , sottoscrivere geometry_columnscon geography_columnse f_geometry_columncon f_geography_column)


Il sql nella risposta restituirà geometryper il tipo, mentre non possiamo ancora sapere se la geometria è punto o linea.
giser,

1
Ciò significa che la colonna della geometria è impostata sul tipo di geometria "geometria" (ovvero accetta tutti i tipi di geometrie). In questo caso dovrai controllare ogni geometria induvidamente usando ST_GeometryType
atlefren,

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1come questo come il post OP? Non funziona se la tabella è vuota.
giser,

E un'altra cosa, se tutta la colonna della geometria è impostata per geometrydigitare per tutta la tabella, posso creare una vista che contenga tutte le tabelle che possono contenere points lines polyogn?
giser,

1
Giusto. Un'analogia: dichiarare che una colonna geom è di tipo "geometria" è come designare un cassetto per calze di qualsiasi colore. Controllare il colore delle calze in questo cassetto è impossibile quando è vuoto.
Atlefren,

3

Cerca una tabella geometry_columns. Tutte le colonne geografiche con srid e tipo di geometria sono registrate qui. Se esiste una colonna con tipo GEOMETRIA, è possibile memorizzare tutti i tipi di geometria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.