diff --git a/docs/background.md b/docs/background.md index cf67b6e..907d291 100644 --- a/docs/background.md +++ b/docs/background.md @@ -8,11 +8,11 @@ The **GrIML** processing package is for classifying water bodies from satellite The **GrIML** post-processing chain follows a linear workflow. Initial rasterised binary classifications denoting water bodies can be inputted to **convert**, **filter** and **merge** into a cohesive ice marginal lake vector dataset, populated with useful **metadata** and analysed with relevant **statistical information**. - + Each of these post-processing steps is contained within GrIML's modules, and called in turn to perform the entire processing chain. The `griml()` function invokes all post-processing steps. - + ## Project motivation diff --git a/docs/figures/iml_basic_plot.png b/docs/figures/iml_basic_plot.png new file mode 100644 index 0000000..652efc7 Binary files /dev/null and b/docs/figures/iml_basic_plot.png differ diff --git a/docs/figures/iml_pt_plot.png b/docs/figures/iml_pt_plot.png new file mode 100644 index 0000000..5d3d5a0 Binary files /dev/null and b/docs/figures/iml_pt_plot.png differ diff --git a/docs/figures/iml_time_series_plot.png b/docs/figures/iml_time_series_plot.png new file mode 100644 index 0000000..2df5fe7 Binary files /dev/null and b/docs/figures/iml_time_series_plot.png differ diff --git a/docs/tutorial-data.md b/docs/tutorial-data.md index 890c6cc..54c67d6 100644 --- a/docs/tutorial-data.md +++ b/docs/tutorial-data.md @@ -51,11 +51,189 @@ Each inventory in the inventory series contains the following metadata informati ## Getting started -Loading the dataset: Data available at [GEUS Dataverse](https://doi.org/10.22008/FK2/MBKW9N). +The dataset is available on the [GEUS Dataverse](https://doi.org/10.22008/FK2/MBKW9N), which can be downloaded and unzipped either using wget: -Quicklook plotting of the dataset +```bash +$ wget -r -e robots=off -nH --cut-dirs=3 --content-disposition "https://dataverse.geus.dk/api/datasets/:persistentId/dirindex?persistentId=doi:10.22008/FK2/MBKW9N" +$ unzip dataverse_files.zip +``` +Or with Python: +```python +import urllib +import zipfile + +# Define url and extraction directory +url = "https://dataverse.geus.dk/api/datasets/:persistentId/dirindex?persistentId=doi:10.22008/FK2/MBKW9N" +extract_dir = "dataverse_files" + +# Fetch zipped files +zip_path, _ = urllib.request.urlretrieve(url) + +# Unzip files to directory +with zipfile.ZipFile(zip_path, "r") as f: + f.extractall(extract_dir) +``` + +One of the inventories in the dataset series can be opened and plotted in Python using geopandas. In this example, let's take the 2023 inventory: + +```python +import geopandas as gpd +iml = gpd.read_file("dataverse_files/20230101-ESA-GRIML-IML-fv1.shp") +iml.plot(color="red") +``` + + + + +```{important} +Make sure that the file path is correct in order to load the dataset correctly +``` + +Plotting all shapes can be difficult to see without zooming around and exploring the plot. We can dissolve all common lakes and then plot the centroid points of these to get a better overview: + +```python +iml_d = iml.dissolve(by="lake_id") +iml_d["centroid"] = iml_d.geometry.centroid +iml_d["centroid"].plot(markersize=0.5) +``` + + + ## Generating statistics -Extracting statistics +We can extract basic statistics from an ice marginal lake inventory in the dataset series using simple querying. Let's take the 2022 inventory in this example and first determine the number of classified lakes, and then the number of unique lakes: + +```python +import geopandas as gpd + +# Load inventory +iml = gpd.read_file("dataverse_files/20220101-ESA-GRIML-IML-fv1.shp") + +# Dissolve by lake id to get all unique lakes as dissolved polygons +iml_d = iml.dissolve(by='lake_id') + +# Print counts +print("Total number of detected lakes: " + str(len(iml))) +print("Total number of unique lakes: " + str(len(iml_d))) +``` + +We can count the number of classifications from each method, where `SAR` denotes classifications from SAR backscatter classification, `VIS` denotes classifications from multi-spectral indices, and `DEM` denotes classifications using sink detection: + +```python +# Count lakes by classifications +print(iml['method'].value_counts()) +``` + +Let's say we would like to count the number of ice marginal lakes that share a margin with the Greenland Ice Sheet and broken down by region. We can do this by first extracting all lakes classified by a common margin with the ice sheet (`ICE_SHEET`) and then count all lakes per region: + +```python +# Filter to lakes with an ice sheet margin +iml_d_ice_sheet = iml_d[iml_d['margin'] == 'ICE_SHEET'] + +# Count lakes by region +print(iml_d_ice_sheet['region'].value_counts()) +``` + +We can also determine the average, minimum and maximum lake size per region: + +```python +# Calculate surface area of all unique lakes (dissolved) +iml_d['area_sqkm'] = iml_d.geometry.area/10**6 + +# Group lakes by region and determine average, min, max +print(iml_d.groupby(['region'])['area_sqkm'].mean()) +print(iml_d.groupby(['region'])['area_sqkm'].min()) +print(iml_d.groupby(['region'])['area_sqkm'].max()) +``` + +## Cross inventory comparison + +All inventories in the ice marginal lake inventory series can be treated as time-series to look at change in lake abundance and size over time. Let's take an example where we will generate a time-series of lake abundance change at the margins of Greenland's periphery ice caps and glaciers. First we load all inventories as a series of GeoDataFrames: + +```python +import glob +import numpy as np +import geopandas as gpd +import matplotlib.pyplot as plt + +# Define directory +in_dir = 'dataverse_files/*IML-fv1.shp' + +# Iterate through inventories +gdfs=[] +for f in list(sorted(glob.glob(in_dir))): + + # Load inventory and dissolve by unique identifications + gdf = gpd.read_file(f) + gdf = gdf.dissolve(by='lake_id') + gdf['area_sqkm'] = gdf.geometry.area/10**6 + + # Append to list + gdfs.append(gdf) +``` + +Then we count lakes with a shared ice cap/glacier margin from each inventory, splitting counts by region: + +```python +# Create empty lists for region counts +b=['NW', 'NO', 'NE', 'CE', 'SE', 'SW', 'CW'] +ic_nw=[] +ic_no=[] +ic_ne=[] +ic_ce=[] +ic_se=[] +ic_sw=[] +ic_cw=[] +ice_cap_abun = [ic_nw, ic_no, ic_ne, ic_ce, ic_se, ic_sw, ic_cw] + +# Iterate through geodataframes +for g in gdfs: + + # Filter by margin type + icecap = g[g['margin'] == 'ICE_CAP'] + + # Append regional lake counts + for i in range(len(b)): + ice_cap_abun[i].append(icecap['region'].value_counts()[b[i]]) +``` + +We can then plot all of our lake counts as a stacked bar plot: + +```python +# Define plotting attributes +years=list(range(2016,2024,1)) +col=['#045275', '#089099', '#7CCBA2', '#FCDE9C', '#F0746E', '#DC3977', '#7C1D6F'] +bottom=np.zeros(8) + +# Prime plotting area +fig, ax = plt.subplots(1, figsize=(10,5)) + +# Plot lake counts as stacked bar plots +for i in range(len(ice_cap_abun)): + p = ax.bar(years, ice_cap_abun[i], 0.5, color=col[i], label=b[i], bottom=bottom) + bottom += ice_cap_abun[i] + ax.bar_label(p, label_type='center', fontsize=8) + +# Add legend +ax.legend(bbox_to_anchor=(1.01,0.7)) + +# Change plotting aesthetics +ax.set_axisbelow(True) +ax.yaxis.grid(color='gray', linestyle='dashed', linewidth=0.5) +ax.set_facecolor("#f2f2f2") + +# Add title +props = dict(boxstyle='round', facecolor='#6CB0D6', alpha=0.3) +ax.text(0.01, 1.05, 'Periphery ice caps/glaciers lake abundance change', + fontsize=14, horizontalalignment='left', bbox=props, transform=ax.transAxes) + +# Add axis labels +ax.set_xlabel('Year', fontsize=14) +ax.set_ylabel('Lake abundance', fontsize=14) + +# Show plot +plt.show() +``` + diff --git a/docs/tutorials-data.md b/docs/tutorials-data.md deleted file mode 100644 index 890c6cc..0000000 --- a/docs/tutorials-data.md +++ /dev/null @@ -1,61 +0,0 @@ -# Dataset tutorials - -The GrIML package is used for the production of the Greenland ice marginal lake inventory series, which is freely available through the [GEUS Dataverse](https://doi.org/10.22008/FK2/MBKW9N). This dataset is a series of annual inventories, mapping the extent and presence of lakes across Greenland that share a margin with the Greenland Ice Sheet and/or the surrounding ice caps and periphery glaciers. - -Here, we will look at how to load and handle the dataset, and provide details on its contents. - -## Dataset contents - -This ice marginal lake dataset is a series of annual inventories, mapping the extent and presence of lakes across Greenland that share a margin with the Greenland Ice Sheet and/or the surrounding ice caps and periphery glaciers. The annual inventories provide a comprehensive record of all identified ice marginal lakes, which have been detected using three independent remote sensing techniques: - -- DEM sink detection using the ArcticDEM (mosaic version 3) -- SAR backscatter classification from Sentinel-1 imagery -- Multi-spectral indices classification from Sentinel-2 imagery - -All data were compiled and filtered in a semi-automated approach, using a modified version of the [MEaSUREs GIMP ice mask](https://nsidc.org/data/NSIDC-0714/versions/1) to clip the dataset to within 1 km of the ice margin. Each detected lake was then verified manually. The methodology is open-source and provided in the associated [Github repository](https://github.com/GEUS-Glaciology-and-Climate/GrIML) for full reproducibility. - -The inventory series was created to better understand the impact of ice marginal lake change on the future sea level budget and the terrestrial and marine landscapes of Greenland, such as its ecosystems and human activities. The dataset is a complete inventory series of Greenland, with no absent data. - -### Data format - -The detected lakes are presented as polygon vector features in shapefile format (.shp), with coordinates provided in the WGS NSIDC Sea Ice Polar Stereographic North (EPSG:3413) projected coordinate system. - -### Metadata - -Each inventory in the inventory series contains the following metadata information: - -| Variable name | Description | Format | -|---------------------|---------------------|---------| -| `row_id` | Index identifying number for each polygon | Integer | -| `lake_id` | Identifying number for each unique lake | Integer | -| `lake_name`| Lake placename, as defined by the [Oqaasileriffik (Language Secretariat of Greenland)](https://oqaasileriffik.gl) placename database which is distributed with [QGreenland](https://qgreenland.org/) | String | -| `margin` | Type of margin that the lake is adjacent to (`ICE_SHEET`, `ICE_CAP`) | String | -| `region` | Region that lake is located, as defined by Mouginot and Rignot (2019) (`NW`, `NO`, `NE`, `CE`, `SE`, `SW`, `CW`) | String | -| `area_sqkm` | Areal extent of polygon/s in square kilometres | Float | -| `length_km` | Length of polygon/s in kilometres | Float | -| `temp_aver` | Average lake surface temperature estimate (in degrees Celsius), derived from the Landsat 8/9 OLI/TIRS Collection 2 Level 2 surface temperature data product | Float | -| `temp_min` | Minimum pixel lake surface temperature estimate (in degrees Celsius), derived from the Landsat 8/9 OLI/TIRS Collection 2 Level 2 surface temperature data product | Float | -| `temp_max` | Maximum pixel lake surface temperature estimate (in degrees Celsius), derived from the Landsat 8/9 OLI/TIRS Collection 2 Level 2 surface temperature data product | Float | -| `temp_stdev` | Average lake surface temperature estimate standard deviation, derived from the Landsat 8/9 OLI/TIRS Collection 2 Level 2 surface temperature data product | Float | -| `method` | Method of classification (`DEM`, `SAR`, `VIS`) | String | -| `source` | Image source of classification (`ARCTICDEM`, `S1`, `S2`) | String | -| `all_src` | List of all sources that successfully classified the lake (i.e. all classifications with the same `lake_name` value) | String | -| `num_src` | Number of sources that successfully classified the lake (`1`, `2`, `3`) | String | -| `certainty` | Certainty of classification, which is calculated from `all_src` as a score between `0` and `1` | Float | - | -| `start_date` | Start date for classification image filtering | String | -| `end_date` | End date for classification image filtering | String | -| `verified` | Flag to denote if the lake has been manually verified (`Yes`, `No`) | String | -| `verif_by` | Author of verification | String | -| `edited` | Flag to denote if polygon has been manually edited (`Yes`, `No`) | String | -| `edited_by` | Author of manual editing | String | - -## Getting started - -Loading the dataset: Data available at [GEUS Dataverse](https://doi.org/10.22008/FK2/MBKW9N). - -Quicklook plotting of the dataset - - -## Generating statistics - -Extracting statistics diff --git a/docs/tutorials-processing.md b/docs/tutorials-processing.md index 6d3f705..4dc586d 100644 --- a/docs/tutorials-processing.md +++ b/docs/tutorials-processing.md @@ -33,11 +33,10 @@ start='20170701' end='20170831' ``` -Next we need to define the location of our raster file. A test raster file is provided with GrIML, which can be located using the `os` module. +Next we need to define the location of our raster file. A test raster file is provided with GrIML, which can be located using the top level test directory in the repository. ```python -import os -infile = os.path.join(os.path.dirname(griml.__file__),'test/test_north_greenland.tif') +infile = 'test/test_north_greenland.tif' ``` And then the file can be converted from raster to vector classifications using the `convert` function and the input variables. @@ -73,9 +72,8 @@ GrIML is provided with a test vector file for filtering, and a test ice mask whi ```python # Define input files -import os -infile1 = os.path.join(os.path.dirname(griml.__file__),'test/test_filter.shp') -infile2 = os.path.join(os.path.dirname(griml.__file__),'test/test_icemask.shp') +infile1 = 'test/test_filter.shp' +infile2 = 'test/test_icemask.shp' # Define output directory to write filtered vectors to outdir = "PATH/TO/OUTPUT_DIRECTORY" @@ -110,9 +108,8 @@ filter_vectors(all_infiles, infile2, outdir) When covering large areas, the classifications are usually split into different files. At this stage, we will merge all files together, to form a complete inventory of ice marginal lake classifications. Test files are provided with GrIML to perform this. ```python -import os -infile1 = os.path.join(os.path.dirname(griml.__file__),'test/test_merge_1.shp') -infile2 = os.path.join(os.path.dirname(griml.__file__),'test/test_merge_2.shp') +infile1 = 'test/test_merge_1.shp' +infile2 = 'test/test_merge_2.shp' ``` The `merge_vectors` function is used to merge all valid vectors within a list of files. In this case, we will merge all vectors from the two files defined previously. @@ -149,16 +146,14 @@ Metadata can be added to the inventory with GrIML's `metadata` module. This incl Input files are needed for assigning a placename and a region to each lake. The placename file is a point vector file containing all placenames for a region. We use the placename database from [Oqaasileriffik](https://oqaasileriffik.gl/en/), the Language Secretariat of Greenland, for which there is an example data subset provided with GrIML. The region file is a polygon vector file containing all regions and their names. We use the Greenland Ice Sheet drainage basin regions as defined by [Mouginot and Rignot, (2019)](https://doi.org/10.7280/D1WT11), a dataset which is provided with GrIML. ```python -import os - # Input test inventory for adding metadata to -infile1 = os.path.join(os.path.dirname(griml.__file__),'test/test_merge_2.shp') +infile1 = 'test/test_merge_2.shp' # Placenames file -infile2 = os.path.join(os.path.dirname(griml.__file__),'test/test_placenames.shp') +infile2 = 'test/test_placenames.shp' # Regions file -infile3 = os.path.join(os.path.dirname(griml.__file__),'test/greenland_basins_polarstereo.shp') +infile3 = 'test/greenland_basins_polarstereo.shp' ``` All metadata can be added with the `add_metadata` function. diff --git a/paper/paper.bib b/paper/paper.bib index 50afae0..3538b7b 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -34,12 +34,10 @@ @article{wilkinson_fair_2016 issn = {2052-4463}, url = {https://www.nature.com/articles/sdata201618}, doi = {10.1038/sdata.2016.18}, - abstract = {There is an urgent need to improve the infrastructure supporting the reuse of scholarly data. A diverse set of stakeholders—representing academia, industry, funding agencies, and scholarly publishers—have come together to design and jointly endorse a concise and measureable set of principles that we refer to as the FAIR Data Principles. The intent is that these may act as a guideline for those wishing to enhance the reusability of their data holdings. Distinct from peer initiatives that focus on the human scholar, the FAIR Principles put specific emphasis on enhancing the ability of machines to automatically find and use the data, in addition to supporting its reuse by individuals. This Comment is the first formal publication of the FAIR Principles, and includes the rationale behind them, and some exemplar implementations in the community.}, language = {en}, number = {1}, urldate = {2024-05-17}, journal = {Scientific Data}, - author = {Wilkinson, Mark D. and Dumontier, Michel and Aalbersberg, IJsbrand Jan and Appleton, Gabrielle and Axton, Myles and Baak, Arie and Blomberg, Niklas and Boiten, Jan-Willem and da Silva Santos, Luiz Bonino and Bourne, Philip E. and Bouwman, Jildau and Brookes, Anthony J. and Clark, Tim and Crosas, Mercè and Dillo, Ingrid and Dumon, Olivier and Edmunds, Scott and Evelo, Chris T. and Finkers, Richard and Gonzalez-Beltran, Alejandra and Gray, Alasdair J. G. and Groth, Paul and Goble, Carole and Grethe, Jeffrey S. and Heringa, Jaap and ’t Hoen, Peter A. C. and Hooft, Rob and Kuhn, Tobias and Kok, Ruben and Kok, Joost and Lusher, Scott J. and Martone, Maryann E. and Mons, Albert and Packer, Abel L. and Persson, Bengt and Rocca-Serra, Philippe and Roos, Marco and van Schaik, Rene and Sansone, Susanna-Assunta and Schultes, Erik and Sengstag, Thierry and Slater, Ted and Strawn, George and Swertz, Morris A. and Thompson, Mark and van der Lei, Johan and van Mulligen, Erik and Velterop, Jan and Waagmeester, Andra and Wittenburg, Peter and Wolstencroft, Katherine and Zhao, Jun and Mons, Barend}, month = mar, year = {2016}, note = {Publisher: Nature Publishing Group}, @@ -54,7 +52,6 @@ @article{how_greenland-wide_2021 issn = {2045-2322}, url = {https://www.nature.com/articles/s41598-021-83509-1}, doi = {10.1038/s41598-021-83509-1}, - abstract = {Ice marginal lakes are a dynamic component of terrestrial meltwater storage at the margin of the Greenland Ice Sheet. Despite their significance to the sea level budget, local flood hazards and bigeochemical fluxes, there is a lack of Greenland-wide research into ice marginal lakes. Here, a detailed multi-sensor inventory of Greenland’s ice marginal lakes is presented based on three well-established detection methods to form a unified remote sensing approach. The inventory consists of 3347 (\$\${\textbackslash}pm 8\$\$\%) ice marginal lakes (\$\${\textgreater}0.05{\textbackslash},\{\{{\textbackslash}text\{ km \}\}{\textasciicircum}\{2\}\}\$\$) detected for the year 2017. The greatest proportion of lakes lie around Greenland’s ice caps and mountain glaciers, and the southwest margin of the ice sheet. Through comparison to previous studies, a \$\${\textbackslash}sim 75\$\$\% increase in lake frequency is evident over the west margin of the ice sheet since 1985. This suggests it is becoming increasingly important to include ice marginal lakes in future sea level projections, where these lakes will form a dynamic storage of meltwater that can influence outlet glacier dynamics. Comparison to existing global glacial lake inventories demonstrate that up to 56\% of ice marginal lakes could be unaccounted for in global estimates of ice marginal lake change, likely due to the reliance on a single lake detection method.}, language = {en}, number = {1}, urldate = {2024-05-17}, @@ -74,7 +71,6 @@ @article{shugar_rapid_2020 issn = {1758-6798}, url = {https://www.nature.com/articles/s41558-020-0855-4}, doi = {10.1038/s41558-020-0855-4}, - abstract = {Glacial lakes are rapidly growing in response to climate change and glacier retreat. The role of these lakes as terrestrial storage for glacial meltwater is currently unknown and not accounted for in global sea level assessments. Here, we map glacier lakes around the world using 254,795 satellite images and use scaling relations to estimate that global glacier lake volume increased by around 48\%, to 156.5 km3, between 1990 and 2018. This methodology provides a near-global database and analysis of glacial lake extent, volume and change. Over the study period, lake numbers and total area increased by 53 and 51\%, respectively. Median lake size has increased 3\%; however, the 95th percentile has increased by around 9\%. Currently, glacial lakes hold about 0.43 mm of sea level equivalent. As glaciers continue to retreat and feed glacial lakes, the implications for glacial lake outburst floods and water resources are of considerable societal and ecological importance.}, language = {en}, number = {10}, urldate = {2024-05-17}, @@ -87,16 +83,6 @@ @article{shugar_rapid_2020 pages = {939--945}, } -@software{wehrle_earthspy_2023, - title = {earthspy}, - url = {https://github.com/AdrienWehrle/earthspy}, - language = {English}, - number = {v0.3.0}, - journal = {The Cryosphere}, - author = {Wehrle, A.}, - year = {2023}, -} - @software{kelsey_geopandas_2020, author = {Kelsey Jordahl and Joris Van den Bossche and Martin Fleischmann and Jacob Wasserman and James McBride and Jeffrey Gerard and Jeff Tratner and Matthew Perry and Adrian Garcia Badaracco and Carson Farmer and Geir Arne Hjelle and Alan D. Snow and Micah Cochran and Sean Gillies and Lucas Culbertson and Matt Bartos and Nick Eubank and maxalbert and Aleksey Bilogur and Sergio Rey and Christopher Ren and Dani Arribas-Bel and Leah Wasser and Levi John Wolf and Martin Journois and Joshua Wilson and Adam Greenhall and Chris Holdgraf and Filipe and François Leblanc}, title = {geopandas/geopandas: v0.8.1}, @@ -122,7 +108,6 @@ @article{rick_dam_2022 issn = {1994-0416}, url = {https://tc.copernicus.org/articles/16/297/2022/}, doi = {10.5194/tc-16-297-2022}, - abstract = {Ice-marginal lakes impact glacier mass balance, water resources, and ecosystem dynamics and can produce catastrophic glacial lake outburst floods (GLOFs) via sudden drainage. Multitemporal inventories of ice-marginal lakes are a critical first step in understanding the drivers of historic change, predicting future lake evolution, and assessing GLOF hazards. Here, we use Landsat-era satellite imagery and supervised classification to semi-automatically delineate lake outlines for four ∼5-year time periods between 1984 and 2019 in Alaska and northwest Canada. Overall, ice-marginal lakes in the region have grown in total number (+183 lakes, 38 \% increase) and area (+483 km2, 59 \% increase) between the time periods of 1984–1988 and 2016–2019. However, changes in lake numbers and area were notably unsteady and nonuniform. We demonstrate that lake area changes are connected to dam type (moraine, bedrock, ice, or supraglacial) and topological position (proglacial, detached, unconnected, ice, or supraglacial), with important differences in lake behavior between the sub-groups. In strong contrast to all other dam types, ice-dammed lakes decreased in number (six fewer, 9 \% decrease) and area (−51 km2, 40 \% decrease), while moraine-dammed lakes increased (56 more, 26 \% and +479 km2, 87 \% increase for number and area, respectively) at a faster rate than the average when considering all dam types together. Proglacial lakes experienced the largest area changes and rate of change out of any lake position throughout the period of study and moraine-dammed lakes which experienced the largest increases are associated with clean-ice glaciers (\<19 \% debris cover). By tracking individual lakes through time and categorizing lakes by dam type, subregion, and topological position, we are able to parse trends that would otherwise be aliased if these characteristics were not considered. This work highlights the importance of such lake characterization when performing ice-marginal lake inventories and provides insight into the physical processes driving recent ice-marginal lake evolution.}, language = {English}, number = {1}, urldate = {2024-05-17}, @@ -133,3 +118,35 @@ @article{rick_dam_2022 note = {Publisher: Copernicus GmbH}, pages = {297--314}, } + +@software{sentinelhub_2024, + title = {Sentinel Hub}, + url = {https://www.sentinel-hub.com}, + language = {English}, + number = {v1.0.0}, + journal = {Sinergise Solutions d.o.o., a Planet Labs company}, + author = {Sentinel Hub}, + year = {2024}, +} + +@article{gorelick_2017, +title = {Google Earth Engine: Planetary-scale geospatial analysis for everyone}, +journal = {Remote Sensing of Environment}, +volume = {202}, +pages = {18-27}, +year = {2017}, +note = {Big Remotely Sensed Data: tools, applications and experiences}, +issn = {0034-4257}, +doi = {https://doi.org/10.1016/j.rse.2017.06.031}, +url = {https://www.sciencedirect.com/science/article/pii/S0034425717302900}, +author = {Noel Gorelick and Matt Hancher and Mike Dixon and Simon Ilyushchenko and David Thau and Rebecca Moore}, +keywords = {Cloud computing, Big data, Analysis, Platform, Data democratization, Earth Engine}, +} + +@article{how_inventory_prep, + title = {The Greenland Ice Marginal Lake Inventory Series from 2016 to 2023}, + journal = {In Preparation}, + author = {How, Penelope and Petersen, Dorthe and Karlsson, Nanna B. and Kjeldsen, K. K. and Raundrup, Katrine and Messerli, Alexandra and Rutishauser, Anja and Carrivick, Jonathan L. and Lea, James M. and Fausto, Robert S. and Ahlstrøm, Andreas P. and Andersen, Signe Bech.}, + year = {In Prep}, +} + diff --git a/paper/paper.md b/paper/paper.md index 19c69b4..c11bd7a 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -27,7 +27,7 @@ The `GrIML` Python package is for the post-processing of classified water bodies ![An overview of the GrIML Python package workflow \label{fig:workflow}](https://github.com/PennyHow/GrIML/blob/main/other/reporting/figures/griml_workflow_without_gee.png?raw=true) -This package is part of the [ESA GrIML project](https://eo4society.esa.int/projects/griml/) (Investigating Greenland's ice marginal lakes under a changing climate), whose aim is to map and monitor ice marginal lakes across Greenland through a series of annual ice marginal lake inventories (2016-2023). In 2017, 3347 ice marginal lakes were identified in Greenland along the ice margin [@how_greenland-wide_2021;@wiesmann_2017_2021]. Globally, these ice marginal lakes hold up to 0.43 mm of sea level equivalent, which could have a marked impact on future predictions [@shugar_rapid_2020;@carrivick_ice-marginal_2022]. Therefore, they need to be monitored to understand how changes in ice marginal lake water storage affect melt contribution, and how their dynamics evolve under a changing climate. The GrIML workflow was used to make the 2016-2023 inventory series, and will continue to be used to generate inventories in the future. +This package is part of the [ESA GrIML project](https://eo4society.esa.int/projects/griml/) (Investigating Greenland's ice marginal lakes under a changing climate), whose aim is to map and monitor ice marginal lakes across Greenland through a series of annual ice marginal lake inventories (2016-2023). In 2017, 3347 ice marginal lakes were identified in Greenland along the ice margin [@how_greenland-wide_2021;@wiesmann_2017_2021]. The new annual ice marginal lake inventory series builds upon this, identifying 4543 lakes since 2016, with an average lake size of 1.29 sq km [@how_inventory_prep]. Globally, these ice marginal lakes hold up to 0.43 mm of sea level equivalent, which could have a marked impact on future predictions [@shugar_rapid_2020;@carrivick_ice-marginal_2022]. Therefore, they need to be monitored to understand how changes in ice marginal lake water storage affect melt contribution, and how their dynamics evolve under a changing climate. The GrIML workflow was used to make the 2016-2023 inventory series, and will continue to be used to generate inventories in the future. # Statement of need @@ -37,9 +37,9 @@ This package is part of the [ESA GrIML project](https://eo4society.esa.int/proje 1. Provide a usable workflow for post-processing of rasterised water body classifications 2. Document the criteria for classifying an ice marginal lake 3. Showcase a transparent workflow that, in turn, produces an open and reproducible ice marginal lake dataset that adheres to the FAIR principles [@wilkinson_fair_2016] -4. Produce inventories that map the areal extent and frequency of ice marginal lakes across Greenland, which demonstrate ice marginal lake evolution under a changing cliamte +4. Produce inventories that map the areal extent and abundance of ice marginal lakes across Greenland, which demonstrate ice marginal lake evolution under a changing climate -There have been many different approaches to classifying ice marginal lakes with remote sensing techniques [@shugar_rapid_2020;@rick_dam_2022]. Packages exist for handling satellite and spatial data, such as GrIML's two key dependencies, Geopandas [@kelsey_geopandas_2020] and Rasterio [@gillies_rasterio_2019], as well as others (e.g. SentinelHub, Google Earth Engine). Remote sensing object classification and post-processing routines are usually available in connection with scientific publications, however, few are available as open, deployable packages. The GrIML post-processing Python package addresses this gap, for the benefit of the future generation of ice marginal lake inventories and for others in the scientific community to adapt and use themselves. +There have been many different approaches to classifying ice marginal lakes with remote sensing techniques [@shugar_rapid_2020;@rick_dam_2022]. Packages exist for handling satellite and spatial data, such as GrIML's two key dependencies, Geopandas [@kelsey_geopandas_2020] and Rasterio [@gillies_rasterio_2019], as well as others such as SentinelHub [@sentinelhub_2024] and Google Earth Engine [@gorelick_2017]. Remote sensing object classification and post-processing routines are usually available in connection with scientific publications, however, few are available as open, deployable packages. The GrIML post-processing Python package addresses this gap, for the benefit of the future generation of ice marginal lake inventories and for others in the scientific community to adapt and use themselves. # Usage @@ -53,7 +53,7 @@ There have been many different approaches to classifying ice marginal lakes with # Acknowledgements -This work is funded by the ESA Living Planet Fellowship (4000136382/21/I-DT-lr) entitled 'Examining Greenland's Ice Marginal Lakes under a Changing Climate'. Further support was provided by PROMICE (Programme for Monitoring of the Greenland Ice Sheet), which is funded by the Geological Survey of Denmark and Greenland (GEUS) and the Danish Ministry of Climate, Energy and Utilities under the Danish Cooperation for Environment in the Arctic (DANCEA), conducted in collaboration with DTU Space (Technical University of Denmark) and Asiaq Greenland Survey. +This work is funded by the ESA Living Planet Fellowship (4000136382/21/I-DT-lr) entitled 'Examining Greenland's Ice Marginal Lakes under a Changing Climate'. Further support was provided by [PROMICE (Programme for Monitoring of the Greenland Ice Sheet)](https://promice.org), which is funded by the Geological Survey of Denmark and Greenland (GEUS) and the Danish Ministry of Climate, Energy and Utilities under the Danish Cooperation for Environment in the Arctic (DANCEA), conducted in collaboration with DTU Space (Technical University of Denmark) and Asiaq Greenland Survey. # References