I need to calculate the gps coordinates of a point "North 52° West 2.67 chains" from a known location. What's the process to make this calculation? If possible, start with 37N-91W.

There's an answer to this on Mathematics on a plane. That answer, plus knowing degrees/meter around my location will provide a sufficiently accurate answer for the short distances in my case. Given that, this question is probably a good candidate to be closed.

  • $\begingroup$ I would like to make an example with your data, but I can't make sense of "North 52° West 2.67 chains". Does it mean a bearing of 52º measured counter-clockwise from North? $\endgroup$
    – Pere
    Mar 8 '20 at 17:47
  • $\begingroup$ @Pere - I think so - it's a form used in a property description from about the 1960s, perhaps older. $\endgroup$ Mar 8 '20 at 17:52

The answer in a plane you linked works rather well in a sphere provided that the distance you want to measure is tiny compared with both the radius of Earth and the distance to the nearest pole - and 2.67 chains is that tiny.

For the remaining of the answer I'll be assuming that the Earth is an sphere, which quite accurate unless you need great accuracy - that is, enough accurate for nearly anything except for surveying.

The first step is to convert your distance and direction to easting and northing distances - as the linked answer tells.

The second step is to convert those two distances to degrees latitude and longitude, and you only need to know that one degree latitude measures $R_{Earth}\cdot\frac{\pi}{180}$ and a degree longitude measures $R_{Earth}\cdot\frac{\pi}{180}\cdot cos(latitude)$.

As a final step, you just need to sum those angles to the latitude and longitude of your position.

With your data:

> # Earth radius in chains
> (r <- 3958.8*80)
[1] 316704
> #bearing, latitude and longitude in radians
> (br <- -52/180*pi)
[1] -0.907571211
> (latr <- 37/180*pi)
[1] 0.6457718232
> (lonr <- -91/180*pi)
[1] -1.588249619
> #1 Distance to North and East in chains
> (east <- sin(br)*2.67)
[1] -2.103988712
> (north <- cos(br)*2.67)
[1] 1.643816139
> #One degree in chains
> (deglat <- r*pi/180)
[1] 5527.527554
> (deglon <- r*pi/180*cos(latr))
[1] 4414.479788
> #2 distance in degrees
> (dlat <- north/deglat)
[1] 0.0002973872356
> (dlon <- east/deglon)
[1] -0.000476610793
> #3 arriving point (GPS coordinates)
> (lat <- 37+dlat)
[1] 37.00029739
> (lon <- -91+dlon)
[1] -91.00047661
  • $\begingroup$ Awesome, thank you! $\endgroup$ Mar 8 '20 at 22:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.