Skip to content

Instantly share code, notes, and snippets.

View mdsumner's full-sized avatar

Michael Sumner mdsumner

View GitHub Profile
@mdsumner
mdsumner / vrtcon-reformat.md
Last active November 6, 2026 16:13
breakdown.md

Changes in substance compared with the current text (rewording, reordering and layout not listed):

**New behaviour documented **

  • Per-band scaling is written scale_<n>=... and exponent_<n>=... in the URL (previously only named as scale_bn / exponent_bn).
  • Multiple GCPs are given by repeating gcp=, one GCP each.
  • if and oo may each be given only once; extra values go comma-separated inside that one option, and repeating either is an error.
  • An unknown option is an error.
  • ovr also accepts AUTO, AUTO-<n> and NONE (the value is passed unchanged to -ovr).
  • expand lists gray as an allowed value (the value is passed through to -expand).
  • The source dataset can be any name GDAL can open, including /vsicurl/ paths.

portolan-sdi/portolan-spec#234

Comments on the draft, roughly in priority order:

  1. CRS and grid in the store: zarr-conventions already defines both. https://github.com/zarr-conventions/spatial (spatial:transform, spatial:shape, spatial:registration) and the proj convention (proj:code | proj:wkt2 | proj:projjson, at least one required). The FTW store follows these. Suggest the Grid and CRS sections require these conventions, alongside the multiscales convention the draft already names, rather than a CF variable named
```python
xarray.open_dataset("/vsicurl/https://data.source.coop/ausantarctic/ghrsst-mur-v2/ghrsst-mur-v2.vrt", engine = "gdalxarray")
<xarray.Dataset> Size: 208TB
Dimensions: (time: 8914, y: 17999, x: 36000)
Coordinates:
* time (time) datetime64[ns] 71kB 2002-06-01 ... 2026-10-26
* y (y) float64 144kB 89.99 89.98 89.97 ... -89.98 -89.99
* x (x) float64 288kB -180.0 -180.0 -180.0 ... 180.0 180.0
Data variables:
analysed_sst (time, y, x) float64 46TB ...
Conversation with Gemini
Can gridlook render a projected COG
No, GridLook cannot natively render a Cloud Optimized GeoTIFF (COG).
GridLook (d70-t/gridlook) is built specifically for visualizing Earth System Model (ESM) output directly in the browser via WebGL, targeting chunked multidimensional array formats like Zarr and Icechunk. It does not have built-in decoders or HTTP range-request drivers for GeoTIFF/COG structures.
GitHub
If you need to render a projected COG in GridLook or a similar client-side WebGL stack, your primary options are:
import pyproj
from pyproj import CRS, Transformer
from pyproj.exceptions import CRSError, ProjError

# PROJ version (string and tuple)
print(pyproj.proj_version_str)   # e.g. "9.6.0"
print(pyproj.PROJ_VERSION)       # (9, 6, 0)
@mdsumner
mdsumner / gdal-warp-remakes.md
Created September 18, 2026 21:08
GDAL remakes: an llm-heavy survey of warper alternatives

GDAL-remakes: a survey of raster reprojection reimplementations

Companion notes for hypertidy/rwarp#1. Compiled September 2026.

Scope: software that reimplements raster warping -- the destination-driven mapping of a target grid back through a coordinate transform into a source grid, with resampling -- rather than calling GDAL's warper. Point-transform libraries (proj4js, proj4rs, geodesy) are listed only where a warper depends on one.

Diagnosing curl / /vsicurl timeouts from a JupyterHub session

A timeout (as opposed to a connection refusal) almost always means packets are being dropped silently, so the job is to find out which phase dies. Work outward in layers.

1. Split the phases

curl -sS -o /dev/null \
@mdsumner
mdsumner / TARGETS.md
Created September 14, 2026 01:48
An exploration of the mechanism of the place

Targets

Ordered by what each would add to the corpus, not by how interesting the entity is on its own. An entity earns its place if it either tests the schema against a new legal form or connects to nodes already in the graph.

Done

RACT, MAIB, Tasracing, Macquarie Point Development Corporation, EPA Tasmania, the salmon producers as a cluster, Hobart City Council, the energy government businesses as a