距 JSON 列最近的位置
Posted
技术标签:
【中文标题】距 JSON 列最近的位置【英文标题】:Nearest location from JSON column 【发布时间】:2022-01-07 07:26:24 【问题描述】:我们有一个目录应用程序,每个目录都有许多分支和许多位置点(纬度、经度)
分支位置作为JSON值列类型文本存储在数据库中,如下所示:
"locations": [
"lat": "30.021463",
"lng": "31.074944"
,
"lat": "30.035189",
"lng": "31.198761"
]
在发送用户的经纬度时如何获取离用户最近的位置?
使用的技术
-
.Net Core
PostgreSQL
实体框架核心
【问题讨论】:
【参考方案1】:如果你的 Postgres 服务器上安装了 PostGIS,你可以试试这样的方法
SELECT j.*,
ST_DISTANCE(
ST_GeogFromText('POINT(' || lng || ' ' || lat || ')'),
ST_GeogFromText('POINT(31.08 30.025)')
) AS dist
FROM YourTable AS t
JOIN LATERAL jsonb_to_recordset(t.data->'locations') AS j(lat int, lng int) ON TRUE
ORDER BY
dist;
我强烈建议您将大地测量信息存储在实际的 geography
列中。
如果您经常查询它,至少应该将这个 JSON 规范化到另一个表中。
【讨论】:
以上是关于距 JSON 列最近的位置的主要内容,如果未能解决你的问题,请参考以下文章
Sequelize 地理空间查询:找到距某个位置最近的“n”个点
CSS Grid Column中的元素,上边距表现为位置top
CSS盒子模型外边距 ③ ( 插入图片 | 插入图片位置移动 - 修改外边距 | 背景图片 | 背景图片移动位置 - 修改背景位置 background-position )