簡體   English   中英

R中的crop.netcdf文件

[英]Crop netcdf files in R

我正在嘗試從 daily.netcdf 數據中裁剪帶有stars號 package 的多邊形的 .netcdf 文件。 我想我已經設法做到了並且可以獲得這個 plot

在此處輸入圖像描述

用這個腳本

library(tidyverse)
library(sf)
library(stars)

# Input nc file
nc.file <- "20220301120000-NCEI-L4_GHRSST-SSTblend-AVHRR_OI-GLOB-v02.0-fv02.1.nc"
# read nc data
nc.data <- read_ncdf(nc.file, var="analysed_sst")

# Read mask coordinates
coordenades.poligon <- read_csv("coordenades_poligon.csv")
colnames(coordenades.poligon) <- c("lon","lat")

# Build sf polygon to crop data
polygon <- coordenades.poligon %>%
  st_as_sf(coords = c("lon", "lat"), crs = 4326) %>%
  summarise(geometry = st_combine(geometry)) %>%
  st_cast("POLYGON")

# Crop data
nc.stars.crop <- st_crop(nc.data,polygon)

# plot
ggplot() + geom_stars(data=nc.stars.crop) +
  coord_equal() + theme_void() +
  scale_x_discrete(expand=c(0,0))+
  scale_y_discrete(expand=c(0,0))

現在我想在一個數據框中組合 lon、lat 和 analysed_sst。 我設法提取坐標

nc.stars.coords <- as.data.frame(st_coordinates(nc.stars.crop))

但找不到如何將相應的 sst 值與經度和緯度進行 cbind。 也許還有其他解決方案ncdf4 package。

非常感謝您的幫助

編輯 1

SST原始數據鏈接(nc文件): SST數據

編輯 2添加了 coordenades_poligons.csv 的負責人。 第一列是經度和緯度點,第三列是區域 ID,第四列表示季節。 這些只是按 ID 和季節篩選的單個區域的坐標。

12.5,44.5,Z1,S
2,44.5,Z1,S
0,41.5,Z1,S
4,40,Z1,S
9,40,Z1,S
9,42,Z1,S
0,41.5,Z2,S

我在這里做假設,因為這不是我的專業領域,但您可以使用raster -package 將其簡單地轉換為數據集。 這似乎是通往 go 的方式,也是根據作者的說法。

raster::as.data.frame(nc.stars.crop, xy = TRUE)

至少對我來說這是有效的。 然后你可以將它轉換回一個簡單的特征 object,如果你願意的話

raster::as.data.frame(nc.stars.crop, xy = TRUE) %>% 
sf::st_as_sf(coords = c('lon','lat'))

然而,經度/緯度的轉換並不准確,因為它產生的是點數據,而原始信息是柵格數據。 所以很明顯有信息丟失了。

sf::st_as_sf()似乎開箱即用,但我不確定,因為我無法驗證原始數據的轉換。 對我來說,以下工作:

read_ncdf('20220301120000-NCEI-L4_GHRSST-SSTblend-AVHRR_OI-GLOB-v02.0-fv02.1.nc', var="analysed_sst") %>%
  sf::st_as_sf()

這會創建多邊形,即初始柵格圖塊的大小,並且似乎可以保存所有必要的信息。

最后,這里有一個解決方法來准確提取您正在繪制的數據。 您可以通過將 ggplot 分配給變量然后訪問數據層來訪問 ggplot 使用的數據。

p <- ggplot() + geom_stars(data=nc.stars.crop) +
coord_equal() + theme_void() +
scale_x_discrete(expand=c(0,0))+
scale_y_discrete(expand=c(0,0))

p$layers[[1]]$data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM