如何对lat/lon进行分类以找到最近的城市

2024-10-01 17:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩iris(真的很棒!),我有一个我感兴趣的城市列表,可以看到一段时间内的平均温度。我有覆盖全国气温的netcdf文件。我想用最接近我的城市的lat/LON标记多维数据集中的数据点,这样我就可以轻松获得这些城市所需的值,或者将这些城市的数据导出到某个地方

我想我需要以某种方式使用add_categorized_coord? https://scitools.org.uk/iris/docs/latest/iris/iris/coord_categorisation.html#iris.coord_categorisation.add_categorised_coord

我希望能举个例子。谢谢


Tags: 文件数据标记addiris列表netcdf感兴趣
1条回答
网友
1楼 · 发布于 2024-10-01 17:25:59

假设您有一个网格化的气温数据集,更好的解决方案是将数据插值到给定的坐标点,而不是在立方体中“标记”数据点

这可以通过在城市及其坐标上循环并使用cube.interpolate()方法来实现。有关示例,请参见https://scitools.org.uk/iris/docs/latest/userguide/interpolation_and_regridding.html#cube-interpolation-and-regridding

一个更优化的解决方案是使用trajectory模块将数据一次插值到所有城市点:

import iris
import iris.analysis.trajectory as itraj
import numpy as np

# Create some dummy data
nx = 10
ny = 20

lonc = iris.coords.DimCoord(
    np.linspace(-5, 10, nx), units="degrees", standard_name="longitude"
)
latc = iris.coords.DimCoord(
    np.linspace(45, 55, ny), units="degrees", standard_name="latitude"
)
cube = iris.cube.Cube(
    np.random.rand(ny, nx),
    dim_coords_and_dims=((latc, 0), (lonc, 1)),
    standard_name="x_wind",
    units="m s^-1",
    attributes=dict(title="dummy_data"),
)

# Create a Nx2 array of city coordinates
city_coords = np.array([[50.7184, -3.5339], [48.8566, 2.3522], [52.6401898, 1.2517445]])

# Interpolate the data to the given points
sample_points = [("latitude", city_coords[:, 0]), ("longitude", city_coords[:, 1])]
cube_values_in_cities = itraj.interpolate(cube, sample_points, "linear")

希望这有帮助

相关问题 更多 >

    热门问题