最小コスト分析のためにパッケージ gdistance を使用しています。アイデアは、定義されたコスト値を持つコスト グリッド (ラスター) を介して、宛先ポイントからソースへのパスを決定することです。これにより、パスはコストの高いピクセルを回避し、コスト値の低いピクセルを優先します。私のデータで機能するコードは次のとおりです。
Costpath<-shortestPath(CostTrans,Cherangfirstloc.utm[1,],Cherangfirstloc.utm[132,], output="SpatialLines")
これにより、コストグリッドをCostTrans
構成し、Cherangfirstloc.utm[1,]
Spatialpoints データフレーム (ソース) からの最初の場所/ポイントでありCherangfirstloc.utm[132,]
、Spatialpoints データフレーム (宛先) からの最後の場所/ポイントです。出力は、両方の場所/ポイントを結ぶ線です。
ただし、複数の最小コスト パスを計算したいので、ソースはデータフレームのすべての行になり、宛先は変わりません。これは、次のソースがCherangfirstloc.utm[2,]
、その後Cherangfirstloc.utm[3,]
などになることを意味します。これは、for ループまたは関数で実行できると思いますsapply
。残念ながら、私はこれを定式化する方法を知りません。
この反復プロセスを定式化する方法について何かヒントをいただけますか? この場で質問してもよろしいでしょうか。基本的に、データフレームを反復処理する方法を知りたいだけです。したがって、gdistance と最小コスト分析がどのように機能するかは重要ではありません。
サンプル データとして使用できるコードを次に示します。
library(gdistance)
r <- raster(nrows=6, ncols=7, xmn=0, xmx=7, ymn=0, ymx=6, crs="+proj=utm
+units=m")
r[] <- c(2, 2, 1, 1, 5, 5, 5, #creates costgrid
2, 2, 8, 8, 5, 2, 1,
7, 1, 1, 8, 2, 2, 2,
8, 7, 8, 8, 8, 8, 5,
8, 8, 1, 1, 5, 3, 9,
8, 1, 1, 2, 5, 3, 9)
T <- transition(r, function(x) 1/mean(x), 8) #creates transition layer of costgrid
T <- geoCorrection(T) #correction
c1 <- c(5.5,1.5) #first source point
c2 <- c(5.5,4) #second source point
c3 <- c(1.5,5.5) #destination
sPath2 <- shortestPath(T, c1, c3, output="SpatialLines") # creates the least cost path
残念ながら、反復できるように c1、c2、および c3 を Spatialpoints データフレームに含める方法がわかりませんでした。これがまだ役立つことを願っています。
そのあたりのヒントを教えていただければ幸いです。あなたの努力に感謝します!