sql之如何在 SQL Server 数据库表中使用 X 和 Y 网格坐标选择一圈数据

kuangbin 阅读:67 2025-01-19 22:14:33 评论:0

这很有趣,很抱歉缺少信息,但我不知道如何处理这个问题。

我有一个 SQL Server 数据库,它存储与邮政区号相对应的 map 坐标。例如,邮政区号 BD6 沿 X 轴位于 414300m,沿 Y 轴位于 429800m。这些值在一个表中,在三个单独的列中,例如:

PostAreaCode    AlongXAxis    AlongYAxis 
BD6               414300       429800 

我需要选择特定邮政区号 161 公里半径范围内的所有邮政区号。比如BD6坐标在圆心,圆边161km。

我可以使用 BETWEEN 关键字在 BD6 周围创建一个正方形并执行类似...

SELECT PostAreaCode 
FROM PostAreaCodeTable 
WHERE AlongXAxis IS BETWEEN (414300-161000) AND (414300+161000) 
AND AlongYAxis IS BETWEEN (429800-161000) AND (429800+161000) 

...但是我不知道如何把它变成一个圆圈。我认为自己非常擅长 SQL,但这完全超出了我的能力范围。任何帮助深表感谢!请尽可能多地解释数学答案,因为数学不是我的强项。谢谢!

请您参考如下方法:

您可以使用公式 (x-a)^2 + (y-b)^2 <= r^2作为你的 where 子句。 ab是中心的坐标,xy是您要检查的点的坐标,r是半径。 所以,在你的情况下,a是中心的 X 坐标,b是中心的 Y 坐标,而 xy是其他点的X和Y轴坐标的列名。

SQL 将是:

SELECT PostAreaCode 
FROM PostAreaCodeTable 
WHERE ((AlongXAxis - 414300)^2 + (AlongYAxis - 429800)^2) <= (161000)^2 


标签:数据库
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号