ラスターデータからポイントデータの位置で値を抽出する

ここを参考にしています。
QGISでもPoint Sampling Toolがあるけども、ラスターの数が多いとしんどいですので、Rでやってみました。

library(rgdal)
library(maptools)
library(raster)


#ラスタースタックの作成
#実際は100枚ほどのラスターをスタック

rasStack = stack("raster1.tif","raster2.tif",.....,rasterN.tif")

#ポイントデータの読み込み
#maptoolsでもいいのだけどなぜかエラーが出たのでrgdalで。
#shpファイルの読み込みは過去ログ参照

Point=readOGR("~/SHP/","point")


#値を抽出する
rasValue=extract(rasStack, Point)

#抽出したrasValueにはIDがない(結合で必要)ので、Pointの属性テーブルにIDがない場合はくっつけちゃいます。

table=transform(rasValue,ID=Point$ID )


#IDマッチング
#IDが一致するものだけを取り出す。実際今回の場合は全部一致します
ID.match=match(Point$ID,table$ID)
table1=table[ID.match,]

#テーブル結合
Prec_point=spCbind(Point,table1)

#確認
names(Prec_point)

#書き出し
writeOGR(Point, ".", "Point_bind", driver="ESRI Shapefile")