У меня возникли проблемы с поиском наиболее эффективного способа преобразования спутниковых данных из нестандартной сетки в глобальную сетку 0,25 x 0,25 градуса.
У меня есть 2D-массив спутниковых данных и два соответствующих 2D-массива, дающих широту и долготу каждого пикселя.
Когда я рисую это с помощью pcolormesh, это выглядит так:
m.pcolormesh(lon, lat, windSpeed)
Я хочу интерполировать эти данные на сетку 0,25 x 0,25 градуса
lonGrid = arange(-180, 180, res)
latGrid = arange(-90, 90, res)
lonGrid,latGrid = meshgrid(lonGrid,latGrid)
Я пробовал возиться с функцией mpl_toolkits.basemap.interp (), но я не могу понять, как заставить мои точки lat и lon монотонно увеличиваться, что требуется для функции. Я могу ravel () мою сетку lon, отсортировать ее по возрастанию, а затем таким же образом отсортировать сетки windSpeed и lat, используя argsort ... но тогда lat не увеличивается монотонно.
lon = lon.ravel()
lat = lat.ravel()
windSpeed = windSpeed.ravel()
lon[lon > 180] = lon[lon > 180] - 360
lonSortInds = argsort(lon)
result = mpl_toolkits.basemap.interp(windSpeed2, lon2, lat2, lonGrid, latGrid, checkbounds=False, masked=True, order=1)
lat = lat[lonSortInds]
windSpeed = windSpeed[lonSortInds]
lon = sort(lon)
result = mpl_toolkits.basemap.interp(windSpeed, lon, lat, lonGrid, latGrid, checkbounds=False, masked=False, order=1)
ValueError: синь и инь должны увеличиваться!
Как лучше всего это сделать?