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]:
../_images/howto_model_alti_data_track_interpolation_16_0.png