Convention de dénomination des colonnes de géométrie - «geom» ou «the_geom»?

22

Je commence mon premier projet PostGIS, et dans divers livres et tutoriels, j'ai vu la colonne de géométrie intitulée 'geom' ou 'the_geom'. L'un est-il plus conventionnel que l'autre?

De plus, y a-t-il une bonne raison d'utiliser 'geom' / 'the_geom' au lieu d'un nom plus descriptif pour la colonne de géométrie? (Par exemple, «centre_point» pour le point central d'une entité.) Nous ne nommons pas les colonnes db conventionnelles «the_int» ou «the_string», alors pourquoi étiqueter les colonnes de géométrie de cette façon?

Entaille
la source

Réponses:

17

Depuis PostGIS version 2.0, "geom" est le nom de colonne commun. (Au moins, je vois de la documentation, etc.) Avant cela, c'était "the_geom", et je ne peux que spéculer sur les raisons.

Vous pouvez utiliser les deux en toute sécurité, mais j'utilise volontiers "geom" dans PostGIS et SpatiaLite.

Edit: Parce que j'ai complètement raté la deuxième partie de la question.
En général, un nom commun est pratique car il est courant pour les logiciels SIG d'exiger que les géométries d'une table soient contraintes à un seul type spécifique, SRID, etc. Par conséquent, les noms de table ont tendance à être plus descriptifs que le nom de la colonne de géométrie. Par exemple, vous vous attendez à trouver des tables nommées "school_zone_polygons", "school_zone_centroids" chacune avec une colonne "geom"; pas une table "school_zones" avec des colonnes "geom_polygon", "geom_centroid".

Avoir un nom commun signifie que vous n'avez pas à vérifier le schéma chaque fois que vous souhaitez référencer une colonne de géométrie.

Scro
la source
2
Il est courant dans la programmation orientée objet de nommer des objets de niveau supérieur en ajoutant un article. Ceci distingue 'the_chair' de toutes les instances ultérieures de type 'chair'. Mais PostGIS ne fonctionne pas vraiment de cette façon, et le passage à un simple 'geom' a probablement facilité la mise en œuvre multiplateforme.
L_Holcombe
Oui, j'ai toujours pensé que c'était pour éviter une collision (future possible) avec un mot réservé. Personne n'aime taper des guillemets doubles.
Scro
1
Merci Scro pour la clarification. Bien que dans le cas où vous avez plusieurs colonnes de géométrie dans une table (pas que j'envisage de le faire), votre contre-exemple semble une convention idéale. C'est à dire la table "school_zones" avec "geom_polygon", "geom_centroid" etc.
Nick
6

Une raison potentielle pour laquelle "geom" ou "the_geom" a été choisi comme nom générique pour le champ "shape" était parce que vous pouvez réellement stocker plusieurs types de géométrie (point, ligne, poly, etc.) dans le champ "geom" du même tableau. Vous pouvez même vous référer à 2005 lorsque cela a été discuté sur la liste de diffusion PostGIS.

Par exemple, vous pouvez stocker toutes vos maisons, rues et limites de comté dans le même champ "geom" de votre table unique. Il y a évidemment des raisons pour lesquelles vous pouvez choisir de faire autrement, mais cela pourrait représenter la raison pour laquelle un nom de colonne "geom" générique a été utilisé.

Espérons que certains utilisateurs de longue date de PostGIS entonneront avec plus de détails sur les raisons pour lesquelles "geom" a été choisi.

RyanDalton
la source
1

Lorsque vous utilisez l'api Geoserver REST dans la publication de tables PostGis existantes, la commande REST échouera si la colonne de géométrie n'est pas nommée "geom".

Angelo Arboleda
la source
2
Je suis à peu près sûr que ce comportement est un bogue avec Geoserver, et une fois qu'il est résolu, il ne devrait plus être un point à considérer
Devdatta Tengshe