Skip to content

Historical Imagery

Esri's World Imagery Wayback in RustGIS: every archived release of World Imagery since February 2014 (about 200, one a month or so), as a basemap you can step through by release or by year, with the capture date, source and resolution of the imagery at any place. It is RustGIS's counterpart of maplibre-gl-esri-wayback, GeoLibre's Historical Imagery plugin.

A release goes on the map as a web tile layer named after its date (Wayback 2019-05-08), above the basemaps and below the overlays, so labels stay on top. Choosing another release replaces it; {"add": true} keeps it and stacks the new one, to compare them by turning the top one off and on. The layers are saved with the project, and their credit is shown in the corner of the map and in exports.

Each release keeps only the imagery that changed in it; the tiles of a place that didn't change come from the release that last had it. So two releases can look the same somewhere: step on with Older or Newer, or use Imagery Info to see when the imagery under the map's centre was captured.

Its tab

Wayback, at the end of the ribbon's tab strip:

  • Release: Latest, Older, Newer, Oldest. Older and Newer step from the release on the map (from the latest when there is none).
  • Year: Year ▾, the last release of each year.
  • Inspect: Imagery Info (the source of the imagery at the map's centre, in the release on the map: capture date, provider, sensor and resolution, in the status bar, with its footprint added as a layer), Releases (how many there are and which is on the map).
  • Manage: Remove, which takes the Wayback imagery off the map.

Go to Release isn't on the tab: it takes a date or a release number, from command search, scripts and the command line.

rustgis-cli run --sample --plugin historical-imagery-0.1.0.rgplugin \
  --cmd 'map.goToXY={"lon": -115.1745, "lat": 36.1215, "scale": 8000}' \
  --cmd 'plugin:historical-imagery/release={"date": "2016-06"}' \
  --cmd 'plugin:historical-imagery/info'

New releases

The module has no network of its own, so the releases it knows are baked in, from Esri's list when the plugin was built. Commands that may need a newer release (Latest, Newer from the newest baked release, Releases, a date past the baked list) read Esri's live list through RustGIS, from Wayback's WMTS capabilities, so new releases show up without updating the plugin. When that list can't be read, the baked one stands in. A year newer than the plugin has no Year ▾ entry until it is regenerated, but Latest and Go to Release reach it.

Terms of use

The imagery comes from Esri under its terms of use: credit it (RustGIS does, from the layer's attribution), and check the terms before heavy or commercial use.

Permissions

edit and network. Through RustGIS, the plugin adds Esri's Wayback tiles as web tile layers (wayback.maptiles.arcgis.com), reads the list of releases from Wayback's WMTS capabilities (the same host), and adds the imagery source from the releases' metadata services (metadata.maptiles.arcgis.com). It contacts no other host. With edit it adds and removes its own tile layers and imagery source layers, which it recognises by their id (wayback-<release>) and their exact name (Imagery source · Wayback YYYY-MM-DD).

Build

cargo build --release --target wasm32-unknown-unknown -p historical-imagery

plugin.json's commands and src/releases.rs are generated by generate.py from Esri's list of releases (python plugins/historical-imagery/generate.py); a test checks they agree. Run it again now and then to bake in the new releases, and bump the version.


Version 0.1.1 · Source · Permissions: edit, network