diff --git a/paper/paper.bib b/paper/paper.bib index 76c887c8..91cd3391 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -1,11 +1,13 @@ @article{vos2019coastsat, - title={{CoastSat: A Google Earth Engine-enabled Python toolkit to extract shorelines from publicly available satellite imagery}}, + title={CoastSat: A Google Earth Engine-enabled Python toolkit to extract shorelines from publicly available satellite imagery}, author={Vos, K. and Splinter, K. D. and Harley, M. D. and Simmons, J. A. and Turner, I. L.}, journal={Environmental Modelling \& Software}, volume={122}, pages={104528}, year={2019}, + doi={10.1016/j.envsoft.2019.104528}, + url={https://doi.org/10.1016/j.envsoft.2019.104528}, publisher={Elsevier} } @@ -28,8 +30,8 @@ @article{pardopascual20121 volume = {123}, pages = {1-11}, year = {2012}, -doi = {https://doi.org/10.1016/j.rse.2012.02.024}, -url = {https://www.sciencedirect.com/science/article/pii/S0034425712001174}, +doi = {10.1016/j.rse.2012.02.024}, +url = {https://doi.org/10.1016/j.rse.2012.02.024}, author = {Josep E. Pardo-Pascual and Jaime Almonacid-Caballer and Luis A. Ruiz and Jesús Palomar-Vázquez} } @@ -51,6 +53,7 @@ @article{sayreEtAl2019 } } + @article{mclean202350, title={50 Years of Beach--Foredune Change on the Southeastern Coast of Australia: Bengello Beach, Moruya, NSW, 1972--2022}, author={McLean, R. and Thom, B. and Shen, J. and Oliver, T.}, @@ -58,16 +61,11 @@ @article{mclean202350 volume={439}, pages={108850}, year={2023}, + doi = {10.1016/j.geomorph.2023.108850}, + url = {https://doi.org/10.1016/j.geomorph.2023.108850}, publisher={Elsevier} } -@misc{CoastSeg, - title={{CoastSat v2.4}}, - author={Fitzpatrick, S. and Buscombe,D. and Lundine, M. and Warrick,J. and Vos, K.}, - year={2024}, - publisher={GitHub}, - howpublished = {\url{https://github.com/kvos/CoastSat/releases/tag/v1.2.5}} - } @article{vos2023benchmarking, title={Benchmarking satellite-derived shoreline mapping algorithms}, @@ -77,10 +75,11 @@ @article{vos2023benchmarking number={1}, pages={345}, year={2023}, + doi = {10.1038/s43247-023-01001-2}, + url = {https://doi.org/10.1038/s43247-023-01001-2}, publisher={Nature Publishing Group UK London} } - @article{turner2021satellite, title={Satellite optical imagery in Coastal Engineering}, author={Turner, I. L. and Harley, M. D. and Almar, R. and Bergsma, E. W. J.}, @@ -88,7 +87,9 @@ @article{turner2021satellite volume={167}, pages={103919}, year={2021}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.coastaleng.2021.103919}, + url={https://doi.org/10.1016/j.coastaleng.2021.103919} } @article{vos2023pacific, @@ -99,10 +100,11 @@ @article{vos2023pacific number={2}, pages={140--146}, year={2023}, - publisher={Nature Publishing Group UK London} + publisher={Nature Publishing Group UK London}, + doi={10.1038/s41561-022-01117-8}, + url={https://doi.org/10.1038/s41561-022-01117-8} } - @article{castelle2021satellite, title={Satellite-derived shoreline detection at a high-energy meso-macrotidal beach}, author={Castelle, B. and Masselink, G. and Scott, T. and Stokes, C. and Konstantinou, A. and Marieu, V. and Bujan, S.}, @@ -110,18 +112,24 @@ @article{castelle2021satellite volume={383}, pages={107707}, year={2021}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.geomorph.2021.107707}, + url={https://doi.org/10.1016/j.geomorph.2021.107707} } + @article{warrick2023large, title={A Large Sediment Accretion Wave Along a {N}orthern {C}alifornia Littoral Cell}, author={Warrick, J. A. and Vos, K. and Buscombe, D. and Ritchie, A. C. and Curtis, J. A.}, journal={Journal of Geophysical Research: Earth Surface}, pages={e2023JF007135}, year={2023}, - publisher={Wiley Online Library} + publisher={Wiley Online Library}, + doi={10.1029/2023JF007135}, + url={https://doi.org/10.1029/2023JF007135} } + @article{vitousek2023future, title={The future of coastal monitoring through satellite remote sensing}, author={Vitousek, S. and Buscombe, D. and Vos, K. and Barnard, P. L. and Ritchie, A. C. and Warrick, J. A.}, @@ -129,7 +137,9 @@ @article{vitousek2023future volume={1}, pages={e10}, year={2023}, - publisher={Cambridge University Press} + publisher={Cambridge University Press}, + doi={10.1017/cft.2022.4}, + url={https://doi.org/10.1017/cft.2022.4} } @article{vitousek2023model, @@ -138,7 +148,9 @@ @article{vitousek2023model journal={Journal of Geophysical Research: Earth Surface}, pages={e2022JF006936}, year={2023}, - publisher={Wiley Online Library} + publisher={Wiley Online Library}, + doi={10.1029/2022JF006936}, + url={https://doi.org/10.1029/2022JF006936} } @article{vandenhove2024secular, @@ -148,9 +160,12 @@ @article{vandenhove2024secular volume={445}, pages={108972}, year={2024}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.geomorph.2023.108972}, + url={https://doi.org/10.1016/j.geomorph.2023.108972} } + @article{castelle2022primary, title={Primary drivers of multidecadal spatial and temporal patterns of shoreline change derived from optical satellite imagery}, author={Castelle, B. and Ritz, A. and Marieu, V. and Lerma, A. N. and Vandenhove, M.}, @@ -158,16 +173,18 @@ @article{castelle2022primary volume={413}, pages={108360}, year={2022}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.geomorph.2022.108360}, + url={https://doi.org/10.1016/j.geomorph.2022.108360} } - -@misc{alley2017pytmd, - title={py{TMD}: {P}ython based tidal prediction software}, +@misc{tyler_sutterley_2024, + author = {Tyler Sutterley}, + title = {tsutterley/pyTMD: v2.1.1}, + year = 2024, publisher = {Zenodo}, - howpublished = {\url{https://doi.org10.5281/zenodo.5555395}}, - author={Alley, K. and Brunt, K. and Howard, S. and Padman, L. and Siegfried, M. and Sutterly, T.}, - year={2017}, + doi = {10.5281/zenodo.10929240}, + url = {https://doi.org/10.5281/zenodo.10929240}, } @article{lyard2021fes2014, @@ -178,37 +195,36 @@ @article{lyard2021fes2014 number={3}, pages={615--649}, year={2021}, - publisher={Copernicus GmbH} + publisher={Copernicus GmbH}, + doi={10.5194/os-17-615-2021}, + url={https://doi.org/10.5194/os-17-615-2021} } @article{doherty2022python, - title={{A Python toolkit to monitor sandy shoreline change using high-resolution PlanetScope cubesats}}, + title={A Python toolkit to monitor sandy shoreline change using high-resolution PlanetScope cubesats}, author={Doherty, Y. and Harley, M. D. and Vos, K. and Splinter, K. D.}, journal={Environmental Modelling \& Software}, volume={157}, pages={105512}, year={2022}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.envsoft.2022.105512}, + url={https://doi.org/10.1016/j.envsoft.2022.105512} } @article{scheffler2017arosics, - title={{AROSICS: An automated and robust open-source image co-registration software for multi-sensor satellite data}}, + title={AROSICS: An automated and robust open-source image co-registration software for multi-sensor satellite data}, author={Scheffler, D. and Hollstein, A. and Diedrich, H. and Segl, K. and Hostert, P.}, - journal={Remote sensing}, + journal={Remote Sensing}, volume={9}, number={7}, pages={676}, year={2017}, - publisher={MDPI} + publisher={MDPI}, + doi={10.3390/rs9070676}, + url={https://doi.org/10.3390/rs9070676} } -@Misc{planet, - author = {{Planet Labs}}, - organization = {Planet Labs}, - title = {{Planet Application Program Interface: In Space for Life on Earth}}, - year = {2018}, - url = "https://api.planet.com" -} @dataset{buscombe_2023_8187949, author = {Buscombe, D. and @@ -236,20 +252,34 @@ @dataset{buscombe_2023_7786276 url = {\url{https://doi.org/10.5281/zenodo.7786276}} } + @misc{voscoastsat, title={{C}oastsat-package}, author={Vos, K. and Fitzpatrick, S.}, publisher={PyPi}, - journal = {PyPi}, year={2023}, - howpublished = {\url{https://pypi.org/project/coastsat-package/}}, + doi={10.5281/zenodo.12553179}, + url={https://doi.org/10.5281/zenodo.12553179} +} + +@misc{CoastSeg, + author = {Fitzpatrick, S. and Buscombe,D. and Lundine, M. and Warrick,J. and Vos, K.}, + title = {SatelliteShorelines/CoastSeg: v1.2.9}, + year = 2024, + publisher = {Zenodo}, + doi = {10.5281/zenodo.12555413}, + url = {https://doi.org/10.5281/zenodo.12555413}, + note = {\url{https://github.com/SatelliteShorelines/CoastSeg/tree/v1.2.9}} } @misc{krause2021dea, - title={{DEA Notebooks contributors 2021: Digital Earth Australia notebooks and tools repository, Geoscience Australia, Canberra}}, - author={Krause, C. and Dunn, B. and Bishop-Taylor, R. and Adams, C. and Burton, C. and Alger, M. and Chua, S. and Phillips, C. and Newey, V. and Kouzoubov, K. and others}, + title={{Digital Earth Australia notebooks and tools repository}}, + author={Krause, C. and Dunn, B. and Bishop-Taylor, R. and Adams, C. and Burton, C. and Alger, M. and Chua, S. and Phillips, C. and Newey, V. and Kouzoubov, K. and Leith, A. and Ayers, D. and Hicks, A.}, year={2021}, - howpublished = {\url{https://knowledge.dea.ga.gov.au/notebooks/README/}}, + publisher={Commonwealth of Australia (Geoscience Australia)}, + url={https://doi.org/10.26186/145234}, + howpublished={\url{https://github.com/GeoscienceAustralia/dea-notebooks/}}, + doi={10.26186/145234} } @@ -259,17 +289,21 @@ @article{konstantinou2023satellite journal={Marine Geology}, pages={107082}, year={2023}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.margeo.2023.107082}, + url={https://doi.org/10.1016/j.margeo.2023.107082} } @article{wu2021leafmap, - title={{Leafmap}: {A P}ython package for interactive mapping and geospatial analysis with minimal coding in a {J}upyter environment}, + title={Leafmap: {A P}ython package for interactive mapping and geospatial analysis with minimal coding in a {J}upyter environment}, author={Wu, Q.}, journal={Journal of Open Source Software}, volume={6}, number={63}, pages={3414}, - year={2021} + year={2021}, + doi={10.21105/joss.03414}, + url={https://doi.org/10.21105/joss.03414} } @article{buscombe2022reproducible, @@ -280,7 +314,9 @@ @article{buscombe2022reproducible number={9}, pages={e2022EA002332}, year={2022}, - publisher={Wiley Online Library} + publisher={Wiley Online Library}, + doi={10.1029/2022EA002332}, + url={https://doi.org/10.1029/2022EA002332} } @article{bishop2021mapping, @@ -290,34 +326,11 @@ @article{bishop2021mapping volume={267}, pages={112734}, year={2021}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.rse.2021.112734}, + url={https://doi.org/10.1016/j.rse.2021.112734} } -@misc{modelzoo, - title={{PyTorch Model Zoo}}, - author={PyTorch}, - year={2020}, - howpublished = {\url{https://pytorch.org/serve/model_zoo.html}}, -} - -@misc{modelzoo2, - title={{NVIDIA Model Zoo}}, - author={NVIDIA}, - year={2023}, - howpublished = {\url{https://docs.nvidia.com/tao/tao-toolkit/text/model_zoo/overview.html -}}, -} - - -@misc{coastsat, - title={{CoastSat v2.4}}, - author={Vos, K.}, - year={2023}, - publisher={GitHub}, - howpublished = {\url{https://github.com/kvos/CoastSat/releases/tag/v2.4}} - } - - @article{garcia2015evaluating, title={Evaluating shoreline identification using optical satellite images}, author={Garcia-Rubio, G. and Huntley, D. and Russell, P.}, @@ -325,15 +338,19 @@ @article{garcia2015evaluating volume={359}, pages={96--105}, year={2015}, - publisher={Elsevier} + publisher={Elsevier}, + doi={10.1016/j.margeo.2014.11.002}, + url={https://doi.org/10.1016/j.margeo.2014.11.002} } @article{almonacid2016evaluation, - title={{Evaluation of annual mean shoreline position deduced from Landsat imagery as a mid-term coastal evolution indicator}}, + title={Evaluation of annual mean shoreline position deduced from Landsat imagery as a mid-term coastal evolution indicator}, author={Almonacid-Caballer, J. and Sanchez-Garcia, E. and Pardo-Pascual, J. E. and Balaguer-Beser, A. A. and Palomar-Vazquez, J.}, journal={Marine Geology}, volume={372}, pages={79--88}, year={2016}, - publisher={Elsevier} -} + publisher={Elsevier}, + doi={10.1016/j.margeo.2015.12.015}, + url={https://doi.org/10.1016/j.margeo.2015.12.015} +} \ No newline at end of file diff --git a/paper/paper.md b/paper/paper.md index a31ee674..e8554586 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -45,7 +45,7 @@ So-called `instantaneous' SDS workflows, where shorelines are extracted from eac `CoastSeg` has three broad aims. The first aim is to be an toolkit consisting functions that operate the core SDS workflow functionalities. This includes file input/output, image downloading, geospatial conversion, tidal model API handling, mapping 2D shorelines to 1D transect-based measurements, and numerous other functions common to a basic SDS workflow, regardless of a particular waterline estimation methodology. This waterline detection algorithm will be crucial to the success of any SDS workflow because it is the step that identifies the the boundary between sea and land which serves as the basis for shoreline mapping. The idea behind the design of `CoastSeg` is that users could extend or customize functionality using scripts and notebooks. -The second aim of `CoastSeg` is therefore to provide fully functioning SDS implementations in an accessible browser notebook format. Our principal objective to date has been to re-implement and improve upon a popular existing toolbox, `CoastSat` [@vos2019coastsat], allowing the user to carry out the well-established `CoastSat` SDS workflow with a well-supported literature [@castelle2021satellite; @castelle2022primary; @vos2023pacific; @vos2023benchmarking; @warrick2023large; @konstantinou2023satellite; @vitousek2023model; @mclean202350; @vandenhove2024secular], but in a more accessible and convenient way within the `CoastSeg` platform. In order to achieve this, we developed `CoastSat-package` [@voscoastsat], a Python package that is installed into the `CoastSeg` `conda` environment. `CoastSat-package` contains re-implemented versions of the original `CoastSat` codes, addresses the lack of pip or conda installability of `CoastSat`, and isolates the CoastSeg-specific enhancements from the original `CoastSat` code. These improvements include additional image download filtering, such as by cloud coverage in the scene, additional parameters to control shoreline extraction, and more accessible output formats, all while retaining the foundational elements of the original `CoastSat` code. The `CoastSeg` re-implementation of the `CoastSat` workflow is end-to-end within a single notebook. That notebook allows the user to, among other tasks: a) define a Region of Interest (ROI) on a webmap and upload geospatial vector format files; b) define, download and post-process satellite imagery; c) identify waterlines in that imagery using the `CoastSat` method [@vos2019coastsat]; d) correct those waterlines to elevation-based shorelines using tidal elevation-datum corrections provided through interaction with the pyTMD [@alley2017pytmd] API; and e) save output files in a variety of modern geospatial and other formats for subsequent analysis. Additionally, CoastSeg's toolkit-based design enables it to run as non-interactive scripts, catering to larger scale shoreline analysis projects.This flexibility ensures that CoastSeg can accommodate a wide range of research needs, from detailed, interactive exploration to extensive, automated analyses. +The second aim of `CoastSeg` is therefore to provide fully functioning SDS implementations in an accessible browser notebook format. Our principal objective to date has been to re-implement and improve upon a popular existing toolbox, `CoastSat` [@vos2019coastsat], allowing the user to carry out the well-established `CoastSat` SDS workflow with a well-supported literature [@castelle2021satellite; @castelle2022primary; @vos2023pacific; @vos2023benchmarking; @warrick2023large; @konstantinou2023satellite; @vitousek2023model; @mclean202350; @vandenhove2024secular], but in a more accessible and convenient way within the `CoastSeg` platform. In order to achieve this, we developed `CoastSat-package` [@voscoastsat], a Python package that is installed into the `CoastSeg` `conda` environment. `CoastSat-package` contains re-implemented versions of the original `CoastSat` codes, addresses the lack of pip or conda installability of `CoastSat`, and isolates the CoastSeg-specific enhancements from the original `CoastSat` code. These improvements include additional image download filtering, such as by cloud coverage in the scene, additional parameters to control shoreline extraction, and more accessible output formats, all while retaining the foundational elements of the original `CoastSat` code. The `CoastSeg` re-implementation of the `CoastSat` workflow is end-to-end within a single notebook. That notebook allows the user to, among other tasks: a) define a Region of Interest (ROI) on a webmap and upload geospatial vector format files; b) define, download and post-process satellite imagery; c) identify waterlines in that imagery using the `CoastSat` method [@vos2019coastsat]; d) correct those waterlines to elevation-based shorelines using tidal elevation-datum corrections provided through interaction with the pyTMD [@tyler_sutterley_2024] API; and e) save output files in a variety of modern geospatial and other formats for subsequent analysis. Additionally, CoastSeg's toolkit-based design enables it to run as non-interactive scripts, catering to larger scale shoreline analysis projects.This flexibility ensures that CoastSeg can accommodate a wide range of research needs, from detailed, interactive exploration to extensive, automated analyses. The third and final aim of `CoastSeg` is to implement a method to carry out SDS workflows in experimental and collaborative contexts, which aids both oversight and reproducibility as well as practical needs based on division of labor. We do this using `sessions`, a mechanism for saving the current state of the application into a session's folder. This folder contains all necessary inputs, outputs, and references to downloaded data used to generate the results. `Sessions` allow users to iteratively experiment with different combinations of settings and makes `CoastSeg` fully reproducible because everything needed to reproduce the session is saved to the folder. Users can share their `sessions` with others, enabling peers to replicate experiments, build upon previous work, or access data downloaded by someone else. This simplifies handovers to new users from existing users, simplifies teaching of the program, and encourages collective experimentation which may result in better shoreline data. Users might expect to adjust settings across several sessions to find the optimal configuration for each site, typically requiring two to five adjustments to achieve the best quality shorelines. @@ -55,7 +55,7 @@ The third and final aim of `CoastSeg` is to implement a method to carry out SDS # Statement of Need -Coastal scientists and resource managers now have access to extensive collections of satellite data spanning more than four decades. However, it's only in recent years that advancements in algorithms, machine learning, and deep learning have enabled the automation of processing this satellite imagery to accurately identify and map shorelines from imagery, a process known as Satellite-Derived Shorelines, or SDS. SDS workflows [@garcia2015evaluating; @almonacid2016evaluation] are gaining rapidly in popularity, and in particular since the publication of the open-source implementation of the `CoastSat` workflow [@coastsat] for instantaneous SDS in 2018 [@vos2019coastsat]. Existing open-source software for SDS often require the user to navigate between platforms (non-reproducible elements), develop custom code, and/or engage in substantial manual effort. +Coastal scientists and resource managers now have access to extensive collections of satellite data spanning more than four decades. However, it's only in recent years that advancements in algorithms, machine learning, and deep learning have enabled the automation of processing this satellite imagery to accurately identify and map shorelines from imagery, a process known as Satellite-Derived Shorelines, or SDS. SDS workflows [@garcia2015evaluating; @almonacid2016evaluation] are gaining rapidly in popularity, and in particular since the publication of the open-source implementation of the `CoastSat` workflow [@vos2019coastsat] for instantaneous SDS in 2018 [@vos2019coastsat]. Existing open-source software for SDS often require the user to navigate between platforms (non-reproducible elements), develop custom code, and/or engage in substantial manual effort. We built CoastSeg with the aim of enhancing the CoastSat workflow. Our design streamlines the entire shoreline extraction process, thus facilitating a more efficient experimental approach to determine the optimal combination of settings to extract the greatest number of accurate shorelines. CoastSeg achieves these improvements through several key advancements: it ensures reproducible sessions for consistent comparison and analysis; introduces additional filtering mechanisms to refine results; and provides an interactive user webmap that allows the users to view the quality of the extracted shorelines. Further, `CoastSeg` has been designed specifically to host alternative SDS workflows, recognizing that it is a nascent field of coastal science, and the optimal methodologies for all coastal environments and sources of imagery are yet to be established. Therefore `CoastSeg` provides a means with which to extract shorelines using multiple methods and adopt the one that most suits their needs, or implement new methods. @@ -117,7 +117,7 @@ In contrast, CoastSeg introduces a significant improvement to this process by le # Implementation of an Alternative Deep-Learning-Based SDS Workflow -As we noted above, we have developed a notebook that carries out an alternative SDS workflow based on deep-learning based semantic segmentation models. The name 'CoastSeg' is derived from this functionality—using semantic segmentation models for the precise classification of coastal geomorphological features. This advanced classification refines the extraction of shoreline data from satellite imagery. To implement this custom workflow, we created a new Jupyter notebook, and added source code to the `CoastSeg` codebase. The changes ensured that the inputs and outputs were those expected by core functions in `CoastSeg` toolkit. We call this alternative workflow the `Zoo` workflow, in reference to the fact that the deep learning models implemented originate from the `Segmentation Zoo` GitHub repository, and result from the `Segmentation Gym` deep-learning based image segmentation model training package [@buscombe2022reproducible]. The name `Zoo` has become a standard for online trained ML models [@modelzoo; @modelzoo2], and the repository contains both SDS models and others. Figure 2 describes in detail how the two workflows differ. While the optimal SDS workflow adopted for waterline detection, as determined against field validation data, will be the subject of a future manuscript, it is important to note that these models have not been thoroughly tested yet. We are currently benchmarking these models across various coastal environments, with the results to be documented in a separate repository and linked to `CoastSeg` upon conclusion. +As we noted above, we have developed a notebook that carries out an alternative SDS workflow based on deep-learning based semantic segmentation models. The name 'CoastSeg' is derived from this functionality—using semantic segmentation models for the precise classification of coastal geomorphological features. This advanced classification refines the extraction of shoreline data from satellite imagery. To implement this custom workflow, we created a new Jupyter notebook, and added source code to the `CoastSeg` codebase. The changes ensured that the inputs and outputs were those expected by core functions in `CoastSeg` toolkit. We call this alternative workflow the `Zoo` workflow, in reference to the fact that the deep learning models implemented originate from the `Segmentation Zoo` GitHub repository, and result from the `Segmentation Gym` deep-learning based image segmentation model training package [@buscombe2022reproducible]. The name `Zoo` has become a standard for online trained ML models, and the repository contains both SDS models and others. Figure 2 describes in detail how the two workflows differ. While the optimal SDS workflow adopted for waterline detection, as determined against field validation data, will be the subject of a future manuscript, it is important to note that these models have not been thoroughly tested yet. We are currently benchmarking these models across various coastal environments, with the results to be documented in a separate repository and linked to `CoastSeg` upon conclusion. @@ -125,7 +125,7 @@ As we noted above, we have developed a notebook that carries out an alternative We intend `CoastSeg` to be a collaborative research project and encourage contributions from the SDS community. As well as implementing alternative SDS waterline detection workflows, other improvements that could continue to be made include more (or more refined) outlier detection methods, image filtering procedures, and other basic image pre- or post-processing routines, especially image restoration on degraded imagery [@vitousek2023future]. Such additions would all be possible without major changes to the existing `CoastSeg` toolkit. -Integration of new models for the deep-learning workflow are planned, based on Normalized Difference Water Index (NDWI) and Modified Normalized Difference Water Index (MNDWI) spectral indices, as is a new `CoastSeg` toolbox extension for daily 3-m Planetscope imagery [@doherty2022python] from Planet Labs [@planet]. Docker may be adopted in the future for managing dependencies in the `conda` virtual environment required to run the program. Other sources of imagery and other spectral indices may have value in SDS workflows, and we encourage SDS users to contribute their advances through a `CoastSeg` Jupyter notebook implementation. +Integration of new models for the deep-learning workflow are planned, based on Normalized Difference Water Index (NDWI) and Modified Normalized Difference Water Index (MNDWI) spectral indices, as is a new `CoastSeg` toolbox extension for daily 3-m Planetscope imagery [@doherty2022python] from Planet Labs. Docker may be adopted in the future for managing dependencies in the `conda` virtual environment required to run the program. Other sources of imagery and other spectral indices may have value in SDS workflows, and we encourage SDS users to contribute their advances through a `CoastSeg` Jupyter notebook implementation. It would be also be possible to incorporate automated satellite image subpixel co-registration in `CoastSeg` using the AROSICS package [@scheffler2017arosics]. This would co-register all available imagery to the nearest-in-time LandSat image. Further, future work could include accounting for the contributions of runup and setup to total water level [@vitousek2023model; @vos2023benchmarking]. In practice, this would merely add/subtract a height from the instantaneous predicted tide, then apply horizontal correction. However, the specific methods used to estimate runup or setup from the prevailing wave field would require integration with observed or hindcasted databases of wave conditions. diff --git a/pyproject.toml b/pyproject.toml index 61eefa53..1d1c7845 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "coastseg" dynamic = ["readme"] -version = "1.2.7" +version = "1.2.9" authors = [ { name=" Sharon Fitzpatrick", email="sharon.fitzpatrick23@gmail.com" }, ] @@ -18,7 +18,7 @@ description = "An interactive python package for satellite derived shoreline wor dependencies = [ "h5py>=3.10.0", "pyTMD", - "coastsat-package>=0.1.65", + "coastsat-package>=0.1.71", "area", "aiohttp", "chardet", diff --git a/src/coastseg/common.py b/src/coastseg/common.py index 2afcace7..9be706cf 100644 --- a/src/coastseg/common.py +++ b/src/coastseg/common.py @@ -2016,7 +2016,8 @@ def convert_points_to_linestrings(gdf, group_col='date', output_crs='epsg:4326') return gpd.GeoDataFrame(columns=['geometry']) # Recreate the groups as a geodataframe grouped_gdf = gpd.GeoDataFrame(filtered_groups, geometry='geometry') - linestrings = grouped_gdf.groupby(group_col).apply(lambda g: LineString(g.geometry.tolist())) + linestrings = grouped_gdf.groupby(group_col,group_keys=False).apply(lambda g: LineString(g.geometry.tolist())) + # Create a new GeoDataFrame from the LineStrings linestrings_gdf = gpd.GeoDataFrame(linestrings, columns=['geometry'],) linestrings_gdf.reset_index(inplace=True) diff --git a/src/coastseg/core_utilities.py b/src/coastseg/core_utilities.py index 341f6d36..4ddd912c 100644 --- a/src/coastseg/core_utilities.py +++ b/src/coastseg/core_utilities.py @@ -54,13 +54,8 @@ def resolve_repo_path(cwd: pathlib.Path, proj_name: str, max_depth: int = 100) - cwd = pathlib.Path(os.getcwd()) proj_dir = resolve_repo_path(cwd, proj_name=repo_name) except ValueError as e: - # get the currentq working directory - cwd = os.getcwd() - proj_dir = os.path.join(cwd, repo_name) - # this means it was the first time creating it so print a message - if not os.path.exists(proj_dir): - print(f"Creating {repo_name} because it was not found. Created at {proj_dir}") - os.makedirs(proj_dir, exist_ok=True) + # get the current working directory if the project directory is not found + proj_dir = os.getcwd() # convert to a pathlib.Path object proj_dir = pathlib.Path(proj_dir) diff --git a/src/coastseg/transects.py b/src/coastseg/transects.py index 07d060fc..b7a1b01d 100644 --- a/src/coastseg/transects.py +++ b/src/coastseg/transects.py @@ -157,8 +157,7 @@ def load_intersecting_transects( else: rectangle = rectangle.copy().set_crs(crs) # get the bounding box of the rectangle - bbox = rectangle.bounds.iloc[0].tolist() - + bbox = tuple(rectangle.bounds.iloc[0].tolist()) # Create a list to store the GeoDataFrames gdf_list = [] # Iterate over each transect file and select the transects that intersect with the rectangle