Changelog
Unreleased¶
New features¶
-
GEDI L2A version 3 (released 2026).
granule,table,points,GEDI.Qualityandsearchwork with version 3 files:- the
qualitycolumn readsl2a_quality_flag_rel3, which replaces the version 2quality_flag; GEDI.Qualityreadsl2_algrunflagfor the selected-algorithm checks, because version 3 has algorithm setting groups 1, 2, 5 and 10 instead of 1–6;gedi_l2a_canopy_variables(g)takes the granule to pick the right quality flag.gedi_version,gedi_algorithmsandgedi_quality_pathdescribe the layout of a GEDI granule.
- the
Breaking¶
search(:GEDI, ...)returns GEDI version 3 granules by default; passversion = 2for version 2.gedi_l2a_canopy_variables()without a granule reads the version 3 quality flag; pass the granule (gedi_l2a_canopy_variables(g)) to match its version.
Fixed¶
search(:GEDI, ...; id = ...)found no version 3 granules, because CMR keeps the.h5extension in version 3 producer ids.points(g::GEDI_Granule; filtered = true)ignoredrx_algrunflag, and could keep shots whose selected algorithm it did not read.
v0.5.1¶
Fixed¶
- Rename the Makie extension file to
ext/SpaceAltimetryMakieExt.jlto match its[extensions]entry. In v0.5.0, loading SpaceAltimetry together with Makie failed withMissing source file for ... SpaceAltimetryMakieExt(#112).
v0.5.0¶
New features¶
- Composable operations on tables:
FilterandTransformtypes that can be chained lazily with|>(e.g.table(g) |> ICESat.Quality() |> InExtent(ext) |> DataFrame), so the required HDF5 columns are read in one pass. The eager formfilter(op, t)andmap(op, t)also works. - Generic operations:
ToEGM2008(geoid conversion) andInExtent(extent). -
Operations for a single mission live in exported mission modules (#107):
ICESat.Quality,ICESat.SaturationCorrectandICESat.TopexToWGS84ICESat2.Qualityfor ATL03, ATL06 and ATL08GEDI.Quality(the full L2A composite quality filter) andGEDI.Sensitivity([gt=0.9])- New
H5Tablesystem: generic, lazy HDF5-to-table reader that handles dimension flattening, nodata masking (missing), and transforms automatically. explore(granule)opens an interactive terminal browser for inspecting HDF5 contents and selecting variables.table(g; variables=)keyword allows reading custom variable sets instead of only the built-in defaults.table(g; tracks=)keyword for filtering specific beams/tracks.- Variables now support transforms:
ToDateTime,ToBool,InvertBool,SliceRow. - Attributes (track-level metadata like
strong_beam,detector_id) are now included as constant columns. - Pre-built alternative schemas:
atl08_canopy_variables(),gedi_l2a_canopy_variables(). - Documentation rewrite following the Diátaxis framework (tutorials, guides, topics, reference).
Breaking¶
- The package is renamed from SpaceLiDAR to SpaceAltimetry and has a new UUID (#105). Install it with
Pkg.add("SpaceAltimetry")and load it withusing SpaceAltimetry.SpaceLiDARis still exported as an alias of the module, so code that qualifies names asSpaceLiDAR.xxxkeeps working. table(granule)is now the recommended interface;points()remains available for compatibility (see migration guide).- Fill values are now
missinginstead ofNaN. - Removed deprecated
granule_from_file(usegranule) andgranules_from_folder(usegranules). - Removed deprecated
find(usesearch). - Removed deprecated
write_granule_urls!(usewrite_urls). - Removed the deprecated
bboxkeyword onsearch; useextentinstead. points/linesno longer accept aNamedTupleforbbox; pass anExtents.Extent(e.g.convert(Extent, (min_x=..., min_y=..., max_x=..., max_y=...))).
Changed¶
- Column types resolved at read time via transforms (e.g.,
delta_timebecomesDateTime). - All products now use the shared
H5Tableinfrastructure instead of per-product hardcoded readers. - CI dependency bumps (actions/checkout v7, codecov-action v7, julia-actions/setup-julia v3, julia-actions/cache v3).
v0.4.2¶
Fixed¶
- Fix
download!to create directories and normalize paths (#95). - Update Makie compat to 0.24 (#93).
- Bump CategoricalArrays compat to 1.
- CI dependency bumps (actions/checkout v6, stefanzweifel/git-auto-commit-action v7).
v0.4.1¶
Fixed¶
- Fix ICESat-2 search after data migration to EarthData Cloud.
v0.4.0¶
New features¶
- New types
TableandPartitionedTable, which support the Tables.jl interface. This prevents allocating code likereduce(vcat, DataFrame.(points(granule)))to get a DataFrame. You can now just callDataFrame(table). - Reduced allocations in retrieving point data.
- Introduced
beforeandafterkeywords insearch, to search by date(ranges). syncutility with aria2c for incremental folder updates.- Makie extension for plotting (
plot(granules)). search(granule, :OtherProduct)for cross-product granule lookup.idkeyword insearchfor fetching specific granules.
Fixed¶
- Empty (filtered) granules could result in
Vector{BitVector}columns, which have been changed toVector{Bool}. - GEDI search after migration to LPCLOUD.
Breaking¶
pointsnow return either aTableor aPartitionedTableinstead ofNamedTupleorVector{NamedTuple}. The old behaviour can be regained by callingparenton these tables.- Removed
number_of_returnsandreturn_numberfrom ICESat-2 ATL08 canopy output.
Deprecated¶
- Renamed
granule_from_filetogranule - Renamed
granules_from_filetogranules - Renamed
write_granule_urls!towrite_urls
Changed¶
- Most of the search functionality has been moved out to the more generic EarthData.jl.
- Updated ICESat-2 from version 5 to version 6.
v0.3.0¶
- GeoInterface, Extents support
- Bounding box using Extent subsetting on all
pointsfunctions findrenamed tosearchsearchnow takes theproductas aSymboland accepts as3::Boolparameter.- Stricter checking of arguments in
search - MultiPolygon extents of granules are now returned in the
polygonsfield in granules fromsearch. - Removed
bboxfield on granules. download(granule)now works on AWS S3 urlsdonwload(granule)now creates temporary files and renames after successful download- ICESat-2 ATL08 v5
pointsfunction now supports 20 m resolution by passinghighres::Boolparameter.
v0.2.2¶
- Fixed ICESat-2 download (please remove
n5eil01u.ecs.nsidc.orgfrom your.netrcfile) - Linked to Zenodo for DOI citations
v0.2.1¶
- Unified
boundsof granules - Fixed
getcoordforPointand addedPoint(x, y, z)constructor - Updated utils to make use of DataFrames with correct column names
v0.2.0¶
Warning
This is a breaking release
- Many of the column names have changed to be more descriptive.
- Documentation and docstring improvements.
- Tables support, you can now do
DataFrame(granule), without having to callpoints(granule). - Memory use improvements, by using SentinelArray of FillArray under the hood.
- Dropped S3, GeoArrays and LAS/LAZ support.
- Added GeoInterface support for lines/points and dropped GeoDataFrames
- Expanded test coverage.
v0.1.6¶
- Support for ICESat GLAH06 by alex-s-gardner
v0.1.5¶
- Support for ICESat-2 ATL06
- Update search to use v5 for ICESat-2 by default
v0.1.4¶
- Compatibility fixes
v0.1.3¶
- Added interpolation for GeoArrays
- Added FOSS4G notebook