Click here
to download this notebook.
How to compare interpolated fields
In this notebook we will compare a set of data to it’s interpolated values.
In addition we will interpolate a field using the 3 available methods of interpolation.
[2]:
from casys import (
NadirData,
AxeParams,
CasysPlot,
DateHandler,
Field,
PlotParams,
)
from casys.readers import CLSTableReader
NadirData.enable_loginfo()
Create your NadirData
[3]:
start = DateHandler.from_orf(orf="C_J3_GDRD", cycle_nb=122, pass_nb=1, pos="first")
end = DateHandler.from_orf(orf="C_J3_GDRD", cycle_nb=122, pass_nb=1, pos="last")
[4]:
table_name = "TABLE_C_J3_B_GDRD"
orf_name = "C_J3_GDRD"
reader = CLSTableReader(
name=table_name,
date_start=start,
date_end=end,
orf=orf_name,
time="time",
longitude="LONGITUDE",
latitude="LATITUDE",
)
cd = NadirData(source=reader)
reader_interp = CLSTableReader(
name=table_name,
date_start=start,
date_end=end,
orf=orf_name,
time="time",
longitude="LONGITUDE",
latitude="LATITUDE",
reference_track="J3",
)
cd_interp = NadirData(source=reader_interp)
Define fields with their interpolation parameters
[5]:
var_sla = Field(
name="SLA",
source="ORBIT.ALTI - RANGE.ALTI - MEAN_SEA_SURFACE.MODEL.CNESCLS15",
unit="m",
)
var_sla_linear = Field(
name="SLA_linear",
source="ORBIT.ALTI - RANGE.ALTI - MEAN_SEA_SURFACE.MODEL.CNESCLS15",
unit="m",
interpolation="linear",
)
var_sla_nearest = Field(
name="SLA_nearest",
source="ORBIT.ALTI - RANGE.ALTI - MEAN_SEA_SURFACE.MODEL.CNESCLS15",
unit="m",
interpolation="nearest",
)
var_sla_spline = Field(
name="SLA_spline",
source="ORBIT.ALTI - RANGE.ALTI - MEAN_SEA_SURFACE.MODEL.CNESCLS15",
unit="m",
interpolation={"mode": "smoothing_spline", "noise_level": 0.1},
)
Add your diagnostics the same way you usually do
[6]:
cd.add_raw_data(name="SLA", field=var_sla)
cd_interp.add_raw_data(name="SLA linear", field=var_sla_linear)
cd_interp.add_raw_data(name="SLA nearest", field=var_sla_nearest)
cd_interp.add_raw_data(name="SLA spline", field=var_sla_spline)
[7]:
cd.compute()
2025-05-14 11:00:02 INFO Reading ['LONGITUDE', 'LATITUDE', 'SLA', 'time']
2025-05-14 11:00:02 INFO Computing done.
[8]:
cd_interp.compute()
2025-05-14 11:00:02 INFO Reading ['LONGITUDE', 'LATITUDE', 'SLA_spline', 'time', 'SLA_nearest', 'SLA_linear']
2025-05-14 11:00:02 INFO Interpolating data along reference track.
2025-05-14 11:00:03 INFO Computing done.
[9]:
cd.data
[9]:
<xarray.Dataset> Size: 110kB Dimensions: (time: 3428) Coordinates: * time (time) datetime64[ns] 27kB 2019-06-01T05:30:29.807497 ... 2019... Data variables: LONGITUDE (time) float64 27kB 17.01 17.14 17.27 ... -177.4 -177.3 -177.3 LATITUDE (time) float64 27kB -66.15 -66.15 -66.15 ... 66.15 66.15 66.15 SLA (time) float64 27kB nan nan nan nan nan ... nan nan nan nan nan
[10]:
cd_interp.data
[10]:
<xarray.Dataset> Size: 175kB Dimensions: (time: 3128) Coordinates: * time (time) datetime64[ns] 25kB 2019-06-01T05:30:30.445071... LONGITUDE (time) float64 25kB 17.09 17.22 17.36 ... -177.5 -177.4 LATITUDE (time) float64 25kB -66.15 -66.15 -66.15 ... 66.15 66.15 Data variables: SLA_spline (time) float64 25kB nan nan nan nan ... nan nan nan nan SLA_nearest (time) float64 25kB nan nan nan nan ... nan nan nan nan SLA_linear (time) float64 25kB nan nan nan nan ... nan nan nan nan interpolated_index (time) int64 25kB 1000000000 1000000001 ... 1000003127
Plot your comparison
[11]:
common_params = {
"grid": True,
"color_limits": (-5, 0),
"marker_size": 6,
"fill_ocean": False,
"x_limits": (98.5, 100.5),
"y_limits": (-2.2, -1),
}
plot_par = PlotParams(color_bar=AxeParams(position="left"), **common_params)
plot_par2 = PlotParams(
color_map="autumn",
color_bar=AxeParams(position="right", label="SLA interp (m)"),
**common_params,
)
plot_par3 = PlotParams(color_map="autumn", color_bar=False, **common_params)
sla_plot = CasysPlot(data=cd, data_name="SLA", plot="map", plot_params=plot_par)
sla_plot_linear = CasysPlot(
data=cd_interp, data_name="SLA linear", plot="map", plot_params=plot_par2
)
sla_plot_nearest = CasysPlot(
data=cd_interp, data_name="SLA nearest", plot="map", plot_params=plot_par3
)
sla_plot_spline = CasysPlot(
data=cd_interp, data_name="SLA spline", plot="map", plot_params=plot_par3
)
sla_plot.add_stat_bar()
sla_plot_linear.add_stat_bar()
sla_plot_nearest.add_stat_bar()
sla_plot_spline.add_stat_bar()
# That's new!
sla_plot_nearest.adjust_coordinates(longitude=0.1, latitude=0)
sla_plot_spline.adjust_coordinates(longitude=0.2, latitude=0)
sla_plot.add_plot(sla_plot_linear)
sla_plot.add_plot(sla_plot_nearest)
sla_plot.add_plot(sla_plot_spline)
sla_plot.show()
[11]:
