gpt4 book ai didi

SQL 地理纬度/经度距离计算器

转载 作者:行者123 更新时间:2023-12-03 02:29:52 25 4
gpt4 key购买 nike

我无法使用地理来使用表格格式计算距离(以英里为单位)。

两个位置的纬度和经度并排:

id | A_Latitude | A_Longitude | B_Latitude | B_Longitude

我试图理解 A 的要点,以及 B 点,并返回 A 之间的距离和B以英里为单位。

我尝试了一些方法,包括类似的方法:

DECLARE @orig geography 
DECLARE @end geography
SELECT
@orig = geography::Point(A_LATITUDE, A_LONGITUDE, 4326)
,@end = geography::Point(B_LATITUDE, B_LONGITUDE, 4326)
FROM table1
SELECT
ROUND(@END.STDistance(@ORIG)/1609.344,2) AS MILES
,@END.STDistance(@ORIG) AS METERS
,table1.*
FROM table1;

我在所有行中获得英里和米的重复值。谁能建议我应该如何构建这个查询以获得我正在寻找的内容?

编辑:感谢 SQL Surfer!

WITH X AS 
(SELECT
geography::Point(A_LATITUDE, A_LONGITUDE, 4326) A
,geography::Point(B_LATITUDE, B_LONGITUDE, 4326) B
,ID
FROM TABLE1)

SELECT
ROUND(X.B.STDistance(X.A)/1609.344,2) AS MILES
,X.B.STDistance(X.A) AS METERS
,T.*
FROM TABLE1 T
LEFT JOIN X ON T.ID = X.ID

最佳答案

这就是我要做的:

WITH X AS 
(
SELECT
geography::Point(A_LATITUDE, A_LONGITUDE, 4326) A
,geography::Point(B_LATITUDE, B_LONGITUDE, 4326) B
,*
FROM TABLE1
)

SELECT
ROUND(B.STDistance(A)/1609.344, 2) AS MILES
,B.STDistance(X.A) AS METERS
,*
FROM X

如果您考虑经常(并且即时)执行此操作,请考虑向表中添加计算列,不仅用于地理类型,还包括它们之间的距离。那时,这只是表中的一个简单查询!

关于SQL 地理纬度/经度距离计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com