r-如何将(Sentinel_5_L2的)ncdf文件转换为geotiff



我正在尝试用netcdf文件创建一个geotiff文件。我有这个文件(Sentinel_5_L2(。但是我的代码没有运行。有人知道创建地理标志文件吗?

文件https://wetransfer.com/downloads/7c5692bef082bc64999e10d8a7a91e8f20211116115821/7774f8

这是错误

Error in .local(x, ...) : 
unused arguments (xmin = -179.996887207031, ymin = c(....)

这就是代码。

library(ncdf4) 
library(raster) 
library(rgdal) 
library(ggplot2) 
nc_data <- nc_open("TROPOSIF_L2B_2018-06-01.nc")
lon <- ncvar_get(nc_data, "PRODUCT/longitude", verbose=TRUE)
lat <- ncvar_get(nc_data, "PRODUCT/latitude", verbose=TRUE)
SIF_743 <- ncvar_get(nc_data,"PRODUCT/SIF_743", verbose=TRUE)
r <- raster(t(SIF_743), xmin=min(lon), xmx=max(lon), ymin=(lat), ymx=max(lat), crs=CRS("+init=epsg:4326"))
r <- flip(r, direction='y')
plot(r)

您可以进行

library(terra)
nc <- rast("TROPOSIF_L2B_2018-06-01.nc")
nc <- writeRaster(nc, "TROPOSIF_L2B_2018-06-01.tif")

terra在引擎盖下使用GDAL。

或者可能使用较旧的raster

library(raster)
ncr <- brick("TROPOSIF_L2B_2018-06-01.nc")
ncr <- writeRaster(ncr, "TROPOSIF_L2B_2018-06-01.tif")

但是,使用您的文件

r <- rast("TROPOSIF_L2B_2018-06-01.nc")
#Warning message:
#[rast] GDAL did not find an extent. Cells not equally spaced?
r
#class       : SpatRaster 
#dimensions  : 2711578, 7, 1  (nrow, ncol, nlyr)
#resolution  : 0.1428571, 3.687889e-07  (x, y)
#extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
#coord. ref. : lon/lat WGS 84 
#source      : TOA_RFL 
#varname     : TOA_RFL (TOA Reflectance at atmospheric windows within 665-785 nm) 
#name        : TOA_RFL 
#unit        :       - 

换句话说,您可以将这些数据强制到光栅,但由于它们的间距不规则,这可能是不正确的。但也许这对您的用例来说是可以的。原则上,您可以将数据读取为点和光栅化或类似的解决方案。

使用gdal:可能更容易、更可靠

gdal_translate NETCDF:"Input_FileName.nc":variable_name Output_FileName.tif

相关指导:https://nsidc.org/support/how/how-convert-golive-netcdf-variables-geotiff

最新更新