Как назначить координаты широты / долготы для набора данных в python? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть три набора данных xarray, LATITUDE, LONGITUDE, WIND SPEED все имеют одинаковые размеры x, y. Я хочу назначить наборы данных LATITUDE и LONGITUDE как координаты WIND SPEED в каждой точке кадра x, y, чтобы переменная WIND SPEED имела такие размеры: я должен продолжить? Входные данные - это вывод модели погоды в сетке в формате Netcdf. Я сделал некоторые вычисления из входных данных, и я хочу назначить координаты выходным данным вычислений (СКОРОСТЬ ВЕТРА). Позже я хочу выполнить пространственную интерполяцию с помощью метода ближайшего соседа, чтобы я мог получить значение в любом месте в наборе данных. Широта XArray Образец после импорта:

array([[21.821693, 21.821693, 21.821693, ..., 21.821693, 21.821693,
        21.821693],
        ......................................................
       [30.20221 , 30.20221 , 30.20221 , ..., 30.20221 , 30.20221 ,
        30.20221 ]], dtype=float32)

Скорость ветра Xarray:

array([[8.725852, 8.758366, 8.728758, ...,      nan,      nan,      nan],
       [8.502903, 8.563703, 8.574378, ...,      nan,      nan,      nan],
       ........]] dtype=float32)

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Вы можете объединить свои наборы данных и затем назначить нужные переменные в качестве координат:

data = np.random.rand(50,50)

windspeed = xr.Dataset({'windspeed':(['x','y'], data)})
lattitude = xr.Dataset({'lattitude':(['x','y'], np.cos(data))})
longitude = xr.Dataset({'longitude':(['x','y'], np.sin(data))})

ds = xr.merge([windspeed, lattitude, longitude])

ds.set_coords(['lattitude','longitude'])
<xarray.Dataset>
Dimensions:    (x: 50, y: 50)
Coordinates:
    lattitude  (x, y) float64 0.7035 0.9987 0.917 0.9958 ... 0.593 0.93 0.7624
    longitude  (x, y) float64 0.7107 0.05069 0.3988 ... 0.8052 0.3675 0.6471
Dimensions without coordinates: x, y
Data variables:
    windspeed  (x, y) float64 0.7905 0.05071 0.4102 ... 0.936 0.3763 0.7037
0 голосов
/ 26 февраля 2020

Одним из решений было бы создание списка диктов:

speed_lat_long_list_dict = 
[ {id:1, speed:'1', lat:'20.8', long: '-18.5}, 
  {id:2, speed:'3', lat:'24.8', long: '-14.5},
  ....
  {id:n, speed:'n', lat:'n', long: 'n} ]

Это позволило бы избежать путаницы при установке координат для дублированного значения скорости. например, что нам делать, если у нас разные координаты для одного и того же измерения скорости.

Это может быть передано в DataFrame, если вы хотите, или вы можете обработать его, используя для циклов или списков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...