在LatLong中工作时,gridDistance会计算大地距离吗? (R中的光栅包)

时间:2013-03-26 17:02:21

标签: r distance raster

R(栅格包)中的

gridDistance函数生成一个距离具有给定值的单元格的距离图。该函数以当前投影为单位给出距离,如果在LatLong中工作,则以米为单位。我想知道如果使用LatLong,距离是“校正的”(大地测量)。否则我可能需要重新投射到等距投影。 感谢

1 个答案:

答案 0 :(得分:2)

查看真正优秀的raster包的来源,看起来你的直觉是正确的......

# From gridDistance() when lonlat is true
if (lonlat) {
    distance <- pointDistance(

# From pointDistance()
if (! longlat ) {
    return( .planedist(p1[,1], p1[,2], p2[,1], p2[,2]) )
} else { 
    return( .haversine(p1[,1], p1[,2], p2[,1], p2[,2], r=6378137) )
}

# Finally from .haversine()
.haversine <- function(x1, y1, x2, y2, r=6378137) {
adj <- pi / 180
x1 <- x1 * adj
y1 <- y1 * adj
x2 <- x2 * adj
y2 <- y2 * adj
x <- sqrt((cos(y2) * sin(x1-x2))^2 + (cos(y1) * sin(y2) - sin(y1) * cos(y2) * cos(x1-x2))^2)
y <- sin(y1) * sin(y2) + cos(y1) * cos(y2) * cos(x1-x2)
return ( r * atan2(x, y) )
}

简而言之,是的,你获得了超精确的大地距离。