【问题标题】:If I am using postGIS, should I store lat and long columns if I am already storing a geometry column?如果我使用的是 postGIS,如果我已经存储了几何列,是否应该存储纬度和长列?
【发布时间】:2019-11-02 19:45:55
【问题描述】:

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

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

现在,我需要客户接收积分,我想知道除了 geometry 之外存储 latlng 是否有意义,这样每次我都不必使用postgis 函数来计算几何中的点,特别是对于具有点的实体列表。

【问题讨论】:

  • 缺少的问题是您是否愿意处理/传播几何形状或经度/纬度值的变化。
  • 如果您需要快速访问附近(任何类型的附近)点,绝对应该,否则不需要。
  • 您如何将积分返还给客户?

标签: sql database postgresql geolocation postgis


【解决方案1】:

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

但是,使用geometrygeography 数据类型有什么优势?

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

  • PostGIS 提供了大约 1.3k 的函数,这些函数非常方便,例如 ST_DistanceST_DWithin 并具有高效的 spatial index

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

  • 轻松将数据导入 GIS,例如 QGIS 或 ArcGIS。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多