Namenskonvention für Geometriespalten - 'geom' oder 'the_geom'?


22

Ich starte mein erstes PostGIS-Projekt und habe in verschiedenen Büchern und Tutorials die Geometriespalte mit der Bezeichnung "geom" oder "the_geom" gesehen. Ist einer konventioneller als der andere?

Gibt es außerdem einen guten Grund, 'geom' / 'the_geom' anstelle eines aussagekräftigeren Namens für die Geometriespalte zu verwenden? (ZB 'centre_point' für den Mittelpunkt eines Features.) Wir beschriften konventionelle DB-Spalten nicht mit 'the_int' oder 'the_string'. Warum also beschriften Sie Geometriespalten auf diese Weise?

Antworten:


17

Ab PostGIS Version 2.0 ist "geom" der gebräuchliche Spaltenname. (Zumindest sehe ich es in der Dokumentation usw.) Vorher war es "the_geom", und ich kann nur spekulieren, warum.

Sie können beide sicher verwenden, aber ich verwende gerne "geom" in PostGIS und SpatiaLite.

Edit: Weil ich den zweiten Teil der Frage komplett verpasst habe.
Im Allgemeinen ist ein allgemeiner Name praktisch, da GIS-Software häufig verlangt, dass Geometrien in einer Tabelle auf einen bestimmten Typ, eine bestimmte SRID usw. beschränkt sind. Daher sind Tabellennamen in der Regel aussagekräftiger als der Name der Geometriespalte. Sie erwarten beispielsweise Tabellen mit den Namen "school_zone_polygons" und "school_zone_centroids", die jeweils eine "geom" -Spalte enthalten. Keine "school_zones" -Tabelle mit "geom_polygon" - und "geom_centroid" -Spalten.

Ein gemeinsamer Name bedeutet, dass Sie das Schema nicht jedes Mal überprüfen müssen, wenn Sie auf eine Geometriespalte verweisen möchten.


2
In der objektorientierten Programmierung ist es üblich, Objekte der obersten Ebene durch Voranstellen eines Artikels zu benennen. Dies unterscheidet 'the_chair' von späteren Instanzen des Typs 'chair'. Aber PostGIS funktioniert nicht wirklich so, und der Wechsel zu einfachem Geom hat wahrscheinlich die plattformübergreifende Implementierung erleichtert.
L_Holcombe

Ja, ich habe immer vermutet, dass es darum geht, eine (mögliche zukünftige) Kollision mit einem reservierten Wort zu verhindern. Niemand mag es, doppelte Anführungszeichen zu schreiben.
Scro

1
Danke Scro für die Klarstellung. Obwohl in dem Fall, in dem Sie mehrere Geometriespalten in einer Tabelle haben (was ich nicht vorhabe), scheint Ihr Gegenbeispiel eine ideale Konvention zu sein. Dh Tabelle "school_zones" mit "geom_polygon", "geom_centroid" usw.
Nick

6

Ein möglicher Grund dafür, dass "geom" oder "the_geom" als generischer Name für das Feld "shape" ausgewählt wurde, besteht darin, dass Sie tatsächlich mehrere Geometrietypen (Punkt, Linie, Poly usw.) in dem einen Feld "geom" im Feld "shape" speichern können derselbe Tisch. Sie können sogar auf das Jahr 2005 zurückblicken, als dies in der PostGIS-E-Mail-Liste besprochen wurde .

Sie können beispielsweise alle Ihre Häuser, Straßen und Bezirksgrenzen im selben "Geom" -Feld Ihrer einzelnen Tabelle speichern. Es gibt natürlich Gründe, warum Sie sich für eine andere Vorgehensweise entscheiden können, aber dies könnte den Grund dafür darstellen, dass ein generischer "Geom" -Spaltenname verwendet wurde.

Hoffentlich werden einige langjährige PostGIS-Benutzer mehr darüber erfahren, warum "geom" tatsächlich ausgewählt wurde.


1

Wenn Sie die Geoserver REST-API zum Veröffentlichen vorhandener PostGis-Tabellen verwenden, schlägt der REST-Befehl fehl, wenn die Geometriespalte nicht den Namen "geom" hat.


2
Ich bin mir ziemlich sicher, dass dieses Verhalten ein Fehler bei Geoserver ist, und wenn es behoben ist, sollte es nicht länger von Bedeutung sein
Devdatta Tengshe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.