我有一个包含以下(示例)变量的 netcdf 文件:
纬度
经度
温度
尺寸以[x,y](像素坐标)表示,主要是因为纬度和经度都是不规则网格的二维阵列。
我想提取温度的像素值,例如53.55,3.5(lat/lon度十进制坐标)。通常,对于纬度/经度的一维数组,我可以使用numpy。argmin()来查找lat/lon的索引,从而找到温度变量的像素坐标。
或者,在xarray中,我可以使用eg。
import xarray as xr
ds = open_dataset(some_file)
ds.close()
ds.temperature.sel(lat=53.55, lon=3.5, method='nearest')
除了我的尺寸现在在 (x, y) 中。也许是由于对netcdf数据格式的了解不足,但是我很难想出提取所需数据的方法。如何提取所需的像素值?让我知道我是否可以更好地澄清这个问题。
如果您首先计算每个(2D)网格点到您请求的位置的距离,您仍然可以使用artmin()
。小例子:
import xarray as xr
import numpy as np
f = xr.open_dataset('tauu.his.NETHERLANDS.NL_W.DOWA_40h12tg2_fERA5_WF2019_fix.201601.nc')
# 2D latitude and longitude
lons = f['lon'].values
lats = f['lat'].values
# Goal latitude and longitude
lon = 4.
lat = 52.
# Calculate distance (in degrees..) for all grid points
distance = np.sqrt( (lons-lon)**2 + (lats-lat)**2 )
# `argmin` on a 2D (or 3D, 4D, ..) field gives the index in the flattened array:
ji = distance.argmin()
# "Unravel" the index:
j,i = np.unravel_index(ji, lons.shape)
print(lons[j,i], lats[j,i]) # Prints: 3.989169 52.00158
在这种情况下,我简单地使用了以度为单位的欧几里得距离。你可以用更花哨或更精确的东西来代替它,比如球坐标中的距离。
问题: 我在R中有一个代码,可以从单个Aqua Modis网络CDF文件中提取每月海面温度(SST)值(见下文)。但是,我在一个文件夹中有一批 59 个 Aqua Modis netCDF 文件。 目的: 我的目标是从所有59个netCDF文件的每个netCDF中提取变量的经度、纬度和SST,使用函数stack::raster()将它们转换为光栅文件,然后处理这些文件。 我的数据框有 650 行,
我需要一些处理NetCDF文件的帮助。我总共有10个文件,分别用于10年。每年都有多个(相同的)变量,其中一些还涵盖每日值。在这里,我向您展示了一个结构示例: 我需要将数据作为模型的输入进行处理。我需要从10个NetCDF文件中提取的变量是SMB变量,它只是每个网格单元的年度值。所以我想构建一个如下形式的NetCDF: 我知道 ncks 命令已经只提取 SMB 变量,但我无法一次将其应用于多个文件
在我的Android应用程序,我需要变形的图像从一个点到另一个点。看起来应该是那样的 原点A和B是A的新位置 我尝试使用“drawBitmapMesh”函数使其成为可能,但没有达到,以下是包装代码: 公共空隙扭曲(浮动起点TX、浮动起点、浮动终点X、浮动终点Y){
问题内容: 因此,我有三个numpy数组,它们在网格上存储纬度,经度和一些属性值-也就是说,我有LAT(y,x),LON(y,x)和温度T(y,x) ),对于x和y的某些限制。网格不一定是规则的-实际上,它是三极的。 然后,我想将这些属性(温度)值插值到一堆不同的纬度/经度点上(分别存储为lat1(t),lon1(t),大约10,000 t …),这些点不属于实际的网格点。我已经尝试过matplo
我想在图像空间中把3D点转换成2D点。根据hartley和zisserman的《多视图几何学》一书,我们用DLT计算摄像机射影矩阵只需要6个点,我做到了。有了矩阵,我能够准确地重新投影点。 虽然投影矩阵工作正常,但从投影矩阵中提取的固有参数却不正常,每次都相差很小mm。 下面是我能够提取的内在参数的示例 谢谢你。
我有许多坐标(大约20000),我需要从许多NetCDF文件中提取数据,每个文件大约有30000个时间步(未来的气候场景)。使用这里的解决方案效率不高,原因是每个i,j将“dsloc”转换为“dataframe”所花费的时间(请看下面的代码)。**可以从这里下载NetCDF文件示例** 结果是: 这意味着每个i、j需要大约9秒来处理。考虑到大量的坐标和netcdf文件以及大量的时间步长,我想知道是