views:

50

answers:

2

Greetings,

I was hoping someone out there could provide me with an equation to calculate a 1km square (X from a.aaa to b.bbb, Y from c.ccc to c.ccc) around a given point, say lat=53.38292839 and lon=-6.1843984? I'll also need 2km, 5km and 10km squares around a point.

I've tried googling around to no avail... It's late at night and was hoping someone might have quick fix handy before I delve into the trigonometry...

I'll be running all this in Javascript, although any language is fine.

And no, it's not a homework problem ;(

Many thanks in advance,

+1  A: 

Here is something from my notes to be used on Android with its decimal GPS.

Lat Long: NY City 40N 47 73W 58 40.783333 73.966667

Wash DC 38N 53 77W 02 38.883333 77.033333

yields = 209 miles !! VERY CLOSE

Distance (miles) (x) = 69.1 (lat2-lat1) Distance(miles) (y) = 53.0 (long2 - long1) As crow flys sqrt (x2 + y2) ... duh!@

delta(LAT) / Mile = .014472 delta(LONG) / Mile = .018519

Using a box as approximation To find someone within 100 miles (100 north / 100 south, 100 E / 100 W) From 0,0 -14.472 / + 14.472 , -18.519 / 18.519

Jim
ok, so delta_lat is 0.014472 miles and delta_lon is 0.018519? Cool, I'll just convert that to km and I should be sorted. Many thanks for that. I though it was going to be much more complicated than that!
Eamorr
Distances in latitude and longitude don't obey Pythagoras because you're tracing across a curved surface, not a flat one. Look up the haversine formula to get the correct result — it's not pretty but you can immediately reproduce it in about five lines of code and then shuffle it off into a library somewhere.
Tommy
I am aware of this, this works fairly well withing a 200 mile distance which is why I bookmarked it. It's quick on the server. If you want something more exact .... here ya go! http://www.meridianworlddata.com/Distance-Calculation.asp
Jim
REMEMBER if you are going to use squares to make your db queries manageable the diagonal from center on a square can be 50% greater than the radius...hummm what to do?
Jim
@Jim. Yes, it's a square I'm looking for. Thanks for the response.
Eamorr
+1  A: 

If the world were a perfect sphere, according to basic trigonometry...

Degrees of latitude have the same linear distance anywhere in the world, because all lines of latitude are the same size. So 1 degree of latitude is equal to 1/360th of the circumference of the Earth, which is 1/360th of 40,075 km.

The length of a lines of longitude depends on the latitude. The line of longitude at latitude l will be cos(l)*40,075 km. One degree of longitude will be 1/360th of that.

So you can work backwards from that. Assuming you want something very close to one square kilometre, you'll want 1 * (360/40075) = 0.008983 degrees of latitude.

At your example latitude of 53.38292839, the line of longitude will be cos(53.38292839)*40075 = [approx] 23903.297 km long. So 1 km is 1 * (360/23903.297) = 0.015060 degrees.

In reality the Earth isn't a perfect sphere, it's fatter at the equator. And the above gives a really good answer for most of the useful area of the world, but is prone to go a little odd near the poles (where rectangles in long/lat stop looking anything like rectangles on the globe). If you were on the equator, for example, the hypothetical line of longitude is 0 km long. So how you'd deal with a need to count degrees on that will depend on why you want the numbers.

Tommy
Ok. Jim's 1 mile = 0.014472 degrees of latitude (or equivalently .008983 in km) seems just about right. Many thanks.
Eamorr