gIntersection を使用して、SpatialPolygonsDataFrame から一度に 1 つずつポリゴンで全国的なパス ネットワークをクリップしています。各ポリゴンをループし、パス ネットワークをクリッピングし、クリッピングされたパスの長さを計算し、これを path.lgth というデータ フレームに保存します。
poly<-readShapePoly("C:\\temp\\polygons.shp")
paths<-readShapeLines("C:\\temp\\paths.shp")
#loop through all polygons clipping lines
path.lgth<-data.frame()
for (i in 1:length(poly)){
clip<-gIntersection(paths,poly[i,])
lgth<-gLength(clip)
vid<-poly@data[i,3]
data<-cbind(vid,lgth)
path.lgth<-rbind(path.lgth,data)
print(i)
}
vid 行は、パスの長さとともにデータフレームに保存するポリゴン ID を抽出するだけです。
私の問題は、最初のポリゴンを作成するのに時間がかかりすぎることです (約 12 分!)。これをスピードアップする方法はありますか?gIntersection が数学的に何をするのかわかりません (すべてのパスをチェックして、それらがポリゴンと重なっているかどうかを確認していますか?)。パスを単純化したので、それらは 1 つの機能にすぎません。
ご協力いただきありがとうございます。