gdalwarpとprojectRasterの違い


9

ラスターを投影しようとしています。RにはprojectRaster()これを行うための関数があります(完全に再現可能な例の下に):

# example Raster
require(raster)
r <- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40)
r <- setValues(r, 1:ncell(r))
projection(r)
# project to
newproj <- "+init=epsg:4714"


# using raster package to reproject
pr1 <- projectRaster(r, crs = CRS(newproj), method = 'bilinear')

それはうまくいきます。しかし、それはかなり遅いです。

速度を上げるために、gdalwarp代わりに使用します(SSD を使用すると、ディスク/ Rへの読み書きのコストはそれほど高くありません)。

ただし、をprojectRaster()使用した結果を再現できませんgdalwarp

# using gdalwarp to reproject
tf <- tempfile(fileext = '.tif')
tf2 <- tempfile(fileext = '.tif')
writeRaster(r, tf)
system(command = paste(paste0("gdalwarp -t_srs \'", newproj, "\' -r bilinear -overwrite"), 
                       tf,
                       tf2))
pr2 <- raster(tf2)

動作するようですが、結果は異なります。

# Info
system(command = paste("gdalinfo", 
                       tf))
system(command = paste("gdalinfo", 
                       tf2))

# plots
plot(r)
plot(pr1)
plot(pr2)

#extents
extent(r)
extent(pr1)
extent(pr2)

# PROJ4
proj4string(r)
proj4string(pr1)
proj4string(pr2)

# extract value
take <- SpatialPoints(matrix(c(-100, 50), byrow = T, ncol = 2), proj4string = CRS(newproj))
plot(take, add = TRUE)
extract(pr1, take)
extract(pr2, take)

何が欠けている/間違っていますか?

他の(より速い)代替手段はありprojectRaster()ますか?


誰も?完全に再現可能な例を提供しました(LinuxまたはMacで動作するはずです)...
EDi

何を期待していますか?両方のオプションで同じproj.4を使用していますか?

どちらの方法でも、(-100、50)で同じ再投影されたラスター、同じ範囲、同じ値が生成されると思います。しかし、彼らは明らかにそうではない:(
EDi

1
2つのプログラムは、ワープする異なるグリッドを作成しています。双一次サンプリングがまったく同じであったとしても、補間されるポイントは異なる場所にあり、異なる答えが得られます。原点とピクセルサイズが異なります。gdalwarp(-te、-trなど)にいくつかのフラグを設定してRバージョンを試し、再現してから、ピクセル値を比較して、それらの違いを確認することができます。

複数の状況で、GCPを使用しなくても-orderフラグ(「ワーピングに使用される多項式の次数」)を使用すると、gdalwarpより正確な結果が得られることがわかりました。
クリストフ2015

回答:


10

再現性のあるすばらしい質問です。個人的には、違いの理由は双線形再投影の実装にあると思います。あなたは明らかに2つのアプローチのソースコードを調べることができますが、私はそれが非常に過剰であることを期待します。
Rの実装では、生のGDALバージョンよりも大きな「エラー」/「変更」が導入されているようです(私のバージョンとテストでは少なくとも-projectRasterは+ -0.01前後の変更を導入し、GDALは+ -0.002前後の値を提供します)。

最近傍の再投影を使用して両方のアプローチを比較すると、期待どおりに一致します。


投影法に関するこのヒントをありがとう!時間を見つけたら、それらをさらに詳しく見ていきます(ただし、私はRよりもCに慣れています)。
EDi、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.