Ich habe zwei verschiedene Xarray-Datasets mit unterschiedlichen Breiten- und Längengridauflösungen. Ich möchte das eine Xarray mit niedriger Auflösung auf die gleiche Auflösung wie das eine Xarray mit höherer Auflösung neu regraphen. Ich habe einige Beispiele gefunden (z. B. http://earthpy.org/interpolation_between_grids_with_basemap.html), aber es funktioniert nicht für mich. Hier ist ein Beispiel, das ich für den Test gemacht:Interpolation zwischen zwei Xarray-Datasets mit Basemap
import numpy as np
import xarray as xray
import mpl_toolkits.basemap
var1=xray.DataArray(np.random.randn(len(np.linspace(40.5,49.5,10)),len(np.linspace(-39.5,-20.5,20))),coords=[np.linspace(40.5,49.5,10), np.linspace(-39.5,-20.5,20)],dims=['lat','lon'])
(xlon, xlat)=np.meshgrid(np.linspace(-39.875,-20.125,80),np.linspace(40.125,49.875,40))
var2=xray.DataArray(-xlon**2+xlat**2,coords=[np.linspace(40.125,49.875,40),np.linspace(-39.875,-20.125,80)],dims=['lat','lon'])
mpl_toolkits.basemap.interp(var1,var1.lon,var1.lat,var2.lon,var2.lat,checkbounds=False,masked=False,order=0)
bekomme ich folgende Fehlermeldung:
ValueError: xout and yout must have same shape!
Screenshot:
Hat basemap.interp() erfordern xout und yout werden die gleiche Form? Also muss var2 ein Quadrat sein? Dies ist bei meinen Datensätzen fast nie der Fall! Wie kann ich reg1 var1 die gleiche Auflösung wie var2 regrid?
Hinweis: Nach der Neuberechnung möchte ich var1 unterteilen einige Bedingung im Zusammenhang mit var2. Zum Beispiel:
var1_subset = var1.where(var2>1000)
Also ich möchte jeden Verlust von Rasterpunkten während der Interpolation minimieren.