首页 > 解决方案 > 如果我使用的是 postGIS,如果我已经存储了几何列,是否应该存储纬度和长列?

问题描述

我正在使用 postGIS,我的客户会向我发送lat,lng地理定位点。

我将这些点存储在我的数据库GEOMETRY中作为geometry列。

lat现在,我需要客户接收回点,我想知道存储and是否有意义,lng这样geometry每次我不必使用 postgis 函数来计算几何中的点,尤其是对于具有点的实体列表。

标签: sqldatabasepostgresqlgeolocationpostgis

解决方案


好吧,这完全取决于您的应用程序对坐标的作用。如果您不需要对这些点执行任何复杂的操作,将它们作为数字值放在单独的列中就足够了 - 数字索引非常有效。

但是,使用geometryorgeography数据类型有什么好处呢?

  • 坐标基于某个SRS,可以使用几何值进行编码 - 如果省略信息,则假定为 WGS84。如果您的客户使用不寻常的参考系统,则仅通过查看两个数值是无法知道的。见ST_SRID

  • PostGIS 提供了大约 1.3k 的功能,这些功能非常方便,例如ST_DistanceorST_DWithin并且具有高效的spatial index.

  • 使用应用程序发布几何图形,例如GeoServer通过 WFS(Web 要素服务)或 WMS(Web 地图服务)等 OGC 标准。

  • 轻松将数据导入 GISQGIS或 ArcGIS。

我认为使用geometrygeography数据类型几乎总是最好的选择,但如果上述所有功能都不相关,则可以使用数值。在您的情况下,我会坚持使用geometry数据类型并使用 PostGIS 函数提供 x,y 坐标,就像您现在正在做的那样。


推荐阅读