4

等面積 Behrmann 投影のラスターがあり、それを Mollweide 投影とプロットに投影したいと考えています。

ただし、次のコードでこれを行うと、マップが横に伸び、予期しないさまざまな陸地の輪郭があるため、プロットが正しくないように見えます。また、マップはプロットを超えて広がっています窓。

これをうまくプロットするのを手伝ってくれる人はいますか?

ありがとう!

使用したデータファイルはこちらのリンクからダウンロードできます。

これが私がこれまでに持っているコードです:

require(rgdal)
require(maptools)
require(raster)

data(wrld_simpl)

mollCRS <- CRS('+proj=moll')
behrmannCRS <- CRS('+proj=cea +lat_ts=30')

sst <- raster("~/Dropbox/Public/sst.tif", crs=behrmannCRS)

sst_moll <- projectRaster(sst, crs=mollCRS)
wrld <- spTransform(wrld_simpl, mollCRS)

plot(sst_moll)
plot(wrld, add=TRUE)

ここに画像の説明を入力

4

1 に答える 1

6

このページの例は機能しているように見えるので、可能な限り模倣してみました。ラスター画像の左端と右端が重なるため、問題が発生すると思います。例のようにクロッピングと Lat-Lon への中間再投影は、問題を解決するようです。

おそらく、この回避策は、問題に直接対処するより洗練されたソリューションの基礎となる可能性があります。ラスターを 2 回再投影することは有益ではないからです。

# packages
library(rgdal)
library(maptools)
library(raster)

# define projections
mollCRS <- CRS('+proj=moll')
behrmannCRS <- CRS('+proj=cea +lat_ts=30')

# read data
data(wrld_simpl)
sst <- raster("~/Downloads/sst.tif", crs=behrmannCRS)

# crop sst to extent of world to avoid overlap on the seam
world_ext = projectExtent(wrld_simpl, crs = behrmannCRS)
sst_crop = crop(x = sst, y=world_ext, snap='in')

# convert sst to longlat (similar to test file)
# somehow this gets rid of the unwanted pixels outside the ellipse
sst_longlat = projectRaster(sst_crop, crs = ('+proj=longlat'))

# then convert to mollweide
sst_moll <- projectRaster(sst_longlat, crs=mollCRS, over=T)
wrld <- spTransform(wrld_simpl, mollCRS)

# plot results
plot(sst_moll)
plot(wrld, add=TRUE)

ここに画像の説明を入力

于 2014-12-17T23:09:19.950 に答える