2016-06-29 10 views
0

私は米国のN析出に関するデータを持っています。これはnadp.sws.uiuc.edu/maplib/grids/2006/TotalN_dep_2006.zipからアクセス可能な圧縮されたディレクトリの.tifファイルにあります。緯度/経度に一致しないR-層の.tifラスタ層からデータを抽出

Iはrasterパッケージ用いRにデータをロード:私は、私は、ラスタから値を抽出したい対象のいくつかの座標を有する

require(raster) 
r <- raster('/path/to/dep_totalN_2006.tif') 

を。

test.dat <- structure(list(latitude = c(46.414597, 46.137664, 42.258794, 
44.287538, 46.567187, 46.205438), longitude = c(-86.030373, -85.990492, 
-85.847991, -85.806588, -87.954285, -87.481934)), .Names = c("latitude", 
"longitude"), class = "data.frame", row.names = c(NA, 6L)) 
> test.dat 
    latitude longitude 
1 46.41460 -86.03037 
2 46.13766 -85.99049 
3 42.25879 -85.84799 
4 44.28754 -85.80659 
5 46.56719 -87.95428 
6 46.20544 -87.48193 

は一般的に、データを抽出することで、この点から非常に簡単です:ここではdput形式のテストのための6つのサイトは、です。私はこれらの点について次のような方法でレイヤーからデータを取得します:

points   <- cbind(test.dat$longitude,test.dat$latitude) 
test.dat$out <- extract(r, points) 

これは機能しません。それはエラーではなく、単にNA値のベクトルを生成します。明らかに、ラスタレイヤのX/Y座標は緯度/経度にない

plot(r) 

enter image description here

、私はこれが期待する:私は間違っていただきましに手掛かりを与えるラスタレイヤを、プロットすることができなぜ私のextractコマンドがポイントリストのレイヤからデータを抽出できないのですか?これは非常に基本的で、他の場所で回答されているが、私の検索は明確に出てくる簡単な答えをもたらしていない場合はお詫び申し上げます。私はRを経験したんだけど、私は正確にラスターファイルを投写することができますどのようにR.内の空間データの私の使用に非常に軽い、rextractに私の呼び出しは、その緯度/経度に基づいてtest.dat内の私のサイトに適切な値を生成するように、 ?

+0

ラスタ投影座標系です。あなたのポイントとラスタの両方に同じ座標系を使用する必要があります。あなたの緯度と仮定すると、長いWGS84地理座標であり、そして最も簡単なのは、彼らは両方のWGS84ある@dww – dww

+0

をWGS84するラスタを再投影することであろう。ラスタをwgs84にどのように再投影するのですか? – colin

+1

'r.proj = projectRaster(R、CRSの=のCRS( '+ PROJ = longlat + ellps = WGS84 +データム= WGS84 + no_defs'))' –

答えて

2

あなたは、ラスタの座標参照系にあなたのポイントを投影しなければなりません。

library(rgdal) 
library(raster) 

sppoints <- SpatialPoints(points, proj4string=CRS('+proj=longlat +datum=WGS84')) 
tp <- spTransform(sppoints, crs(r)) 

今、あなたは

e <- extract(r, tp) 

を行うことができますあなたははコメントで提案されているように、他の方法の周りにそれを行うべきではありません。これは、変換によってラスタセルの値を推定する必要があり、データ品質が低下するためです。また、点を変換するのは計算上非常に高速です。

+0

解決と警告のおかげで。このようにします。 – colin

関連する問題