У меня есть файл netcdf со значениями с плавающей запятой, представляющими концентрацию хлорофилла в широтах и долготах. Я пытаюсь нарисовать линию между двумя наборами латов и долг и вернуть все значения хлорофилла из точек на линии.
Я подхожу к нему с геометрической точки зрения: для точек (x1, y1) и (x2, y2) найдите наклон и точку пересечения линии и верните все значения x для заданных значений y на линия. Как только у меня будут все значения x и y (долгота и широта), я надеюсь ввести их в метод выбора xarray, чтобы вернуть концентрацию хлорофилла.
ds = '~/apr1.nc'
ds = xarray.open_dataset(ds, decode_times=False)
x1, y1 = [34.3282, 32.4791]
x2, y2 = [34.7, 32.21]
slope = (y2 - y1) / (x2 - x1)
intercept = y1 - (slope * x1)
line_lons = np.arange(x1, x2, step)
line_lats = [slope * x + intercept for x in lons]
values = ds.CHL.sel(lat=line_lats, lon=line_lons, method='nearest')
ds.values
>>> [0.0908799 , 0.06634101, 0.07615771, 0.16289435],
[0.06787204, 0.07480557, 0.0655338 , 0.06064864],
[0.06352911, 0.06586582, 0.06702182, 0.10024723],
[0.0789495 , 0.07035938, 0.07455409, 0.08405576]]], dtype=float32)
line_lons
>>> array([34.3282, 34.4282, 34.5282, 34.6282])
Я хочу создать график с долготой по оси x и значениями по оси y. Проблема в том, что команда ds.values возвращает пустой массив данных в форме (1, 4, 4), в то время как долготы равны 4. В возвращаемом массиве значений намного больше.
plt.plot(line_lons, chlvalues.values)
Есть идеи, почему это так и как я могу вернуть одно значение для одного входа?
Спасибо.