December 29, 2011 at 3:20 pm
Hi,
I know it is a common question about working out how many points (lon, lat) fall within a radius of another point but most answers and worked examples are using great circle.
I dont need that kind of accuracy so i want to use pythagoras to do it. However, i just cant find any worked examples - i just see people say use "Pythagoras". I understand pythagoras of course but im struggling with converting the radius in to miles / km and returning the correct results.
Please could somebody be kind enough to do a worked example as i dont believe what i have is correct..
The table contains various points with lon and lat values. I want to provide my current long and lat, a radius and the unit of measure (M or K) as params and get a list of all the points within that radius.
this is what i have but it doesnt work:
@Distance = 1
@Unit = 'K'
--i.e. 1KM radius
IF @Unit = 'M'
set @Offset = (@Distance/0.00062)/100000
ELSE -- must be km
set @Offset = @Distance/100000
SELECT *
FROM dbo.points
WHERE(Latitude between (@Lat-@Offset) and (@Lat+@Offset))
AND (Longitude between (@Long-@Offset) and (@Long+@Offset))
Really hope someone can help as i keep re-reading the same posts all the time and going round in circles
Thanks
December 31, 2011 at 7:37 am
Try this:
--Create a temp table with some random points for testing purposes
create table #Points(
idint identity(1,1) not null,
x decimal(10,5),
y decimal(10,5))
declare @count int = 0
while @count < 20
begin
insert into #Points(x,y)
values (rand()*100.0 - 50.0,
RAND()*100.0 - 50.0)
set @count = @count + 1
end
declare @locX decimal(10,5) = 0.0
declare @locY decimal(10,5) = 0.0
declare @radius decimal(10,5) = 15.0
--SELECT Points closer than @radius
select * from #Points p
WHERE power(p.x - @locX, 2) + POWER(p.y - @locY, 2) < POWER(@radius,2)
--SELECT Points and show their distance from origin (@locX, @locY)
select p.*, POWER(power(p.x - @locX, 2) + POWER(p.y - @locY, 2), 0.5)
from #Points p
January 2, 2012 at 9:24 pm
Hi there,
Many thanks for your reply..
The code looks like what im after but in your example is the radius of 15 in kilometers or miles?
Thanks
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy