Skip to content

Instantly share code, notes, and snippets.

View robbibt's full-sized avatar
🛰️

Robbi Bishop-Taylor robbibt

🛰️
View GitHub Profile
@robbibt
robbibt / stac_load_from_item.py
Last active November 24, 2025 04:03
Load raster data directly from a STAC item using `odc-stac`
from pystac import Item
import odc.stac
import rasterio
import odc.geo.xr
path = 'https://dea-public-data-dev.s3-ap-southeast-2.amazonaws.com/derivative/ga_s2ls_intertidal_cyear_3/1-0-0/x128/y165/2016--P1Y/ga_s2ls_intertidal_cyear_3_x128y165_2016--P1Y_final.stac-item.json'
# path = 'https://dea-public-data-dev.s3-ap-southeast-2.amazonaws.com/derivative/ga_s2ls_intertidal_cyear_3/1-0-0/x128/y165/2017--P1Y/ga_s2ls_intertidal_cyear_3_x128y165_2017--P1Y_final.stac-item.json'
items = [Item.from_file(path)]
data = odc.stac.load(items, chunks={})
@robbibt
robbibt / STAC_loading_explorer.ipynb
Created February 29, 2024 23:28
Explorer STAC loading limit issue
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@robbibt
robbibt / s3_to_vrt.py
Created February 7, 2024 03:44
Create virtual raster for files on S3
import s3fs
import pandas as pd
s3 = s3fs.S3FileSystem(anon=True)
file_list = s3.glob(
"dea-public-data-dev/derivative/ga_ls8cls9c_gm_cyear_3/4-0-0/*/*/2023--P1Y/ga_ls8cls9c_gm_cyear_3_*_2023--P1Y_final_nbart_red.tif"
)
pd.DataFrame(file_list).iloc[:, 0].str.replace(
"dea-public-data-dev/",
@robbibt
robbibt / tide_gauge_funcs.py
Created January 31, 2024 00:43
GESLA and ABSLMP tide gauge loading functions
import glob
import warnings
import datetime
from odc.geo.geom import BoundingBox
def _load_gauge_metadata(metadata_path):
# Load metadata
@robbibt
robbibt / Expanded_AOI_gridspec_tiles.ipynb
Last active January 25, 2024 03:34
Generating GridSpec summary tile grid for expanded DEA AOI
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@robbibt
robbibt / otps_tides.py
Created October 12, 2023 23:46
OTPS tide modelling function for TPXO8
import otps
import pytz
def otps_tides(lats, lons, times, timezone=None):
"""
Model tide heights for one or more locations and times using the
OTPS TPXO8 tidal model.
Parameters:
-----------
lats, lons : numeric or list of numeric values
@robbibt
robbibt / load_ls_s2.py
Last active August 14, 2023 13:10
`pc_load`: easily searching and loading data from Microsoft Planetary Computer
import numpy as np
import xarray as xr
def load_ls_s2(
x=None,
y=None,
geom=None,
start_date="2020",
end_date="2021",
@robbibt
robbibt / tide_range_constituents.py
Created June 23, 2023 03:14
Tide range from constituents
# Source: https://www.arcgis.com/home/item.html?id=d5354dea41b14f0689860bf4b2cf5e8a
# 2*(M2+S2+K1+O1)
(0.01 * 2 * (
xr.open_dataset("/var/share/tide_models/fes2014/ocean_tide/m2.nc")
+ xr.open_dataset("/var/share/tide_models/fes2014/ocean_tide/s2.nc")
+ xr.open_dataset("/var/share/tide_models/fes2014/ocean_tide/k1.nc")
+ xr.open_dataset("/var/share/tide_models/fes2014/ocean_tide/o1.nc")
)).amplitude.odc.assign_crs("EPSG:4326").plot()
@robbibt
robbibt / tide_models.py
Created June 13, 2023 07:13
Loading different tide models with `dea_tools.coastal.model_tides`
import pandas as pd
import sys
sys.path.insert(1, '../Tools/')
from dea_tools.coastal import model_tides, tidal_tag, pixel_tides, tidal_stats
# Set of times to model tides for
date_list = pd.date_range(start="2022-09-01", end="2022-09-30", freq="1H")
# Run TPXO8
@robbibt
robbibt / Resampling_Dask_issue.ipynb
Last active May 25, 2023 01:47
Datacube.load Dask resampling issue
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.