Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ICESat-2 Module

The ICESat-2 module within SlideRule supports a number of both legacy p-series and s-series endpoints, as well as the newer DataFrame-based x-series endpoints. This document focuses on the x-series endpoints while still referencing the other legacy endpoints when helpful.

Three main kinds of data are returned by the ICESat-2 endpoints: segmented photon data, elevation data (from the ATL06-SR algorithm), and vegetation data (from the PhoREAL algorithm). All data returned by the ICESat-2 endpoints are organized around the concept of an extent. An extent is a variable length, customized ATL03 segment. It takes the ATL03 photons and divides them up based on their along-track distance, filters them, and then packages them together a single new custom segment. Given that the ICESat-2 standard data products have a well defined meaning for segment, SlideRule uses the term extent to indicate this custom-length and custom-filtered segment of photons.

The following processing flags are used for all ICESat-2 endpoints:

In addition, most endpoints support the generation of a name filter using the granule parameter:

1. ATL03 - atl03x

The SlideRule atl03x endpoint provides a service for ATL03 custom processing. This endpoint queries ATL03 input granules for photon heights and locations based on a set of photon-input parameters that select geographic and temporal ranges. It then selects a subset of these photons based on a set of photon classification parameters, and divides these selected photons into short along-track extents, each of which is suitable for generating a single height estimate. These extents may be returned to the client, or may be passed to downstream algorithms like the ATL06-SR height-estimation module, or the PhoREAL algorithm.

Using the Python client, this service is called via:

sliderule.run('atl03x', parms)

The default resulting DataFrame from this endpoint contains the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
latitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
longitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
x_atcAlong track distancemeters (double)dist_ph_along + segment_distance
y_atcAcross track distancemeters (float)dist_ph_across
heightPhoton elevation above referencemeters (float)vertical datum controlled by parameters, default is ITRF2014
solar_elevationSun elevation as provided in ATL03degrees (float)
background_rateSolar background ratePE per second (float)
spacecraft_velocityAlong track velocity of footprints on surface of the earthmeters per second
atl03_cnfATL03 confidence-2:possible_tep, -1:not considered, 0:noise, 1:within 10m, 2:low, 3:medium, 4:highsignal_conf_ph
quality_phATL03 quality0:nominal, 1:afterpulse, 2:impulse, 3:tepadditional values added in ATL03 version 7
ph_indexindex of photon for the given beam in the ATL03 granulescalar
reliefRelative elevation from detected surface, provided by ATL08meters (float)Optional: must enable phoreal
landcoverATL08 land cover flagsOptional: must enable phoreal
snowcoverATL08 snow cover flagsOptional: must enable phoreal
atl08_classATL08 photon classification0:noise, 1:ground, 2:canopy, 3:top of canopy, 4:unclassifiedOptional: must enable phoreal or specify atl08_class
yapc_scoreYAPC photon weighthigher is denser; 0-65535 for scores read from release 007 granules, 0-255 for release 006Optional: must enable yapc
atl03_signal_classATL03 signal classification-1:ignored, 0:likely_noise, 1:likely_signal, 2:signal_below, 3:signal_above, 4:primary_signal, 5:fitted_signalOptional: included when atl03_signal_class selects a subset of classifications; requires ATL03 release 007
atl24_classATL24 photon classification0:unclassified, 40:bathymetry, 41:sea surfaceOptional: must enable atl24
atl24_confidenceATL24 photon classification bathymetry confidence score0 to 1.0, higher is more confident (float)Optional: must enable atl24
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
regionATLAS granule region1-14
rgtReference Ground Track
gtBeam10: gt1l, 20: gt1r, 30: gt2l, 40: gt2r, 50: gt3l, 60: gt3rDependent on spacecraft orientation

1.1 Photon-input Parameters

The photon-input parameters allow the user to select an area, a time range, or a specific ATL03 granule to use for input to the photon-selection algorithm. If multiple parameters are specified, the result will be those photons that match all of the parameters.

1.2 Photon-selection Parameters

Once the ATL03 input data are are selected, a set of photon-selection photon parameters are used to select from among the available photons. At this stage, additional photon-classification algorithms (ATL08, YAPC) may be selected beyond what is available in the ATL03 files. The criterial described by these parameters are applied together, so that only photons that fulfill all of the requirements are returned.

1.2.1 Native ATL03 Photon Classification

ATL03 contains a set of photon classification values, that are designed to identify signal photons for different surface types with specified confidence:

1.2.2 YAPC Classification

The experimental YAPC (Yet Another Photon Classifier) photon-classification scheme assigns each photon a score based on the number of adjacent photons. YAPC parameters are provided as a dictionary, with entries described below:

To run the YAPC algorithm, specify the YAPC settings as a sub-dictionary. Here is an example set of parameters that runs YAPC:

parms = {
    "cnf": 0,
    "yapc": { "score": 0, "version": 3, "knn": 4 },
    "ats": 10.0,
    "cnt": 5,
    "len": 20.0,
    "res": 20.0
}

1.2.3 ATL08 Classification

If ATL08 classification parameters are specified, the ATL08 (vegetation height) files corresponding to the ATL03 files are queried for the more advanced classification scheme available in those files. Photons are then selected based on the classification values specified. Note that srt=0 (land) and cnf=0 (no native filtering) should be specified to allow all ATL08 photons to be used.

1.2.4 ATL24 Classification

If ATL24 classification parameters are specified, the ATL24 (bathymetry) files corresponding to the ATL03 files are queried for the more advanced classification scheme available in those files. Photons are then selected based on the classification values specified. Note that srt=-1 (dynamic) and cnf=-1 (no native filtering) should be specified to allow all ATL24 photons to be used.

1.2.5 ATL03 Signal Classification

Starting with release 007, ATL03 granules include an experimental per-photon signal classification (signal_class_ph) derived from the weight_ph photon weights; photons with the highest weights (the highest reflectors) are labelled as the primary signal, and the fitted photons are the subset of the primary signal most likely to represent a surface return. The atl03_signal_class parameter defaults to every classification, which selects every photon without reading signal_class_ph; when a subset of classifications is specified, only photons with those classifications are selected and the classification of each selected photon is included in the response.

This selection is only supported by the atl03x endpoint and requires ATL03 release 007 or later granules; requests against earlier releases are rejected with an error. Because the selection happens before any of the processing algorithms run, it can be combined with fit to produce elevations fit to only the selected photons (for example, a fit to the highest reflecting surface using [“primary_signal”, “fitted_signal”]).

1.3 Photon-extent Parameters

Selected photons are divided and aggregated using along-track samples (“extents”) with user-specified length. These extends may or may not align with the original 20-m segments of ATL03 photons. The len parameter specifies the length of each extent, and the _res_parameter specifies the distance between subsequent extent centers. If res is less than len, subsequent segments will contain duplicate photons. The API may also select photons based on their along-track distance, or based on the segment-id parameters in the ATL03 product (see the dist_in_seg parameter).

Extents are optionally filtered based on the number of photons in each extent and the distribution of those photons. If the pass_invalid parameter is set to False, only those extents fulfilling these criteria will be returned.

1.4 Ancillary Data

The ancillary field parameters allow the user to request additional fields from the source datasets being subsetted. Ancillary data returned from the atl03x (as well as theatl03s and atl03sp) APIs are per-photon values that are read from the ATL03 granules. No processing is performed on the data read out of the ATL03 granule. The fields must come from either a per-photon variable (atl03_ph_fields), a per-segment variable (atl03_geo_fields, atl03_corr_fields), or a rate variable (atl03_bckgrd_fields).

Ancillary fields are used to specify additional fields in the ATL03, ATL08, and ATL09 granules to be returned with the photon extent and dowstream customized products. Each field provided by the user will result in a corresponding column added to the returned GeoDataFrame. Note: if a field is requested that is already present in the default GeoDataFrame, then the name of both fields will be changed to include a _x suffix for the default incusion of the field, and a _y for the ancillary inclusion of the field. In general, they should have the same value, but in some cases the ancillary field goes through different processing steps and may possibly contain a different value.

For example:

parms = {
    "atl03_geo_fields":     ["solar_elevation"],
    "atl03_ph_fields":      ["pce_mframe_cnt"],
    "atl08_fields":         ["asr"]
}

1.5 ATL06-SR Algorithm

The ATL06-SR algorithm fits a line segment to the photons in each extent, using an iterative selection refinement to eliminate noise photons not correctly identified by the photon classification. The results are then checked against three parameters : sigma_r_max, which eliminates segments for which the robust dispersion of the residuals is too large, and the ats and cnt parameters described above, which eliminate segments for which the iterative fitting has eliminated too many photons. The algorithm is run by supplying the fit parameter in the processing request, but can also be run via the legacy atl06 and atl06p endpoints.

This algorithm replaces the columns of the source DataFrame with the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
latitudeFitted latitude of the segment, EPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
longitudeFitted longitude of the segment, EPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
x_atcFitted along track distancemeters (double)
y_atcFitted across track distancemeters (float)
photon_startATL03 index (per beam) of the first photon in the segment
photon_countNumber of ATL03 photons in the segment
pflagsProcessing flagssee ICESat-2 Processing Flags
h_meanFitted elevation of the segmentmeters (float)vertical datum controlled by parameters, default is ITRF2014
dh_fit_dxFitted slope of the segment
window_heightHeight of window used in final fitmeters
rms_misfit
h_sigma
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
regionATLAS granule region1-14
rgtReference Ground Track
gtBeam‘gt1l’, ‘gt1r’, ‘gt2l’, ‘gt2r’, ‘gt3l’, ‘gt3r’Dependent on spacecraft orientation

Using the Python client, this service is called via:

parms = {
  "fit": {}
}
sliderule.run('atl03x', parms)

1.5.1 ATL06-SR Parameters

The ATL06-SR parameters are supplied in user requests under the fit key and include:

1.5.2 ATL06-SR Ancillary Data

Ancillary data returned from the fit algorithm (as well as atl06 and atl06p APIs) come from the ancillary fields specified for ATL03, but instead of being returned as-is, they are processed using the ATL06 least-squares-fit algorithm, and only the result is returned. In other words, ancillary data points from ATL03 to be included in an ATL06-SR result are treated just like the h_mean, latitude, and longitude variables, and returned as a fitted double-precision floating point value.

1.6 PhoREAL Algorithm

The PhoREAL algorithm is a modified version of the ATL08 canopy metrics algorithm developed at the University of Texas at Austin that calculates canopy metrics on a segment of ATL03 photons. The algorithm is run by supplying the phoreal parameter in the atl03x request, but can also be accessed via the legacy endpoints atl08 and atl08p.

This algorithm replaces the columns of the source DataFrame with the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
latitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
longitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
x_atcAlong track distancemeters (double)dist_ph_along + segment_distance
y_atcAcross track distancemeters (float)dist_ph_across
photon_startATL03 index (per beam) of the first photon in the segment
photon_countNumber of ATL03 photons in the segment
pflagsProcessing flagssee ICESat-2 Processing Flags
ground_photon_countNumber of photons classified as ground in the segment
vegetation_photon_countNumber of photons classified as canopy or top of canopy in the segment
landcoverATL08 land cover flags
snowcoverATL08 snow cover flags
solar_elevationSun elevation as provided in ATL03degrees (float)
h_te_medianMedian ellipsoidal height of the ground photonsmeters (float)vertical datum controlled by parameters, default is ITRF2014
h_max_canopyMaximum relief height for canopy photonsmeters (float)
h_min_canopyMinimum relief height for canopy photonsmeters (float)
h_mean_canopyMean relief height for canopy photonsmeters (float)
h_canopy98th percentile relief height for canopy photonsmeters (float)
canopy_opennessStandard deviation of relief height for canopy photons
canopy_h_metricsrelief height at given percentile for canopy photonsmeters (float)5th to 95th percentile provided, in increments of 5%, 20 percentiles total
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
regionATLAS granule region1-14
rgtReference Ground Track
gtBeam‘gt1l’, ‘gt1r’, ‘gt2l’, ‘gt2r’, ‘gt3l’, ‘gt3r’Dependent on spacecraft orientation

Using the Python client, this service is called via:

parms = {
  "phoreal": {}
}
sliderule.run('atl03x', parms)

1.6.1 PhoREAL Parameters

The PhoREAL parameters are supplied in user requests under the phoreal key and include:

1.6.2 ATL08-PhoREAL Ancillary Data

Ancillary data returned from the atl08 and atl08p APIs come from the land_segments group of the ATL08 granules. The data goes through a series of processing steps before being returned back to the user as per-extent (i.e. variable-length segment) result values.

2. ATL06 - atl06x

The SlideRule atl06x endpoint provides a service for ATL06 subsetting and custom processing. This endpoint queries ATL06 input granules for segment heights and locations based on geographic and temporal ranges. The resulting extents are typically directly returned to the client, but may be passed to downstream algorithms and custom processing steps like raster sampling.

Using the Python client, this service is called via:

sliderule.run('atl06x', parms)

The default resulting DataFrame from this endpoint contains the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
latitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
longitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
x_atcAlong track distancemeters (double)land_ice_segments/ground_track/x_atc
y_atcAcross track distancemeters (float)land_ice_segments/ground_track/y_atc
h_liMedian-based height of segmentmeters (float)land_ice_segments/h_li
h_li_sigmaPropagated error due to sampling error and FPB correctionmeters (float)land_ice_segments/h_li_sigma
sigma_geo_hTotal vertical geolocation error due to PPD and PODmeters (float)land_ice_segments/sigma_geo_h
atl06_quality_summaryBest-quality subset of all ATL06 data0: no data-quality tests have found a problem with the segment, 1: some potential problem has been foundland_ice_segments/atl06_quality_summary
segment_idSegment ID for the second of the two 20m ATL03 segments included in the 40m ATL06 segmentcountland_ice_segments/segment_id
seg_azimuthAzimuth of the pair-track, east of local northdegrees (float)land_ice_segments/ground_track/seg_azimuth
dh_fit_dxAlong-track slope from along-track segment fitmeters (float)land_ice_segments/fit_statistics/dh_fit_dx
h_robust_sprdRDE of misfit between PE heights and the along-track segment fitmeters (float)land_ice_segments/fit_statistics/h_robust_sprd
w_surface_window_finalWidth of the surface window, top to bottommeters (float)land_ice_segments/fit_statistics/w_surface_window_final
bsnow_confConfidence flag for presence of blowing snowbooleanland_ice_segments/geophysical/bsnow_conf
bsnow_hBlowing snow layer top heightmeters (float)land_ice_segments/geophysical/bsnow_h
r_effEffective reflectance, uncorrected for atmospheric effects.(float)land_ice_segments/geophysical/r_eff
tide_oceanOcean tidesmeters (float)land_ice_segments/geophysical/tide_ocean
n_fit_photonsNumber of PEs used in determining h_licountland_ice_segments/fit_statistics/n_fit_photons
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
regionATLAS granule region1-14
rgtReference Ground Track
gtBeam‘gt1l’, ‘gt1r’, ‘gt2l’, ‘gt2r’, ‘gt3l’, ‘gt3r’Dependent on spacecraft orientation

2.1 Ancillary Data

Ancillary data returned from the atl06x endpoint (as well as atl06 and atl06p endpoints) come from the land_ice_segments group of the ATL06 granules. The data is mostly returned as-is, with one exception. Double-precision and single-precision floating point variables are checked to see if they contain the maximum value of their respective encodings, and if so, a floating point NaN (not-a-number) is returned instead. This check is not performed for integer variables because the maximum value of an encoded integer can sometimes be a valid value (e.g. bit masks).

For example,

parms = {
    "atl06_fields": ["ground_track/ref_azimuth"],
}
gdf = sliderule.run("atl06x", parms)

3. ATL08 - atl08x

The SlideRule atl08x endpoint provides a service for ATL08 subsetting and custom processing. This endpoint queries ATL08 input granules for segment vegetation statistics and locations based on geographic and temporal ranges. These statistics are typically directly returned to the client, but may be passed to downstream algorithms and custom processing steps like raster sampling.

Using the Python client, this service is called via:

sliderule.run('atl08x', parms)

The default resulting DataFrame from this endpoint contains the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
latitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
longitudeEPSG:7912degrees (double)replaced by geometry column when GeoDataFrame
x_atcAlong track distancemeters (double)land_ice_segments/ground_track/x_atc
y_atcAcross track distancemeters (float)land_ice_segments/ground_track/y_atc
segment_id_begFirst ATL03 segment used in ATL08 100m segmentcountland_segments/segment_id_beg
segment_landcoverUN-FAO Land Cover Surface type classification as reference from Copernicus Land Cover(ANC18) at the 100m resolutionland_segments/segment_landcover
segment_snowcoverDaily snow/ice cover from ATL09 at the 25 Hz rate(275m) indicating likely presence of snow and ice within each segment0: ice free water; 1: snow free land; 2: snow; 3: iceland_segments/segment_snowcover
n_seg_phNumber of photons within each land segmentcountland_segments/n_seg_ph
solar_elevationSolar elevation at time of measurementdegrees (float)land_segments/solar_elevation
terrain_slopeAlong-track slope of the terrainmeters (float)land_segments/terrain/terrain_slope
n_te_photonsNumber of terrain (ground) photonscountland_segments/terrain/n_te_photons
h_te_uncertaintyUncertainty of height of terrianmeters (float)land_segments/terrain/h_te_uncertainty
h_te_medianMedian height of the terrainmeters (float)land_segments/terrain/h_te_median
h_canopy98 percentile height of canopy photonsmeters (float)land_segments/canopy/h_canopy (or land_segments/canopy/h_canopy_abs if use_abs_h is true)
h_canopy_uncertaintyVertical uncertainty of canopy heightmeters (float)land_segments/canopy/h_canopy_uncertainty
segment_coverAverage percentage value of the valid Copernicus fractional cover productscalarland_segments/canopy/segment_cover
n_ca_photonsNumber of canopy photonsland_segments/canopy/n_ca_photons
h_max_canopyMaximum canopy heightmeters (float)land_segments/canopy/h_max_canopy (or land_segments/canopy/h_max_canopy_abs if use_abs_h is true)
h_min_canopyMinimum canopy heightmeters (float)land_segments/canopy/h_min_canopy (or land_segments/canopy/h_min_canopy_abs if use_abs_h is true)
h_mean_canopyMean canopy heightmeters (float)land_segments/canopy/h_mean_canopy (or land_segments/canopy/h_mean_canopy_abs if use_abs_h is true)
canopy_opennessStandard Deviation of all canopy photonsmeters (float)land_segments/canopy/canopy_openness
canopy_h_metricsCumulative distribution of relative canopy heights calculated at the following percentiles: 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95meters (float)land_segments/canopy/canopy_h_metrics (or land_segments/canopy/canopy_h_metrics_abs if use_abs_h is true)
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
regionATLAS granule region1-14
rgtReference Ground Track
gtBeam‘gt1l’, ‘gt1r’, ‘gt2l’, ‘gt2r’, ‘gt3l’, ‘gt3r’Dependent on spacecraft orientation

3.1 Quality Filter Parameters

The ATL08 data can be filtered based on different quality filters.

3.2 Ancillary Data

Ancillary data returned from the atl08x endpoint (as well as atl08 and atl08p endpoints) come from the {beam} group of the ATL08 granules.

For example,

parms = {
    "atl08_fields": ["asr"],
}
gdf = sliderule.run("atl08x", parms)

4. ATL13 - atl13x

The SlideRule atl13x endpoint provides a service for ATL13 subsetting and custom processing. This endpoint queries ATL13 input granules for segment inland lake statistics based on geographic and temporal ranges. These statistics are typically directly returned to the client, but may be passed to downstream algorithms and custom processing steps like raster sampling.

This endpoint is called via:

sliderule.run('atl13x', parms)

The default resulting DataFrame from this API contains the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
latitudesegment coordinate (replaced by geometry column when GeoDataFrame)degrees (double)EPSG:7912
longitudesegment coordinate (replaced by geometry column when GeoDataFrame)degrees (double)EPSG:7912
ht_orthoOrthometric height of the water surfacemeters (float)EGM08
ht_water_surfEllipsoidal height of the water surfacemeters (float)WGS84
stdev_water_surfDerived standard deviation of water surfacemeters (float)
water_depthDepth from the mean water surface to detected bottommeters (float)
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
rgtReference Ground Track
gtBeam‘gt1l’, ‘gt1r’, ‘gt2l’, ‘gt2r’, ‘gt3l’, ‘gt3r’Dependent on spacecraft orientation

4.1 Inland Lake Parameters

Inland lake data can be queried using the following parameters under the atl13 key:

4.2 Ancillary Data

Ancillary data returned from the atl13x endpoint comes from the {beam} group of the ATL13 granules.

For example,

parms = {
    "atl08_fields": ["ice_flag"],
}
gdf = sliderule.run("atl13x", parms)

5. ATL24 - atl24x

The SlideRule atl24x endpoint provides a service for ATL24 subsetting and custom processing. This endpoint queries ATL24 input granules for bathymetry data for ATL03 photons based on geographic and temporal ranges. ATL24 provides bathymetry labels and metrics which are typically directly returned to the client, but may be passed to downstream algorithms and custom processing steps like raster sampling.

This endpoint is called via:

sliderule.run('atl24x', parms)

The default resulting DataFrame from this API contains the following columns:

FieldDescriptionUnitsNotes
time_nsUnix Timenanosecondsindex column of DataFrame
lat_phEPSG:7912degrees (double)refraction corrected, replaced by geometry column when GeoDataFrame
lon_phEPSG:7912degrees (double)refraction corrected, replaced by geometry column when GeoDataFrame
x_atcAlong track distancemeters (double)not refraction corrected, dist_ph_along + segment_distance
y_atcAcross track distancemeters (float)not refraction corrected, dist_ph_across
ortho_hOrthometric height of photon (elevation above geoid)meters (float)EGM08
surface_hOrthometric height of calculated sea surfacemeters (float)EGM08
class_phPhoton classification0:unclassified, 40: bathymetry, 41:sea surface
confidenceBathymetry confidence0 to 1.0, higher is more confident (float)
ellipse_hElliptical height of photon (elevation above ellipse)meters (float)ITRF2014, Optional: compact set to false
invalid_kdKd was not able to be retrieved for time and location of photon0:valid, 1:invalidused in uncertainty calculation, Optional: compact set to false
invalid_wind_speedwind speed was not able to be retrieved for time and location of photon0:valid, 1:invalidused in uncertainty calculation, Optional: compact set to false
low_confidence_FlagBathymetry confidence is less than 0.60:high confidence, 1:low confidenceOptional: compact set to false
night_flagPhoton collected at night, solar elevation < 5 degrees0:day, 1:nightOptional: compact set to false
sensor_depth_exceededTurbidity of water and depth of photon indicate unlikely return0:valid, 1:exceededOptional: compact set to false
sigma_thuTotal horizontal uncertaintymeters (float)Optional: compact set to false
sigma_tvuTotal vertical uncertaintymeters (float)Optional: compact set to false
spotATLAS detector field of view1-6Independent of spacecraft orientation
cycleATLAS orbit cycle number
regionATLAS granule region1-14
rgtReference Ground Track
gtBeam‘gt1l’, ‘gt1r’, ‘gt2l’, ‘gt2r’, ‘gt3l’, ‘gt3r’Dependent on spacecraft orientation

5.1 Query Parameters

The following parameters are supported under the atl24 key for customizing the request to ATL24 and filtering which data is returned.

5.2 Ancillary Data

Ancillary data returned from the atl24x endpoint comes from the {beam} group of the ATL24 granules.

For example,

parms = {
    "anc_fields": ["index_ph"],
}
gdf = sliderule.run("atl24x", parms)

Appendix A: Legacy Endpoints

For legacy endpoints, each extent is uniquely identified by an extent ID. The extent ID is analogous to the ATL03 segment ID, and is consistently generated for any extent given the same input parameters. This means subsequent runs of SlideRule with the same request parameters will return the same extent IDs.

While all data returned from SlideRule for ATL03/06/08 endpoints include the extent ID (as extent_id), by default the Python client strips it out when it creates the final GeoDataFrame. There is an option to keep the extend ID by setting the “keep_id” argument in the atl03/06/08 group of Python functions to True. This is useful when performing merges on GeoDataFrames from multiple APIs (for example, you can combine results from atl06 and atl08 endpoints and created a single GeoDataFrame with both elevation and vegatation data in it).

Result times returned by SlideRule for legacy endpoints are in standard Unix nanoseconds, while times provided in the ICESat-2 standard data products are in seconds from the ATLAS Epoch. The server-side code performs this conversion for you. But if you are using ICESat-2 products direction in addition to SlideRule results, and need to convert between them, you must first convert the unix time to standard GPS time, and then you need to subtract the number of seconds between the GPS epoch which is January 6, 2018 at midnight (1980-01-06T00:00:00.000000Z) and the ATLAS SDP epoch of January 1, 2018 at midnight (2018-01-01T00:00:00.000000Z). That number is 1198800018 seconds.

A.1 Segmented Photon Data - atl03sp

The photon data is stored as along-track segments inside the ATL03 granules, which is then broken apart by SlideRule and re-segmented according to processing parameters supplied at the time of the request. The new segments are called extents. When the length of an extent is 40 meters, and the step size is 20 meters, the extent matches the ATL06 segments.

Most of the time, the photon extents are kept internal to SlideRule and not returned to the user. But there are some APIs that do return raw photon extents for the user to process on their own.

Even though this offloads processing on the server, the API calls can take longer since more data needs to be returned to the user, which can bottleneck over the network.

Photon extents are returned as GeoDataFrames where each row is a photon. Each extent represents the data that the ATL06 algorithm uses to generate a single ATL06 elevation. When the step size is shorter than the length of the extent, the extents returned overlap each other which means that each photon is being returned multiple times and will be duplicated in the resulting GeoDataFrame.

The GeoDataFrame for each photon extent has the following columns:

Note: when PhoREAL is enabled, the ATL03 extent records (atl03rec) are enhanced to include the following populated fields:

A.2 Elevations - atl06p

The primary result returned by SlideRule for ICESat-2 ATL06-SR processing requests is a set of geolocated elevations corresponding to a geolocated ATL03 along-track segment. The elevations are contained in a GeoDataFrame where each row represents a calculated elevation.

The elevation GeoDataFrame has the following columns:

A.3 Vegetation Metrics (PhoREAL) - atl08p

The primary result returned by SlideRule for ICESat-2 PhoREAL processing requests is a set of geolocated vegetation metrics corresponding to a geolocated ATL03 along-track segment. The metrics are contained in a GeoDataFrame where each row represents a segment.

The vegetation GeoDataFrame has the following columns:

A.4 Callbacks

For large processing requests, it is possible that the data returned from the API is too large or impractical to fit in the local memory of the Python interpreter making the request. In these cases, certain APIs in the SlideRule Python client allow the calling application to provide a callback function that is called for every result that is returned by the servers.

If a callback is supplied, the API will not return back to the calling application anything associated with the supplied record types, but assumes the callback fully handles processing the data.

The callback function takes the following form callback(record, session) and handles processing streamed records for a request. The record parameter is the passback variable that contains the streamed record. The session parameter is the passback variable holding the current SlideRule client session.

Here is an example of a callback being used for the atl03sp function:

rec_cnt = 0
ph_cnt = 1

def atl03rec_cb(rec, session):
    global rec_cnt, ph_cnt
    rec_cnt += 1
    ph_cnt += rec["count"][0] + rec["count"][1]
    print("{} {}".format(rec_cnt, ph_cnt), end='\r')

gdf = icesat2.atl03sp({}, callbacks = {"atl03rec": atl03rec_cb})