我在SQL Server中有这样的功能。我无法理解它是什么。有人可以简单地向我解释一下吗?
l = [1, 2, 3]
it = iter(l)
while True:
try:
print next(it)
except StopIteration:
break
答案 0 :(得分:2)
您正在查看Haversine公式,该公式使用纬度和经度坐标计算球体上的距离。以下是使用完整Haversine公式的查询:
SELECT
ACOS(
COS(RADIANS(Latitude1))
* COS(RADIANS(Latitude2))
* COS(RADIANS(Longitude1) - RADIANS(Longitude2))
+ SIN(RADIANS(Latitude1))
* SIN(RADIANS(Latitude2))
) AS haversineDistance
FROM yourTable
有关详细信息,请查看this SO article或Wikipedia。
答案 1 :(得分:1)
就像@TimBiegeleisen和@RobertRodkey所说,这是一个用于计算地球上两点之间距离的旧式公式。
因此,这会导致其他一些问题:
Geography
方法可以使用,我应该使用上面的数学吗?答:否 如果您使用的是Sql Server 2008或更高版本。如果在此之前,那么你别无选择,只能使用那种方式/公式。进一步展示小费 - 使用STDistance ..那是你的朋友:)
(浏览器代码,未经测试等)......
-- Arrange.
DECLARE @longitude1 FLOAT = -122.360,
@latitude1 FLOAT = 47.656,
@longitude2 FLOAT = -122.343,
@latitude2 FLOAT = 47.656;
DECLARE @point1 GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(' + CAST(@longitude1 AS VARCHAR(10)) + ' ' + CAST(@latitude1 AS VARCHAR(10)) + ')', 4326);
DECLARE @point2 GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(' + CAST(@longitude2 AS VARCHAR(10)) + ' ' + CAST(@latitude2 AS VARCHAR(10)) + ')', 4326);
-- Determine the distance (which would be in metres because we're using the 4326 == [common GPS format](http://spatialreference.org/ref/epsg/wgs-84/)).
SELECT @point1.STDistance(@point2);
答案 2 :(得分:0)
我不是该领域的专家,但看起来它正在选择一个边界内的点: