2016-03-29 20 views
0

私は2001年1月から2100年までの世界的な海面温度予測を毎月の解像度で含むNetCDFファイルを扱っています。特定の日付のSSTマップ、つまり2058年のSST予測を視覚化できるようにしたいと思います。しかし、私はこの時点で最終的なマップを得ることができます。最後のフレーム、つまり2100年12月地図。netCDFマップの時系列で特定の日付を表示

私は毎月の解像度が必要ないので、毎月の平均を12ヶ月単位で平均しました。 1年の決断は私が欲しいものです。私が言ったように、私は特定の日付を呼び出し、その日付のSST予測を視覚化できるようにしたいと思います。アニメーションの作成も便利です。

究極の目標は、これらのSST予測を使用して、別の地図レイヤーにあるマグロの生息地予測を推進することです。基本的に、各細胞(0.5°x 0.5°)はSSTに基づくマグロの適性評価を有し、SSTの変化に伴い適合性が変化する。

地中海の一部にしか興味がないので、グリッドを使用してターゲットのプロット領域を設定しました。

私はこれにかなり新しいので、私のコードに根本的に欠けているものがあると確信しています。私はそれにどのように接近するか分かりません。誰かが私にいくつかの指摘を与えることができれば、それは大いに感謝するだろう。たとえそれが全く異なるアプローチであっても、異なるパッケージを使用しています。使用

パッケージ:RNetCDF

grid <- GridTopology(c(-6.5,30), c(0.5,0.5), c(60,32)) 

NOAAsst <- open.nc("C:/Users/hayde/Desktop/Final Modelling Project/tos_O1.200101-210012.nc") 
print.nc(NOAAsst) 
dat<-read.nc(NOAAsst) 
sst<-dat$tos 
lat<-dat$lat 
long<-dat$lon 
close.nc(NOAAsst) 

latx <- rep(lat,length(long)) 
longx <- rep(long, length(lat)) 
longx <- as.vector(t(matrix(longx,nrow=length(long)))) 
sst <- data.frame(var = as.vector(t(apply(sst,c(1,2),"mean")))) 
map <- SpatialPointsDataFrame(cbind(longx,latx), sst, proj4string = CRS("+proj=merc +datum=WGS84")) 

############ Plotting the image ############### 

sst <- data.frame(temperature = rep(NA,length(coordinates(grid)[,1]))) 
grid <- SpatialGridDataFrame(grid, sst, proj4string = CRS("+proj=merc +datum=WGS84")) 
GridPoints<- coordinates(grid) 
MapPoints <- coordinates(map) 
for(i in 1:dim(GridPoints)[1]) { 
    distance <- spDistsN1(MapPoints, GridPoints[i,], longlat = TRUE) 
    grid$temperature[i] <- map$var[which.min(distance)] 
} 
spplot(grid, scales=list(draw=T)) 
+0

...

cdo seldate,DATE in.nc out.nc 

ncviewは、出版品質ではありませんが、それはあなたが効率的にデータを探索することができます。 'netcdf'を読み、書き、プロットすることができます。 – jsta

答えて

0

私はCDOでサブセットを処理し、データを探索するために、パッケージncviewを使用します。

たとえばあなたが

cdo sellonlatbox,lon1,lon2,lat1,lat2 tos_O1.200101-210012.nc outfile.nc 

で、このようなメッドなどのサブエリアを抽出することができ、その後、あなたは、ウィンドウの上部にある矢印の付いた画像をアニメーション化することができます

ncview outfile.nc 

でそれを表示します。

特定の年のみが必要な場合は、日付が正しく定義されていることを前提にcdo seldate関数を使用して、またはタイムステップを選択することもできます。私は `raster`パッケージを使用することをお勧めします

関連する問題