[R-sig-Geo] Derivation of intermediate points (great circle geometry) in the geosphere package
Tomislav Hengl
hengl at spatial-analyst.net
Thu Apr 15 08:57:22 CEST 2010
I have started using the geosphere package kindly provided by Robert
Hijmans [http://cran.r-project.org/web/packages/geosphere/]. My
intention is to derive a global map of the air routes density using
the open access flight routes [http://openflights.org/data.html].
I have discovered some strange results when trying to derive the
intermediate points on a path:
gcIntermediate(p1, p2, n)
*this uses the formulas described in
[http://williams.best.vwh.net/avform.htm#Intermediate]
I discovered that, depending on the location of points considering
quadrants, the current formula will (systematically?) shift the
coordinates to some new quadrant, which is obviously a bug:
> library(geosphere)
> gcIntermediate(c(0,0), c(10,10), 5) # this one is OK
lon lat
[1,] 1.803343 1.830237
[2,] 3.422141 3.468623
[3,] 4.961631 5.019001
[4,] 6.508449 6.565756
[5,] 8.150886 8.192447
> gcIntermediate(c(-10,10), c(10,10), 5) # this one needs to be
> fixed: ifelse(lon>0, lon+180, 180-lon); -1*lat
lon lat
[1,] 173.6232 -10.08957
[2,] 176.8920 -10.13646
[3,] 180.0000 -10.15108
[4,] -176.8920 -10.13646
[5,] -173.6232 -10.08957
> gcIntermediate(c(-20,-10), c(5,10), 5) # this is OK
lon lat
[1,] -15.4984322 -6.467336
[2,] -11.4054190 -3.175910
[3,] -7.5000000 0.000000
[4,] -3.5945810 3.175910
[5,] 0.4984322 6.467336
> gcIntermediate(c(-20,-25), c(10,5), 5) # this needs to be fixed:
> for(lon2<lon1) {ifelse(lon>0, 180-lon, 180+lon)}; -1*lat
lon lat
[1,] 165.7968 20.0356468
[2,] 170.9455 15.1760517
[3,] 175.7253 10.3444590
[4,] -179.6410 5.4446120
[5,] -174.9524 0.3684525
Is somebody really good in geosphere geometry?
BR & thanx
T. Hengl
http://home.medewerker.uva.nl/t.hengl/
More information about the R-sig-Geo
mailing list