If I wanted to interpolate points along a Great Circle Arc, it makes sense that either endpoint of the Great Circle is a satisfactory starting place. Next, I suppose I'll need a projection to preserve distances along the Great Circle. Unless someone corrects me, I think an Azimuthal Equidistant projection centered on either endpoint of the Great Circle would work.

From Wikipedia, with respect to an Azimuthal Equidistant projection "all points on the map are at proportionately correct distances from the center point", and additionally, it's "useful for showing airline distances from [the] center point of projection".

I suspect I can implement the Azimuthal Equidistant in Proj4js, but I've never really customized a projection before, so basically I'm just curious whether I'm doing it properly..

Now if I go to SpatialReference.org and search for Azimuthal Equidistant, I see both north and south pole-centered customizations of the projection. Respectively, they're implemented in Proj4js like so:

North Pole Azimuthal Equidistant:

Proj4js.defs["ESRI:102016"] = "+proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

South Pole Azimuthal Equidistant:

Proj4js.defs["ESRI:102019"] = "+proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

It follows that the only value changing in either projection is the latitude, itself, +lat_0=, which changes from 90 to -90. So I'm pretty sure I just need to set these +lat_0 and +lon_0 appropriately, and bingo--the Azimuthal Equidistant is properly defined.

So with all of this said..

Is this a valid way to define an Azimuthal Equidistant projection relative to a specific place, like Columbia, South Carolina? (Lon: -81.020742, Lat: 34.008654)

Proj4js.defs["CUSTOM:10001"] = "+proj=aeqd +lat_0=34.008654 +lon_0=-81.020742 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

I hate to ask such a Yes or No question, so please note the additional opportunity to remark on whether this is a wise choice of projection considering the scenario (interpolating points at fixed distances along a Great Circle Arc).


This looks ok. If you run into reprojecting problems, try the spherical version, as I explained here:

Manipulating Azimuthal Equidistant Projections in QGIS

  • Interesting, @AndreJ. Regarding your edit in that post (problem with reprojecting ..on an ellipsoid), that makes me wonder how I can test the aeqd implementation to make sure it's working as expected before relying on any values it emits. :/
    – elrobis
    Oct 13 '14 at 19:22
  • Based on your understanding of that bug/flaw, would you be comfortable using the projection definition above for "hemisphere-sized" regions of interest? For instance, if I were interested in interpolating points along an arc with endpoints in Boston MA, and Honolulu HI, with the aeqd centered at either endpoint, would it be acceptable? Your edit in that answer seems to imply (to me at least) that any problems projecting to aedq from an ellipsoid are only apparent at the extremities. Am I wrong? Any idea what the safety threshold might be--that is, maximum reliable distance?
    – elrobis
    Oct 13 '14 at 19:37
  • 1
    I have not looked into that bug deeper lately, but it seems to me that it happens for points on the backside only. For your example, try both methods and compare the results. The ellipsoid should have more accurate values.
    – AndreJ
    Oct 14 '14 at 3:28
  • Yeah, I actually tried it before leaving work, and neither version of the Proj4 (using ellipsoid or spherical) performed the coord transformation. Hopefully I'll have a chance to toy w/ it a little more tomorrow. I thought the JS funct was correct so I don't know why it returned (0,0) for the transformed pt.. hmm... you know, I wonder if I transformed the point at the origin???? lol I'll find out soon.
    – elrobis
    Oct 14 '14 at 3:56
  • 1
    Yep, it worked. Before I left the office yesterday I tried to transform only one point and was baffled when it returned (0,0). So I jumped to the conclusion I messed up. But it turns out I was transforming the origin. The other endpoint returns the kind of values I'd expect. Thanks @AndreJ
    – elrobis
    Oct 14 '14 at 13:23

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.