Friday, 26 October 2007

All locations nearby

-- all the points neraby
DECLARE @lat float, @lon float, @earthradius float
,@Xaxis float, @Yaxis float, @Zaxis float

-- this is the start point
SET @lat = 52.280709
SET @lon = -1.623253

-- calculate
SET @earthradius = 3963.1676 -- miles
set @Xaxis = cos(radians(@lat)) * cos(radians(@lon))
set @Yaxis = cos(radians(@lat)) * sin(radians(@lon))
set @Zaxis = sin(radians(@lat))


SELECT TOP 200
Postcode
,@earthradius *
acos( (cos(radians(Latitude)) * cos(radians(Longitude)))*@Xaxis
+ (cos(radians(Latitude)) * sin(radians(Longitude)))*@Yaxis
+ (sin(radians(Latitude)))*@Zaxis) distance
FROM
paf.dbo.ukpostcodepointsY07Q3
WHERE
@earthradius *
acos( (cos(radians(Latitude)) * cos(radians(Longitude)))*@Xaxis
+ (cos(radians(Latitude)) * sin(radians(Longitude)))*@Yaxis
+ (sin(radians(Latitude)))*@Zaxis)
< 2 -- miles
ORDER BY
distance asc

1 comment: