sql - 如果我使用的是 postGIS,如果我已经存储了几何列,是否应该存储纬度和长列?
问题描述
我正在使用 postGIS,我的客户会向我发送lat,lng
地理定位点。
我将这些点存储在我的数据库GEOMETRY
中作为geometry
列。
lat
现在,我需要客户接收回点,我想知道存储and是否有意义,lng
这样geometry
每次我不必使用 postgis 函数来计算几何中的点,尤其是对于具有点的实体列表。
解决方案
好吧,这完全取决于您的应用程序对坐标的作用。如果您不需要对这些点执行任何复杂的操作,将它们作为数字值放在单独的列中就足够了 - 数字索引非常有效。
但是,使用geometry
orgeography
数据类型有什么好处呢?
坐标基于某个
SRS
,可以使用几何值进行编码 - 如果省略信息,则假定为 WGS84。如果您的客户使用不寻常的参考系统,则仅通过查看两个数值是无法知道的。见ST_SRID
。PostGIS 提供了大约 1.3k 的功能,这些功能非常方便,例如
ST_Distance
orST_DWithin
并且具有高效的spatial index
.使用应用程序发布几何图形,例如
GeoServer
通过 WFS(Web 要素服务)或 WMS(Web 地图服务)等 OGC 标准。轻松将数据导入 GIS
QGIS
或 ArcGIS。
我认为使用geometry
或geography
数据类型几乎总是最好的选择,但如果上述所有功能都不相关,则可以使用数值。在您的情况下,我会坚持使用geometry
数据类型并使用 PostGIS 函数提供 x,y 坐标,就像您现在正在做的那样。
推荐阅读
- c# - 在 asp.net mvc 的 Excel 工作表中导出表格视图
- android - Android - 在 http get 方法之外调用时,字符串返回空。
- python - Tkinker 文本输入投注
- docker - 在 Nginx、Gunicorn、Flask 和 Docker 下运行多个 Dash 应用程序
- sorting - 关于排序、节省点击价值等的问题
- c - 为等距角快速准确地迭代生成正弦和余弦
- reporting-services - 堆叠/分组 SSRS 图表 - 轴标签问题
- laravel - 为什么默认不共享 Laravel 实例?
- windows - 如何在 Windows 中使用 CMD 提示符按行拆分文本文件?
- codenameone - 使用 captureAudio() 时的音频格式