Convención de nomenclatura de columnas de geometría: 'geom' o 'the_geom'?

22

Estoy comenzando mi primer proyecto PostGIS, y en varios libros y tutoriales he visto la columna de geometría etiquetada como 'geom' o 'the_geom'. ¿Es uno más convencional que el otro?

Además, ¿hay una buena razón para usar 'geom' / 'the_geom' en lugar de un nombre más descriptivo para la columna de geometría? (Por ejemplo, 'centre_point' para el punto central de una entidad.) No etiquetamos las columnas db convencionales 'the_int' o 'the_string', entonces, ¿por qué etiquetar las columnas de geometría de esta manera?

Mella
fuente

Respuestas:

17

A partir de la versión 2.0 de PostGIS, "geom" es el nombre de columna común. (Al menos lo veo documentación, etc.) Antes de eso era "the_geom", y solo puedo especular sobre por qué.

Puede usar cualquiera de los dos de manera segura, pero estoy felizmente usando "geom" en PostGIS y SpatiaLite.

Editar: porque me perdí por completo la segunda parte de la pregunta.
En general, un nombre común es conveniente porque es común que el software SIG requiera que las geometrías en una tabla se limiten a un solo tipo específico, SRID, etc. Por lo tanto, los nombres de las tablas tienden a ser más descriptivos que el nombre de la columna de geometría. Por ejemplo, esperaría encontrar tablas llamadas "school_zone_polygons", "school_zone_centroids" cada una con una columna "geom"; no es una tabla "school_zones" con columnas "geom_polygon", "geom_centroid".

Tener un nombre común significa que no tiene que verificar el esquema cada vez que desea hacer referencia a una columna de geometría.

Scro
fuente
2
Es común en la programación orientada a objetos nombrar objetos de nivel superior al anteponer un artículo. Esto distingue 'the_chair' de cualquier instancia posterior del tipo 'chair'. Pero PostGIS realmente no funciona de esa manera, y cambiar a simplemente 'geom' probablemente hizo que la implementación multiplataforma sea más fácil.
L_Holcombe
Sí, siempre supuse que era para evitar una colisión (posible futuro) con una palabra reservada. A nadie le gusta escribir comillas dobles.
Scro
1
Gracias Scro por aclarar. Aunque en el caso de que tenga varias columnas de geometría en una tabla (no es lo que planeo), su contraejemplo parecería una convención ideal. Es decir, la tabla "school_zones" con "geom_polygon", "geom_centroid", etc.
Nick
6

Una razón potencial por la que se eligió "geom" o "the_geom" como nombre genérico para el campo "forma" fue porque en realidad puede almacenar múltiples tipos de geometría (punto, línea, polietileno, etc.) en el campo "geom" en el campo misma mesa Incluso puede mirar hacia atrás a 2005 cuando esto se discutió en la lista de correo electrónico de PostGIS.

Por ejemplo, podría almacenar todas sus casas, calles y límites del condado en el mismo campo "geom" de su mesa individual. Obviamente, hay razones por las que puede optar por hacer lo contrario, pero esto podría representar la razón por la que se utilizó un nombre de columna genérico "geom".

Esperemos que algunos usuarios de PostGIS de larga data intervengan con más detalles sobre por qué realmente se eligió "geom".

RyanDalton
fuente
1

Cuando se utiliza la API REST de Geoserver al publicar tablas PostGis existentes, el comando REST fallará si la columna de geometría no se denomina "geom".

Angelo Arboleda
fuente
2
Estoy bastante seguro de que este comportamiento es un error con Geoserver, y una vez que se resuelve, ya no debería ser un punto de consideración
Devdatta Tengshe