0

我正在尝试使用 netcdf 文件制作 geotiff 文件。我有这个文件(Sentinel_5_L2)。但是我的代码没有运行。有人知道创建geotiff文件吗?

文件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)
4

2 回答 2

0

使用 gdal 执行此操作可能更容易,更可靠:

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

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

于 2021-11-17T18:37:25.843 回答
0

你可以做

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        :       - 

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

于 2021-11-17T20:13:06.423 回答