簡體   English   中英

如何在沒有投影緯度 lopn 坐標的情況下從柵格中提取 xy 坐標的數據點

[英]How to extract data point for a xy coordiante from raster without projected lat lopn coordinates

您好我正在嘗試從樣本柵格堆棧ras_dt中提取xy點的值。 ras_dt是在-115.00,38.00,-110.05,45.00的域內具有網格坐標的EQUATES 數據 如何更改此柵格堆棧的投影和lat lon ,以便可以提取點xy的數據,如下面的代碼所示。

library(raster)
dturl<- "https://www.dropbox.com/s/ztxqpszjfjhpavz/EQUATES_ACONC_O3_SAM.nc?dl=1"
download.file(dturl, "EQUATES_ACONC_O3_SAM.nc")
ras_dt <- raster::stack("EQUATES_ACONC_O3_SAM.nc",varname = "O3") 
ras_dt

# the data domain is -115.00,38.00,-110.05,45.00
plot(ras_dt)

xy <- data.frame(lon=-113.0,lat=40.0)
coordinates(xy) <-  ~lon + lat
extr_dt <- raster::extract(ras_dt, xy) # how to get O3 values for xy here?
extr_dt

ras_dt 位於“lambertConformalProjection”中,具有以下信息:

char LambertConformalProjection;
  :grid_mapping_name = "lambert_conformal_conic";
  :latitude_of_projection_origin = 40.0; // double
  :longitude_of_central_meridian = -97.0; // double
  :standard_parallel = 33.0, 45.0; // double
  :earth_radius = 6370000.0; // double
  :_CoordinateTransformType = "Projection";
  :_CoordinateAxes = "x y";

您需要設置范圍和坐標參考系 (CRS)。 然后將您的 lon/lat 點轉換為該 CRS 並使用提取。 從您編輯的問題中,我們現在有了 CRS。

您指定“域”,但您需要在實際的 CRS 中進行協調。 我不知道這些是什么,所以我會猜測它,但它不會是正確的。

數據

library(terra)
dturl<- "https://www.dropbox.com/s/ztxqpszjfjhpavz/EQUATES_ACONC_O3_SAM.nc?dl=1"
download.file(dturl, "EQUATES_ACONC_O3_SAM.nc", mode="wb")
ras_dt <- rast("EQUATES_ACONC_O3_SAM.nc", "O3") 
pcrs <- "+proj=lcc +lon_0=-97 +lat_0=40 +lat_1=33 +lat_2=45 +r =6370000.0"

粗略估計程度:

v <- vect(rbind(c(-115, 38), c(-115, 45), c(-110.05, 38), c(-110.05, 45)), crs="+proj=longlat")
p <- project(v, pcrs)
e <- crds(p) |> apply(2, range) |> as.vector()
e
#[1] -1562368.5 -1025418.3  -139104.3   693662.9
 

設置范圍和 crs

ext(ras_dt) <- e
crs(ras_dt) <- pcrs 

將點轉換為柵格的 crs

xy <- vect(cbind(lon=-113.0,lat=40.0), crs="+proj=longlat")
pxy <- project(xy, pcrs)

並提取

extract(ras_dt, pxy)
#  ID O3_LAY=1_TSTEP=1 O3_LAY=1_TSTEP=2
#1  1         41.88482         40.99662

所以我們的柵格現在看起來像這樣。 空間分辨率應該是整數(12,000?)

ras_dt
#class       : SpatRaster 
#dimensions  : 70, 45, 2  (nrow, ncol, nlyr)
#resolution  : 11932.23, 11896.67  (x, y)
#extent      : -1562369, -1025418, -139104.3, 693662.9  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=lcc +lat_0=40 +lon_0=-97 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs 
#source      : EQUATES_ACONC_O3_SAM.nc:O3 
#varname     : O3 (O3              ) 
#names       : O3_LAY=1_TSTEP=1, O3_LAY=1_TSTEP=2 
#unit        : ppbV            , ppbV  

您能在文檔的某處找到並提供正確的范圍嗎? 並且也許要求數據提供者遵循 NetCDF 約定,以便使用數據所需的所有元數據都存儲在文件中。

暫無
暫無

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

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