几何列命名约定-'geom'或'the_geom'?


22

我正在开始我的第一个PostGIS项目,在各种书籍和教程中,我看到了标有'geom'或'the_geom'的geometry列。一个比另一个更传统吗?

此外,是否有充分的理由为几何列使用'geom'/'the_geom'而不是更具描述性的名称?(例如,“ centre_point”表示要素的中心点。)我们不将常规数据库列标记为“ the_int”或“ the_string”,那么为什么要用这种方式标记几何列呢?

Answers:


17

从PostGIS 2.0版开始,“ geom”是公用列名称。(至少我看过它的文档,等等。)在此之前,它是“ the_geom”,我只能推测原因。

您可以安全地使用其中任何一个,但是我很高兴在PostGIS和SpatiaLite中使用“ geom”。

编辑:因为我完全错过了问题的第二部分。
通常,通用名称很方便,因为GIS软件通常要求将表中的几何图形限制为单个特定类型,SRID等。因此,表名往往比几何图形列名更具描述性。例如,您可能希望找到名为“ school_zone_polygons”,“ school_zone_centroids”的表,每个表都有一个“ geom”列;而不是包含“ geom_polygon”,“ geom_centroid”列的“ school_zones”表。

具有通用名称意味着您不必每次都要引用几何列时都检查架构。


2
在面向对象的编程中,通常会通过在文章前面添加名称来命名顶级对象。这将“ the_chair”与任何以后的“ chair”类型的实例区分开。但是PostGIS并不能真正以这种方式工作,而切换到普通的“ geom”可能会使跨平台的实现更加容易。
L_Holcombe

是的,我总是猜测这是为了防止与保留字发生冲突(将来可能发生)。没有人喜欢输入双引号。
Scro 2013年

1
感谢Scro澄清。尽管在一个表中有多个几何列的情况下(我不打算这样做),但您的反例似乎是理想的约定。即带有“ geom_polygon”,“ geom_centroid”等的表“ school_zones”
尼克

6

选择“ geom”或“ the_geom”作为“ shape”字段的通用名称的一个可能原因是,因为您实际上可以将多个几何类型(点,线,多边形等)存储在同一张桌子。您甚至可以回溯到2005年,当时在PostGIS电子邮件列表中对此进行了讨论

例如,您可以将所有房屋,街道和县界存储在单个表的同一“ geom”字段中。您显然可以选择其他方式,但是这可能表示使用通用“ geom”列名称的原因。

希望一些长期使用PostGIS的用户可以加入有关为什么真正选择“ geom”的更多详细信息。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.