Giter Club home page Giter Club logo

coastguard's Introduction

image

PhD student working on satellite-driven tools to monitor and predict coastal change in real-time

pronouns ORCID Google Scholar LinkedIn UofG Twitter

Software Projects

My main repo (which houses all my coastal PhD tools) is COASTGUARD (Coastal Observation + Analysis using Satellite-derived Timeseries, Generated Using AI + Real-time Data). COASTGUARD is where you can find the VedgeSat tool for automatically extracting vegetation edges from Landsat, Sentinel-2 and PlanetScope imagery.

My Bio

I'm currently a PhD student in the School of Geographical and Earth Sciences at the University of Glasgow. My ultimate research goal is to create a satellite-driven framework for predicting shoreline change in response to short-term weather events, in a range of coastal environments. My PhD so far has focused on extracting novel metrics for coastal change (such as the coastal vegetation edge) from publicly available satellite observations. If it's free, and it's near-global in coverage, I want get the most information from it in the most automated way possible! Prior to my PhD, I was the sole research assistant on the Dynamic Coast project (also at the University of Glasgow), which aims to fill Scotland's national evidence base of coastal change. I studied Geology & Physical Geography and Geographical Information Science at the University of Edinburgh, which is where my love of natural hazard monitoring and prediction, spatial visualisation, science communication, and machine learning first came about. I'm also passionate about tools and techniques for planetary observation (apart from Earth!) and Space exploration, and am currently helping design and build a nanosatellite for rapid UK coastal monitoring.

When I grow up I want to work for a Space agency.

coastguard's People

Contributors

cmac95 avatar fmemuir avatar mdhurst1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

coastguard's Issues

Plot breaks in adjust_detection() when no adjustments to NDVI threshold are made

Bug appears when adjust_detection() is called to adjust the NDVI threshold used for veg edge extraction. If a point is clicked, the plot updates with the new veg edge position relating to that updated NDVI threshold. If no point is clicked however, and the user hits 'Enter' without clicking anything, the plot breaks with the error:
vegline_latlon referenced before assignment

Investigating to see where vegline might have been defined but not vegline_latlon or vegline_proj

Download.check_images_available(inputs) - Script becomes stuck on Driver Files?

Hi - Excited to get started with VedgeSat and COASTGUARD to compliment some CoastSat data!

I've been trying to work through the example scripts and am having difficulty with the "check_images_available" function. Both the VedgeSat_DriverTemplate.ipynb and VedgeSat_Driver_Example.py file create the same issue for me where the script becomes nonresponsive and does not update when checking for available images. This issue persists regardless of area or timeframe and seems like it is stuck in an infinite loop near line 420. Any thoughts?

COASTGUARD_Console

"VegetationLine.extract_veglines" Outputs empty output .pkl files

Hi Freya et al.

I've been working a bit with the VedgeSat toolbox on a study site in NE Florida USA using Landsat and Sentinel 2 data and using the provided example driver notebooks. While the vegetation and water level detections appear to be working as shown in the attached classification image, the output .pkl files are empty (screenshot). Any thoughts on how I can address this?

2020-05-08_S2

Screenshot 2024-06-25 174349
73723280/56e04629-ff18-44ac-83b7-4561bae52cef)

GEE metadata

Code syntax error in Image Download cell of Jupyter Notebook driver. Attempting to resolve myself and if I can I will post solution here.

image

FindShoreContours_WP() fails on poor quality/hazy images

In certain sites and images, the veg edge extraction process falls over when contours are attempted to be extracted. Specifically at:

File COASTGUARD/VegetationLine.py, line 232
    contours_ndvi, t_ndvi = FindShoreContours_WP(im_ndvi, im_labels, cloud_mask, im_ref_buffer)
File COASTGUARD/VegetationLine.py, line 1030
    t_ndi, _ = Toolbox.FindWPThresh(int_veg, int_nonveg)
File COASTGUARD/Toolbox.py, line 2013
    model.fit(sample)

The code fails because model cannot take a variable of shape (0,1) (i.e. sample is empty). Tracing this back, this happens on very hazy/dark/poor quality images, which have somehow passed the initial catches for image quality (cloud masking, empty rasters). The reason the array going into FindWPThresh is empty is because not enough classes have been found in order to define a contour along; most likely all pixels have been classes as nonveg.

This needs to be fixed by either catching these images early and discarding based on reflectance histograms, or the slightly faster route of a conditional after the images have been classified which skips this image if the labels are all one class.

Certain locations fail to create a proper reference line buffer

Might be to do with the reference line shapefile itself, but certain sites fail to create a proper reference line buffer that runs along the reference line shapefile. The shapefile itself looks good (all one feature, no breaks or multiparts), but when the buffer is generated, it only covers the first 20% of the line. One temporary fix for this is to expand the minimum distance for the buffer so that it covers the whole reference shoreline. But it should be investigated to make sure something weird isn't happening with Toolbox.ProcessRefline() which is causing the buffer to be cut off early. Perhaps a reprojection bug? Or a bug in Toolbox.spaced_vertices()?

Remove duplicates - line length

Hi @fmemuir,

Running into issues with the operation of the new RemoveDuplicates function (approximately Line 600 in Toolbox.py).

It is a list out of range error which I think stems from the fact that the output['veglines'] list reduces in size as duplicates are deleted. The additional index 'v' appears to refer to values outside of the range of the length of this list, likely ObjectIDs of some sort?

image

Scale parameter in geemap.ee_to_numpy

image

Hi, I was trying to run the VegetationLine.extract_veglines but it encountered an error related to geemap.ee_to_numpy function in the Image_Processing.py module (line 523) -> TypeError: ee_to_numpy() got an unexpected keyword argument 'scale'.

I read the geemap documentation related to ee_to_numpy() and the parameter is set to None but you can pass it.

If you have any idea about it, I would appreciate it.

Thanks!

QA 60 Band Issue in Sentinel-2 images

Hi Freya,

I encountered a problem when I attempted to extract the vegetation edge in year 2024 using Sentinel-2 images. I received the error message "Image does not contain the band QA60". However, when I change the date to 2023, it works as expected.

QA 60 band issue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.