¿Cómo obtener el tipo de geometría de una tabla PostGIS vacía?

9

Tengo una aplicación web que necesita conocer el tipo de geometría del campo geom de una tabla PostGIS antes de insertar filas en él. Utilizo la siguiente consulta para determinar el tipo de geometría de la columna geom:

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

Esto devuelve el tipo de geometría de una fila real, por lo que no funciona cuando mi tabla está vacía. ¿Cómo determino el tipo de geometría de la columna de geometría en sí?

Curtidor
fuente

Respuestas:

16

La consulta podría ejecutarse contra la geometry_columnstabla de esta manera

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

(o, si está utilizando un tipo de geografía , sustituya geometry_columnscon geography_columnsy f_geometry_columncon f_geography_column)

atlefren
fuente
El sql en la respuesta devolverá geometryel tipo, mientras que aún no podemos saber si la geometría es punto o línea.
Giser
1
Eso significa que su columna de geometría está configurada con el tipo de geometría "geometría" (es decir, acepta todo tipo de geometrías). En este caso, deberá comprobar cada geometría de forma inductiva utilizando ST_GeometryType
atlefren
SELECT GeometryType(geom) FROM my_schema.building LIMIT 1como esta como la publicación de OP? No funciona si la tabla está vacía.
Giser
Y una cosa más, si toda la columna de geometría está configurada para geometryescribir para toda la tabla, ¿puedo crear una vista que contenga todas las tablas que pueden contener points lines polyogn?
Giser
1
Derecha. Una analogía: declarar que una columna geom es del tipo "geometría" es como designar un cajón para calcetines de cualquier color. Comprobar qué color de calcetines hay en este cajón es imposible cuando está vacío.
atlefren
3

Busque una tabla geometry_columns. Todas las columnas geográficas con tipo de cuadrícula y geometría se registran aquí. Si hay una columna con el tipo GEOMETRÍA, se pueden almacenar todos los tipos de geometría.

wumpz
fuente