-1

2001 年 1 月から 2100 年 12 月までの全球海面水温予測を月ごとの解像度で含む netCDF ファイルを使用しています。特定の日付の SST マップを表示できるようにしたいと考えています。つまり、2058 年の SST 予測を視覚化したいと考えています。ただし、この時点で取得できるのは最終的なマップだけです。これは最後のフレームであると想定しています。 2100 年 12 月の地図。

毎月の解像度は必要ないので、12 か月の各セクションの平均を年間平均にしました。私が望むのは一年の決意です。前述したように、特定の日付を呼び出して、その日付の 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))
4

1 に答える 1

0

CDO でサブセット化を処理してから、パッケージ ncview を使用してデータを調査します。

たとえば、Med などのサブエリアを抽出できます。

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

そして、それを表示します

ncview outfile.nc

ウィンドウの上部にある矢印を使用して、画像をアニメーション化できます。

特定の年のみが必要な場合は、日付が正しく定義されていることを前提として、cdo seldate 関数を使用するか、タイムステップを選択することもできます。

cdo seldate,DATE in.nc out.nc

ncview は出版品質ではありませんが、データを効率的に探索できます...

于 2017-01-18T11:18:05.013 に答える