2

R(ラスターパッケージ)のgridDistance関数は、指定された値を持つセルからの距離のマップを生成します。この関数は、現在の投影の単位で、またはLatLongで作業している場合はメートルで距離を示します。LatLongを使用すると、距離が「修正」(測地)されるのではないかと思います。それ以外の場合は、おそらく等距離投影に再投影する必要があります。ありがとう

4

1 に答える 1

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) )
}

つまり、そうです、非常に正確な測地距離が得られます。

于 2013-03-26T19:03:07.557 に答える