我从HRRR下载了数据,类似于此笔记本中的grib2文件:
https://nbviewer.org/github/microsoft/AIforEarthDataSets/blob/main/data/noaa-hrrr.ipynb
我现在想用这些数据来表示特定经度,纬度。但我不知道如何将我的(经度,纬度)转换为矩阵数据中的网格坐标。
笔记本提到“HRRR数据来自Lambert共形投影”。(见第8号牢房)。
我看过格林尼治标准时间包,他们似乎处理兰伯特共形投影:实例/。
但是如何转换坐标呢?
下面的代码似乎是转换的,但我不认为这是针对Lambert的,在查看GMT文件之后,我无法调整命令中的设置。
lat=37.0; lon=-119.0;
gmt("mapproject -J+proj=merc", [lat;lon])
Vector{GMTdataset} with 1 segments
First segment DATA
Global BoundingBox: [-1.3247019404399555e7, 4.118821159351122e6]
First seg BoundingBox: [-1.3247019404399555e7, 4.118821159351122e6]
2×1 Matrix{Float64}:
4.118821159351122e6
-1.3247019404399555e7发布于 2021-12-22 11:57:00
我发现经度和纬度实际上在grib文件中,因此不需要转换:
using GRIB
f = GribFile(grb2_filename)
lons, lats, values = data(Message(f))
# lons in range [225.90452026573686, 299.0828072281622] = [-134.09547973426314, -60.91719277183779]
# lats in range [21.138123000000018, 52.61565330680793]因此,我们只需查找最近的经度和纬度的索引,并以值读取相应的值。
由于lat和lon的距离都接近110公里,所以我将把距离最小化如下:
(min_error, coord) = findmin(abs.(lats .- lat) .+ abs.(lons .- 360 .- lon))
(0.020456228700048484, CartesianIndex(269, 548))
values[coord]
294.8936767578125虽然这实际上没有回答标题问题,但它满足了我目前的需要,也许对其他人有用。
https://stackoverflow.com/questions/70445896
复制相似问题