我正在尝试使用terra包阅读下面的netcdf。netcdf文件包含3年的数据。当我加载数据时,它给了我前所未有的警告。
gdp <- terra::rast(file.path(dir_ls$base, 'v3.nc'))
Warning message:
In new_CppObject_xp(fields$.module, fields$.pointer, ...) :
GDAL Message 1: No UNIDATA NC_GLOBAL:Conventions attribute如果我检查一下投影,它就会显示出
crs(gdp)即使我试图投影数据,投影仍然是NA。
gdp <- terra::project(gdp, "epsg:4326")
crs(gdp)
NA编辑
terra::gdal(lib="")
gdal proj geos
"2.2.3" "4.9.3" "3.7.1gdp文件看起来就像
class : SpatRaster
dimensions : 21600, 43200, 3 (nrow, ncol, nlyr)
resolution : 0.008333333, 0.008333333 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 (EPSG:4326)
source : GDP_PPP_30arcsec_v3.nc
varname : GDP_PPP (Gross Domestic Production (GDP) (PPP))
names : GDP_PPP_1, GDP_PPP_2, GDP_PPP_3
unit : constant 2011 international US dollar, constant 2011
international US dollar, constant 2011 international US dollar我的会议信息在这里:
R version 4.0.5 (2021-03-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.5 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8
[4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rgdal_1.5-32 rgeos_0.5-9 raster_3.4-10 sp_1.4-5 geodata_0.4-9
[6] sf_0.9-8 terra_1.6-7 forcats_0.5.1 stringr_1.4.0 dplyr_1.0.6
[11] purrr_0.3.4 readr_1.4.0 tidyr_1.1.3 tibble_3.1.1 ggplot2_3.3.3
[16] tidyverse_1.3.1 data.table_1.14.0
loaded via a namespace (and not attached):
[1] tinytex_0.31 tidyselect_1.1.1 xfun_0.22 lattice_0.20-44
[5] haven_2.4.1 colorspace_2.0-1 vctrs_0.3.8 generics_0.1.0
[9] utf8_1.2.1 rlang_0.4.11 e1071_1.7-6 pillar_1.6.0
[13] glue_1.4.2 withr_2.4.2 DBI_1.1.1 dbplyr_2.1.1
[17] modelr_0.1.8 readxl_1.3.1 lifecycle_1.0.0 munsell_0.5.0
[21] gtable_0.3.0 cellranger_1.1.0 rvest_1.0.0 codetools_0.2-18
[25] class_7.3-19 fansi_0.4.2 broom_0.7.6 Rcpp_1.0.6
[29] KernSmooth_2.23-20 scales_1.1.1 backports_1.2.1 classInt_0.4-3
[33] jsonlite_1.7.2 fs_1.5.0 hms_1.0.0 stringi_1.6.1
[37] grid_4.0.5 cli_2.5.0 tools_4.0.5 magrittr_2.0.1
[41] proxy_0.4-25 crayon_1.4.1 pkgconfig_2.0.3 ellipsis_0.3.2
[45] xml2_1.3.2 reprex_2.0.0 lubridate_1.7.10 assertthat_0.2.1
[49] httr_1.4.2 rstudioapi_0.13 R6_2.5.0 units_0.7-1
[53] compiler_4.0.5 发布于 2022-08-25 11:18:42
如您所示,gdp显然有一个定义的坐标参考系统:
coord. ref. : lon/lat WGS 84 (EPSG:4326) 再把它投射到同样的crs上是没有意义的。
我不认为terra会将crs报告为NA。因为您没有显示实际的代码和结果,所以很难说出出了什么问题。但是,一个危险的标志是,您有许多包加载。如果您从一个干净的会话开始(没有加载任何包),您应该能够这样做。
library(terra)
r <- rast("filename")
crs(r)得到一个更好的结果。也许您加载了另一个隐藏terra::crs方法的包?在这种情况下,你可以
terra::crs(r)如下所示:
library(terra)
r <- rast("GDP_per_capita_PPP_1990_2015_v2.nc")
r
#class : SpatRaster
#dimensions : 2160, 4320, 26 (nrow, ncol, nlyr)
#resolution : 0.08333333, 0.08333334 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#coord. ref. : lon/lat WGS 84
#source : GDP_per_capita_PPP_1990_2015_v2.nc
#varname : GDP_per_capita_PPP (Gross Domestic Production (GDP) per capita (PPP))
#names : GDP_p~PPP_1, GDP_p~PPP_2, GDP_p~PPP_3, GDP_p~PPP_4, GDP_p~PPP_5, GDP_p~PPP_6, ...
#unit : constant 2011 international US dollar, constant 2011 international US dollar, constant 2011 international US dollar, constant 2011 international US dollar, constant 2011 international US dollar, constant 2011 international US dollar, ...
crs(r, proj=T)
#[1] "+proj=longlat +datum=WGS84 +no_defs"所有这些都与您收到的警告无关(我认为您可以忽略该警告)。
https://stackoverflow.com/questions/73472374
复制相似问题