javascriptmathgpscoordinates

GPS coordinates: 1km square around a point


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.


Solution

  • 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 ≈ 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 a pole, 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.