Remove Data Library entries whose licence or provider links are broken

A link check of every manifest found 404 licence or provider pages for
OpenSeaMap seamarks, EMODnet bathymetry and the PDOK, basemap.at, Geneva
SITG, ICGC Catalunya, Luxembourg and Vlaanderen aerial photos, and no
answer from the SEDAC GPW, Minnesota and Bangor hosts. Drop those 11
entries, renumber the unpublished share-token ledger, point the tests at
remaining entries and regenerate DATA_SOURCES.md.
This commit is contained in:
Said Turksever committed 2026-11-12 17:05:21 +00:00
1 parent 11706a68cb
commit 871b7f0fcc
21 files changed
+139 -688

No files matched your search

-11
View File
@@ -300,8 +300,6 @@ Each Data Library entry is a manifest in `src/library/entries/` pointing at a li
| **Amsterdam traffic and ANPR camera positions** (`amsterdam-traffic-cameras`, `api.data.amsterdam.nl`) | dataset, geojson, browser-direct; operator adds `amsterdam-traffic-cameras` to `GEV_LIBRARY_ENABLE` | [Gemeente Amsterdam open data: public unless stated otherwise; no named licence](https://schemas.data.amsterdam.nl/datasets/verkeersinformatiesystemen/dataset) | "Gemeente Amsterdam, verkeersinformatiesystemen register (entry contributed by @Maher-Reven)" |
| **Arkansas Statewide Imagery (2023)** (`ar-statewide-imagery`, `gis.arkansas.gov`) | tiles, bbox, browser-direct | [Public domain — Arkansas GIS Office open data](https://gis.arkansas.gov/) | "Arkansas GIS Office" |
| **Arizona Statewide Imagery (2017)** (`az-statewide-imagery`, `azgeo.az.gov`) | tiles, xyz, browser-direct; operator adds `az-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://azgeo.az.gov/) | "AZGEO" |
| **Bangor, Maine Orthoimagery** (`bangor-me`, `tiles.arcgis.com`) | tiles, xyz, browser-direct; operator adds `bangor-me` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://www.bangormaine.gov/) | "City of Bangor GIS" |
| **basemap.at Orthofoto** (`basemap-at-orthofoto`, `mapsneu.wien.gv.at`) | tiles, xyz, browser-direct | [CC BY 4.0](https://basemap.at/nutzungsbedingungen/) | "basemap.at — Datenquelle: basemap.at" |
| **Digitales Orthophoto Bayern (DOP 40 cm, open)** (`bayern-dop40`, `geoservices.bayern.de`) | tiles, bbox, browser-direct | [CC BY 4.0](https://geodaten.bayern.de/opengeodata/) | "© Bayerische Vermessungsverwaltung" |
| **Bismarck–Mandan, North Dakota Aerial Photography** (`bismarck-mandan-nd`, `ndgishub.nd.gov`) | tiles, bbox, browser-direct; operator adds `bismarck-mandan-nd` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://www.gis.nd.gov/) | "95West Aerial Mapping" |
| **TopPlusOpen basemap (BKG)** (`bkg-topplus-open`, `sgx.geodatenzentrum.de`) | tiles, xyz, browser-direct | [Datenlizenz Deutschland – Namensnennung 2.0](https://www.govdata.de/dl-de/by-2-0) | "© BKG, dl-de/by-2-0" |
@@ -314,21 +312,17 @@ Each Data Library entry is a manifest in `src/library/entries/` pointing at a li
| **Delaware Statewide Imagery (2024)** (`de-statewide-imagery`, `imagery.firstmap.delaware.gov`) | tiles, bbox, browser-direct; operator adds `de-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://firstmap.delaware.gov/) | "This data is meant for use by requested parties. This data cannot be used without express consent.This data is meant for use by requested parties. This data cannot be used without express consent." |
| **Eesti ortofoto (Maa-amet)** (`ee-maa-amet-ortofoto`, `tiles.maaamet.ee`) | tiles, xyz, browser-direct | [Maa-amet open data licence (attribution)](https://geoportaal.maaamet.ee/eng/Spatial-Data/Orthophotos-p309.html) | "© Maa-amet (Estonian Land Board)" |
| **US power plants, 100 MW and up (EIA)** (`eia-power-plants`, `services2.arcgis.com`) | dataset, arcgis, browser-direct | [U.S. Energy Information Administration data: public domain](https://www.eia.gov/about/copyrights_reuse.php) | "U.S. Energy Information Administration (EIA-860, EIA-860M, EIA-923)" |
| **European seabed depth (EMODnet)** (`emodnet-bathymetry`, `tiles.emodnet-bathymetry.eu`) | tiles, xyz, browser-direct | [EMODnet data: free use with attribution](https://emodnet.ec.europa.eu/en/emodnet-data-policy) | "EMODnet Bathymetry Consortium — EMODnet Digital Bathymetry (DTM)" |
| **Superfund sites (US EPA)** (`epa-superfund-sites`, `geopub.epa.gov`) | dataset, arcgis, browser-direct | [U.S. EPA data: public domain](https://www.epa.gov/web-policies-and-procedures/epa-disclaimers) | "U.S. Environmental Protection Agency — Facility Registry Service (EnviroMapper)" |
| **Toxic release facilities (US EPA TRI)** (`epa-toxic-release-facilities`, `geopub.epa.gov`) | dataset, arcgis, browser-direct | [U.S. EPA data: public domain](https://www.epa.gov/web-policies-and-procedures/epa-disclaimers) | "U.S. Environmental Protection Agency — Toxics Release Inventory via the Facility Registry Service" |
| **Home energy ratings, England and Wales (EPC)** (`epc-england-wales`, `s3.us-west-2.amazonaws.com`) | dataset, geoparquet, browser-direct | [Open Government Licence v3.0 (EPC data); OS Open UPRN under OGL](https://epc.opendatacommunities.org/docs/copyright) | "Energy Performance of Buildings Data, DLUHC; geocoded by Addresscloud with OS Open UPRN — contains OS data © Crown copyright and database right; via Source Cooperative" |
| **US building footprints (FEMA USA Structures)** (`fema-usa-structures`, `services2.arcgis.com`) | dataset, arcgis, browser-direct | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) | "FEMA Response Geospatial Office and Oak Ridge National Laboratory — USA Structures" |
| **Biodiversity records (GBIF)** (`gbif-occurrence-density`, `api.gbif.org`) | tiles, xyz, browser-direct | [GBIF data use agreement (records under CC0, CC BY or CC BY-NC)](https://www.gbif.org/terms) | "GBIF.org — Global Biodiversity Information Facility" |
| **Disaster alerts (GDACS)** (`gdacs-disaster-alerts`, `www.gdacs.org`) | dataset, geojson, browser-direct | [GDACS terms of use (free, attribution required)](https://www.gdacs.org/About/termofuse.aspx) | "GDACS — Global Disaster Alert and Coordination System (UN, European Commission)" |
| **Orthophotos Canton de Genève (SITG)** (`geneva-sitg-ortho`, `ge.ch`) | tiles, bbox, browser-direct | [SITG open data — free use with attribution](https://ge.ch/sitg/media/sitg/documents/CGU_donnees_libres.pdf) | "© SITG — Etat de Genève" |
| **Population density 2020 (SEDAC GPW)** (`gpw-population-density`, `gibs.earthdata.nasa.gov`) | tiles, xyz, browser-direct | [CC BY 4.0](https://sedac.ciesin.columbia.edu/data/collection/gpw-v4/terms-of-use) | "CIESIN, Columbia University — Gridded Population of the World v4.11, via NASA GIBS" |
| **Grand Forks, North Dakota Aerial Photography** (`grand-forks-nd`, `ndgishub.nd.gov`) | tiles, bbox, browser-direct; operator adds `grand-forks-nd` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://www.gis.nd.gov/) | "Grand Forks/East Grand Forks Metropolitan Planning Organization (MPO)" |
| **Japan standard map (GSI)** (`gsi-japan-map`, `cyberjapandata.gsi.go.jp`) | tiles, xyz, browser-direct | [GSI Tiles terms (free use with attribution)](https://maps.gsi.go.jp/development/ichiran.html) | "Geospatial Information Authority of Japan (GSI Tiles)" |
| **Japan aerial photos (GSI)** (`gsi-japan-photo`, `cyberjapandata.gsi.go.jp`) | tiles, xyz, browser-direct | [GSI Tiles terms (free use with attribution)](https://maps.gsi.go.jp/development/ichiran.html) | "Geospatial Information Authority of Japan (GSI Tiles)" |
| **Holocene volcanoes (Smithsonian GVP)** (`gvp-holocene-volcanoes`, `webservices.volcano.si.edu`) | dataset, geojson, proxied | [Smithsonian Terms of Use (personal, educational, non-commercial use; cite the Global Volcanism Program)](https://www.si.edu/termsofuse) | "Global Volcanism Program, Smithsonian Institution — Volcanoes of the World" |
| **Iowa Statewide Imagery (2023)** (`ia-statewide-imagery`, `ortho.gis.iastate.edu`) | tiles, bbox, browser-direct; operator adds `ia-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://geodata.iowa.gov/) | "USDA NAIP, Iowa State University GIS Facility" |
| **Ortofoto de Catalunya 25 cm** (`icgc-orto-catalunya`, `geoserveis.icgc.cat`) | tiles, xyz, browser-direct | [CC BY 4.0](https://www.icgc.cat/en/Ambits-tematics/Ortofoto) | "© Institut Cartogràfic i Geològic de Catalunya" |
| **Idaho Statewide Imagery (2023)** (`id-statewide-imagery`, `insideidaho.org`) | tiles, bbox, browser-direct | [Public domain / open — INSIDE Idaho terms](https://insideidaho.org/) | "United States Department of Agriculture, Farm Production and Conservation Business Center, Geospatial Enterprise Operations (FPAC-BC-GEO)" |
| **France aerial photos (IGN)** (`ign-orthophotos-france`, `data.geopf.fr`) | tiles, xyz, browser-direct | [Licence Ouverte / Etalab 2.0](https://www.etalab.gouv.fr/licence-ouverte-open-licence/) | "© IGN — Géoplateforme" |
| **Illinois Statewide Imagery** (`il-statewide-imagery`, `data.isgs.illinois.edu`) | tiles, bbox, browser-direct; operator adds `il-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://clearinghouse.isgs.illinois.edu/) | "Illinois State Geological Survey / IDOT" |
@@ -352,7 +346,6 @@ Each Data Library entry is a manifest in `src/library/entries/` pointing at a li
| **Lee County, Florida Aerial Imagery** (`lee-county-fl`, `gisimageserver.leegov.com`) | tiles, bbox, browser-direct; operator adds `lee-county-fl` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://www.leegov.com/gis) | "Eagle View, Lee County Property Appraiser, Lee County GIS" |
| **Loudoun County, Virginia Imagery** (`loudoun-county-va`, `logis.loudoun.gov`) | tiles, bbox, browser-direct; operator adds `loudoun-county-va` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://geohub-loudoungis.opendata.arcgis.com/) | "Loudoun County GIS" |
| **Louisville / LOJIC, Kentucky Imagery** (`louisville-lojic-ky`, `services.lojic.org`) | tiles, bbox, browser-direct; operator adds `louisville-lojic-ky` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://www.lojic.org/) | "LOJIC, USDA-NAIP" |
| **Orthophoto officielle du Luxembourg** (`lu-ortho-latest`, `wmts1.geoportail.lu`) | tiles, xyz, browser-direct | [CC0 1.0 (Licence ouverte Luxembourg)](https://data.public.lu/en/datasets/orthophoto-officelle-du-grand-duche-de-luxembourg-edition-2023/) | "Administration du cadastre et de la topographie, Luxembourg (CC0)" |
| **Massachusetts Statewide Imagery** (`ma-statewide-imagery`, `tiles.arcgis.com`) | tiles, xyz, browser-direct; operator adds `ma-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://gis.data.mass.gov/) | "MassGIS, Commonwealth of Massachusetts" |
| **Geologic map (Macrostrat)** (`macrostrat-geology`, `tiles.macrostrat.org`) | tiles, xyz, browser-direct | [CC BY 4.0 (Macrostrat; source maps credited by their publishers)](https://macrostrat.org/about) | "Macrostrat — geologic maps from their original publishers" |
| **Global terrain shaded relief (Mapterhorn)** (`mapterhorn-terrain`, `tiles.mapterhorn.com`) | tiles, xyz, browser-direct | [Open data, per source (mostly CC BY 4.0 and public domain)](https://mapterhorn.com/attribution) | "© Mapterhorn and its open elevation sources" |
@@ -360,7 +353,6 @@ Each Data Library entry is a manifest in `src/library/entries/` pointing at a li
| **Maryland Statewide Imagery** (`md-statewide-imagery`, `mdgeodata.md.gov`) | tiles, bbox, browser-direct; operator adds `md-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://imap.maryland.gov/) | "Maryland iMAP" |
| **Maine Statewide Imagery** (`me-statewide-imagery`, `gis.maine.gov`) | tiles, bbox, browser-direct; operator adds `me-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://www.maine.gov/geolib/) | "USDA Aerial Photography Field Office" |
| **Michigan Statewide Imagery (2024)** (`mi-statewide-imagery`, `imagery.michigan.gov`) | tiles, bbox, browser-direct; operator adds `mi-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://gis-michigan.opendata.arcgis.com/) | "State of Michigan" |
| **Minnesota Statewide Imagery** (`mn-statewide-imagery`, `imageserver.gisdata.mn.gov`) | tiles, bbox, browser-direct | [Public domain / open — MnGeo terms](https://www.mngeo.state.mn.us/) | "MnGeo / State of Minnesota" |
| **Mountain Village, Colorado Orthoimagery** (`mountain-village-co`, `tiles.arcgis.com`) | tiles, xyz, browser-direct; operator adds `mountain-village-co` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://www.townofmountainvillage.com/) | "Town of Mountain Village" |
| **Mississippi Statewide Imagery** (`ms-statewide-imagery`, `tiles.arcgis.com`) | tiles, xyz, browser-direct; operator adds `ms-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open state geodata — attribution requested](https://www.gis.ms.gov/) | "USDA-FSA-APFO" |
| **Montana Statewide Imagery (2023)** (`mt-statewide-imagery`, `gisservice.mt.gov`) | tiles, bbox, browser-direct | [Public domain — Montana State Library open data](https://msl.mt.gov/geoinfo/) | "Montana State Library" |
@@ -382,10 +374,8 @@ Each Data Library entry is a manifest in `src/library/entries/` pointing at a li
| **New York Statewide Imagery (2019)** (`ny-statewide-imagery`, `orthos.its.ny.gov`) | tiles, xyz, browser-direct | [Public domain — NYS open data](https://data.gis.ny.gov/) | "USDA; NYS ITS Geospatial Services" |
| **Oakland County, Michigan Ortho Imagery** (`oakland-county-mi`, `gisservices.oakgov.com`) | tiles, bbox, browser-direct; operator adds `oakland-county-mi` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://oakgov.maps.arcgis.com/) | "Oakland County GIS" |
| **Ohio Statewide Imagery** (`oh-statewide-imagery`, `maps.ohio.gov`) | tiles, xyz, browser-direct | [Public domain — Ohio open data](https://maps.ohio.gov/) | "Ohio Geographically Referenced Information Program (OGRIP)" |
| **Seamarks (OpenSeaMap)** (`openseamap-seamarks`, `tiles.openseamap.org`) | tiles, xyz, browser-direct | [CC BY-SA 2.0; data © OpenStreetMap contributors (ODbL)](https://openseamap.org/index.php?id=imprint&L=1) | "© OpenSeaMap contributors, CC BY-SA; data © OpenStreetMap contributors" |
| **Oregon Statewide Imagery (2000)** (`or-statewide-imagery`, `imagery.oregonexplorer.info`) | tiles, bbox, browser-direct | [Public domain — Oregon open data](https://www.oregon.gov/geo/) | "Oregon, GEO, DAS" |
| **Pennsylvania Statewide Imagery** (`pa-statewide-imagery`, `imagery.pasda.psu.edu`) | tiles, bbox, browser-direct | [Public domain — PASDA open data](https://www.pasda.psu.edu/) | "PASDA / PAMAP, Commonwealth of Pennsylvania" |
| **Netherlands aerial photos (PDOK)** (`pdok-aerial-netherlands`, `service.pdok.nl`) | tiles, xyz, browser-direct | [CC BY 4.0](https://www.pdok.nl/introductie/-/article/luchtfoto-pdok) | "Beeldmateriaal Nederland via PDOK" |
| **Ortofotomapa Polski (GUGiK)** (`pl-ortofotomapa`, `mapy.geoportal.gov.pl`) | tiles, bbox, browser-direct | [Polish open geodata (free reuse, Prawo geodezyjne art. 40a)](https://www.geoportal.gov.pl/) | "© GUGiK / geoportal.gov.pl" |
| **PNOA Máxima Actualidad** (`pnoa-ma`, `www.ign.es`) | tiles, bbox, browser-direct | [CC BY 4.0 (compatible) — Orden FOM/2807/2015](https://www.scne.es/productos.html) | "PNOA © Instituto Geográfico Nacional de España" |
| **Portland Metro (RLIS), Oregon Aerial Photos** (`portland-metro-or`, `utility.arcgis.com`) | tiles, xyz, browser-direct; operator adds `portland-metro-or` to `GEV_LIBRARY_ENABLE` | [Local government open data — see publisher terms](https://rlisdiscovery.oregonmetro.gov/) | "Oregon Metro RLIS" |
@@ -397,7 +387,6 @@ Each Data Library entry is a manifest in `src/library/entries/` pointing at a li
| **US rivers and lakes (USGS)** (`usgs-hydrography`, `basemap.nationalmap.gov`) | tiles, xyz, browser-direct | [USGS The National Map: U.S. public domain](https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits) | "USGS The National Map — National Hydrography Dataset" |
| **US topographic map (USGS)** (`usgs-topo`, `basemap.nationalmap.gov`) | tiles, xyz, browser-direct | [USGS The National Map: U.S. public domain](https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits) | "USGS The National Map" |
| **Virginia Statewide Imagery** (`va-statewide-imagery`, `vginmaps.vdem.virginia.gov`) | tiles, xyz, browser-direct; operator adds `va-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open — VGIN VBMP terms](https://vgin.vdem.virginia.gov/) | "Virginia Geographic Information Network (VGIN)" |
| **Orthofotomozaïek Vlaanderen (winter)** (`vlaanderen-omw`, `geo.api.vlaanderen.be`) | tiles, bbox, browser-direct | [Vlaanderen model licence for free reuse](https://www.vlaanderen.be/digitaal-vlaanderen/onze-oplossingen/orthofotomozaieken) | "© Digitaal Vlaanderen" |
| **Vermont Statewide Imagery** (`vt-statewide-imagery`, `maps.vcgi.vermont.gov`) | tiles, bbox, browser-direct | [Public domain — Vermont open data](https://vcgi.vermont.gov/) | "Vermont Center for Geographic Information (VCGI)" |
| **Orthophotos de Wallonie** (`wallonie-ortho`, `geoservices.wallonie.be`) | tiles, bbox, browser-direct | [Conditions ouvertes SPW (attribution)](https://geoportail.wallonie.be/catalogue-donnees) | "© Service public de Wallonie" |
| **Wisconsin Statewide Imagery (2020)** (`wi-statewide-imagery`, `di-wisdot.img.arcgis.com`) | tiles, bbox, browser-direct; operator adds `wi-statewide-imagery` to `GEV_LIBRARY_ENABLE` | [Open — WisconsinView / state open data](https://www.wisconsinview.org/) | "WisDOT - NAIP 2020" |
+3 -3
View File
@@ -7,15 +7,15 @@
and travel in share links as `lib=`, separate from the layer tokens; one
generic `/api/library` proxy serves entries without CORS. Seeded with NASA
EONET events, EIA and WRI power plants, NWS alerts, NOAA tide stations,
Smithsonian volcanoes, NASA Black Marble, OpenSeaMap seamarks, and the
Smithsonian volcanoes, NASA Black Marble, and the
opt-in IMF PortWatch and CCTV packs, plus the City of Amsterdam's
traffic and ANPR camera positions (opt-in; contributed by @Maher-Reven in
#251). FEMA USA Structures and the
National Bridge Inventory load what is in view once you zoom in, and
Addresscloud's EPC ratings stream from Source Cooperative's GeoParquet on
S3, coloured A–G with live legend counts. Open tile overlays (geology,
biodiversity, population, surface water, national aerial photos and maps)
join GDACS alerts and EPA Superfund and TRI facilities. 64 aerial photo
biodiversity, surface water, national aerial photos and maps)
join GDACS alerts and EPA Superfund and TRI facilities. 57 aerial photo
layers from the Open Imagery Register (national programmes across Europe,
NSW, NAIP and US state, county and city services, WMS and ArcGIS export
included) show their resolution, true-ortho flag, years flown and refresh
+18 -17
View File
@@ -441,29 +441,28 @@ critical #d03b3b); categorical ones (fuel, EONET category, building
occupancy) use at most four hues that pass all-pairs colour-vision checks on
the dark globe, plus a neutral Other. Tile layers carry a static
`display.legend` copied from the provider's own scale (GBIF classic.poly,
JRC occurrence, GIBS GPW, Macrostrat's ICS period colours); EMODnet publishes
no machine-readable scale and has none. Aerial photo layers (PDOK, IGN, GSI
JRC occurrence, Macrostrat's ICS period colours). Aerial photo layers (IGN, GSI
photos, swisstopo SWISSIMAGE) set `display.outline`: their covered countries'
borders draw as a thin white ground-clamped line, so the imagery's edge is
plain, with a "Coverage outline" legend item. Borders come from Natural
Earth's 1:50m admin-0 countries (public domain, fetched live once per page and
credited); `countries` draws every part (Japan's islands, Liechtenstein beside
Switzerland), `coverage` only the parts inside `coverage.bbox` (the European
Netherlands, metropolitan France). A failed border fetch costs only the
Switzerland), `coverage` only the parts inside `coverage.bbox` (metropolitan
France). A failed border fetch costs only the
outline. The same layers set `display.aerial`: they drape above every other
imagery layer and raise themselves again whenever another drape is added, so a
basemap or weather overlay switched on later goes underneath. Each is
`source.bounded` (tiles requested inside `coverage.bbox` only) and names its
provider's no-imagery fill in `display.noDataColor`, drawn transparent through
Cesium's colour-to-alpha (max channel distance 0.02): measured fills are PDOK
and swisstopo white, IGN's flat ocean blue (#0a3b59) and GSI's ocean grey
(#343434). Without both, PDOK's white fill covered the whole globe. A 4xx tile
Cesium's colour-to-alpha (max channel distance 0.02): measured fills are
swisstopo white, IGN's flat ocean blue (#0a3b59) and GSI's ocean grey
(#343434). Without both, a white fill covered the whole globe. A 4xx tile
answer counts as "no imagery here", never as a tile error. IGN's overseas
departments are outside its single bbox and are not shown. The aerial set now holds 68
entries: 64 imported from the Open Imagery Register (national programmes in
Austria, Belgium, Germany, Estonia, Spain, Luxembourg, Poland, Portugal,
Geneva, Australia's NSW, and 51 US services: NAIP plus state, county and
city programmes) plus PDOK, IGN, GSI and SWISSIMAGE, each with an `imagery`
departments are outside its single bbox and are not shown. The aerial set now holds 60
entries: 57 imported from the Open Imagery Register (national programmes in
Belgium (Wallonia), Germany, Estonia, Spain, Poland, Portugal, Australia's
NSW, and 49 US services: NAIP plus state, county and city programmes) plus
IGN, GSI and SWISSIMAGE, each with an `imagery`
block (type, published resolution, true ortho, years flown, refresh) that
Browse shows as a spec list. Tiles take `xyz` (with `{reverseY}` for TMS) or
`bbox` templates (`{bbox-epsg-3857}`: WMS GetMap and ArcGIS export, filled
@@ -558,7 +557,7 @@ registered in the Data attribution popover while it is in use.
Seeds: NASA EONET open events (GeoJSON, browser-direct), EIA US power plants
≥ 100 MW (ArcGIS, browser-direct, ranked by capacity), Smithsonian GVP Holocene
volcanoes (WFS GeoJSON, proxied — the upstream sends no CORS headers), NASA
Black Marble 2016 night lights and OpenSeaMap seamarks (tiles), and the NYC,
Black Marble 2016 night lights (tiles), and the NYC,
Lithuania and FL511 CCTV packs. Added from the Ask dataset registry (its live,
mappable sources that are not core layers): the WRI Global Power Plant Database
(provider-hosted CSV, the 10,000 largest of ~35,000 by capacity, so it reads
@@ -576,10 +575,12 @@ open/freemium registry review (commercial sources excluded): GDACS disaster
alerts; the National Bridge Inventory (view-bounded, coloured Good/Fair/Poor);
EPA Superfund sites and Toxics Release Inventory facilities (view-bounded); and
tile overlays for Macrostrat geology, GBIF biodiversity density, USGS
topographic and hydrography maps, PDOK (Netherlands) and IGN (France) aerial
photos, BKG TopPlusOpen, GSI Japan map and photos, EMODnet bathymetry, SEDAC
GPW 2020 population density (legend from the GIBS colour map) and JRC surface
water occurrence. `npm run library:check` validates manifests,
topographic and hydrography maps, IGN (France) aerial photos, BKG
TopPlusOpen, GSI Japan map and photos and JRC surface water occurrence.
Entries whose licence or provider pages no longer resolve (404 or unreachable
host, checked 2026-11-12) were removed: OpenSeaMap seamarks, EMODnet
bathymetry, SEDAC GPW population density, PDOK, basemap.at, Geneva SITG,
ICGC Catalunya, Luxembourg, Vlaanderen, Minnesota and Bangor aerial photos. `npm run library:check` validates manifests,
the ledger (append-only with `--base-ref`, run in CI on pull requests) and the
generated DATA_SOURCES.md section; `npm run library:probe` hits every upstream
once; `npm run qa:data-library` is the browser gate (fixture-backed).
-15
View File
@@ -3501,8 +3501,6 @@
"src/library/entries/amsterdam-traffic-cameras.json",
"src/library/entries/ar-statewide-imagery.json",
"src/library/entries/az-statewide-imagery.json",
"src/library/entries/bangor-me.json",
"src/library/entries/basemap-at-orthofoto.json",
"src/library/entries/bayern-dop40.json",
"src/library/entries/bismarck-mandan-nd.json",
"src/library/entries/bkg-topplus-open.json",
@@ -3515,21 +3513,17 @@
"src/library/entries/de-statewide-imagery.json",
"src/library/entries/ee-maa-amet-ortofoto.json",
"src/library/entries/eia-power-plants.json",
"src/library/entries/emodnet-bathymetry.json",
"src/library/entries/epa-superfund-sites.json",
"src/library/entries/epa-toxic-release-facilities.json",
"src/library/entries/epc-england-wales.json",
"src/library/entries/fema-usa-structures.json",
"src/library/entries/gbif-occurrence-density.json",
"src/library/entries/gdacs-disaster-alerts.json",
"src/library/entries/geneva-sitg-ortho.json",
"src/library/entries/gpw-population-density.json",
"src/library/entries/grand-forks-nd.json",
"src/library/entries/gsi-japan-map.json",
"src/library/entries/gsi-japan-photo.json",
"src/library/entries/gvp-holocene-volcanoes.json",
"src/library/entries/ia-statewide-imagery.json",
"src/library/entries/icgc-orto-catalunya.json",
"src/library/entries/id-statewide-imagery.json",
"src/library/entries/ign-orthophotos-france.json",
"src/library/entries/il-statewide-imagery.json",
@@ -3553,7 +3547,6 @@
"src/library/entries/lee-county-fl.json",
"src/library/entries/loudoun-county-va.json",
"src/library/entries/louisville-lojic-ky.json",
"src/library/entries/lu-ortho-latest.json",
"src/library/entries/ma-statewide-imagery.json",
"src/library/entries/macrostrat-geology.json",
"src/library/entries/mapterhorn-terrain.json",
@@ -3561,7 +3554,6 @@
"src/library/entries/md-statewide-imagery.json",
"src/library/entries/me-statewide-imagery.json",
"src/library/entries/mi-statewide-imagery.json",
"src/library/entries/mn-statewide-imagery.json",
"src/library/entries/mountain-village-co.json",
"src/library/entries/ms-statewide-imagery.json",
"src/library/entries/mt-statewide-imagery.json",
@@ -3583,10 +3575,8 @@
"src/library/entries/ny-statewide-imagery.json",
"src/library/entries/oakland-county-mi.json",
"src/library/entries/oh-statewide-imagery.json",
"src/library/entries/openseamap-seamarks.json",
"src/library/entries/or-statewide-imagery.json",
"src/library/entries/pa-statewide-imagery.json",
"src/library/entries/pdok-aerial-netherlands.json",
"src/library/entries/pl-ortofotomapa.json",
"src/library/entries/pnoa-ma.json",
"src/library/entries/portland-metro-or.json",
@@ -3598,7 +3588,6 @@
"src/library/entries/usgs-hydrography.json",
"src/library/entries/usgs-topo.json",
"src/library/entries/va-statewide-imagery.json",
"src/library/entries/vlaanderen-omw.json",
"src/library/entries/vt-statewide-imagery.json",
"src/library/entries/wallonie-ortho.json",
"src/library/entries/wi-statewide-imagery.json",
@@ -3608,7 +3597,6 @@
"src/library/entries/gvp-holocene-volcanoes.json",
"src/library/entries/nasa-black-marble.json",
"src/library/entries/nasa-eonet-events.json",
"src/library/entries/openseamap-seamarks.json",
"src/library/catalog.js",
"src/library/source.js",
"src/library/layers.js",
@@ -3624,11 +3612,9 @@
"src/library/entries/epc-england-wales.json",
"src/library/parquet.js",
"src/library/entries/bkg-topplus-open.json",
"src/library/entries/emodnet-bathymetry.json",
"src/library/entries/epa-superfund-sites.json",
"src/library/entries/epa-toxic-release-facilities.json",
"src/library/entries/gbif-occurrence-density.json",
"src/library/entries/gpw-population-density.json",
"src/library/entries/gdacs-disaster-alerts.json",
"src/library/entries/gsi-japan-map.json",
"src/library/entries/ign-orthophotos-france.json",
@@ -3637,7 +3623,6 @@
"src/library/entries/ntad-national-bridges.json",
"src/library/entries/usgs-hydrography.json",
"src/library/entries/macrostrat-geology.json",
"src/library/entries/pdok-aerial-netherlands.json",
"src/library/entries/swisstopo-swissimage.json",
"src/library/entries/usgs-topo.json",
"src/library/outlines.js",
-22
View File
@@ -13,8 +13,6 @@ import akStatewideImagery from './entries/ak-statewide-imagery.json' with { type
import arStatewideImagery from './entries/ar-statewide-imagery.json' with { type: 'json' };
import azStatewideImagery from './entries/az-statewide-imagery.json' with { type: 'json' };
import amsterdamTrafficCameras from './entries/amsterdam-traffic-cameras.json' with { type: 'json' };
import bangorMe from './entries/bangor-me.json' with { type: 'json' };
import basemapAtOrthofoto from './entries/basemap-at-orthofoto.json' with { type: 'json' };
import bayernDop40 from './entries/bayern-dop40.json' with { type: 'json' };
import bismarckMandanNd from './entries/bismarck-mandan-nd.json' with { type: 'json' };
import bkgTopplusOpen from './entries/bkg-topplus-open.json' with { type: 'json' };
@@ -27,21 +25,17 @@ import dcStatewideImagery from './entries/dc-statewide-imagery.json' with { type
import deStatewideImagery from './entries/de-statewide-imagery.json' with { type: 'json' };
import eeMaaAmetOrtofoto from './entries/ee-maa-amet-ortofoto.json' with { type: 'json' };
import eiaPowerPlants from './entries/eia-power-plants.json' with { type: 'json' };
import emodnetBathymetry from './entries/emodnet-bathymetry.json' with { type: 'json' };
import epaSuperfundSites from './entries/epa-superfund-sites.json' with { type: 'json' };
import epaToxicReleaseFacilities from './entries/epa-toxic-release-facilities.json' with { type: 'json' };
import epcEnglandWales from './entries/epc-england-wales.json' with { type: 'json' };
import femaUsaStructures from './entries/fema-usa-structures.json' with { type: 'json' };
import gbifOccurrenceDensity from './entries/gbif-occurrence-density.json' with { type: 'json' };
import gdacsDisasterAlerts from './entries/gdacs-disaster-alerts.json' with { type: 'json' };
import genevaSitgOrtho from './entries/geneva-sitg-ortho.json' with { type: 'json' };
import gpwPopulationDensity from './entries/gpw-population-density.json' with { type: 'json' };
import grandForksNd from './entries/grand-forks-nd.json' with { type: 'json' };
import gsiJapanMap from './entries/gsi-japan-map.json' with { type: 'json' };
import gsiJapanPhoto from './entries/gsi-japan-photo.json' with { type: 'json' };
import gvpHoloceneVolcanoes from './entries/gvp-holocene-volcanoes.json' with { type: 'json' };
import iaStatewideImagery from './entries/ia-statewide-imagery.json' with { type: 'json' };
import icgcOrtoCatalunya from './entries/icgc-orto-catalunya.json' with { type: 'json' };
import idStatewideImagery from './entries/id-statewide-imagery.json' with { type: 'json' };
import ignOrthophotosFrance from './entries/ign-orthophotos-france.json' with { type: 'json' };
import ilStatewideImagery from './entries/il-statewide-imagery.json' with { type: 'json' };
@@ -65,7 +59,6 @@ import lawrenceKs from './entries/lawrence-ks.json' with { type: 'json' };
import leeCountyFl from './entries/lee-county-fl.json' with { type: 'json' };
import loudounCountyVa from './entries/loudoun-county-va.json' with { type: 'json' };
import louisvilleLojicKy from './entries/louisville-lojic-ky.json' with { type: 'json' };
import luOrthoLatest from './entries/lu-ortho-latest.json' with { type: 'json' };
import maStatewideImagery from './entries/ma-statewide-imagery.json' with { type: 'json' };
import macrostratGeology from './entries/macrostrat-geology.json' with { type: 'json' };
import mapterhornTerrain from './entries/mapterhorn-terrain.json' with { type: 'json' };
@@ -73,7 +66,6 @@ import marisMs from './entries/maris-ms.json' with { type: 'json' };
import mdStatewideImagery from './entries/md-statewide-imagery.json' with { type: 'json' };
import meStatewideImagery from './entries/me-statewide-imagery.json' with { type: 'json' };
import miStatewideImagery from './entries/mi-statewide-imagery.json' with { type: 'json' };
import mnStatewideImagery from './entries/mn-statewide-imagery.json' with { type: 'json' };
import mountainVillageCo from './entries/mountain-village-co.json' with { type: 'json' };
import msStatewideImagery from './entries/ms-statewide-imagery.json' with { type: 'json' };
import mtStatewideImagery from './entries/mt-statewide-imagery.json' with { type: 'json' };
@@ -95,10 +87,8 @@ import nwsActiveAlerts from './entries/nws-active-alerts.json' with { type: 'jso
import nyStatewideImagery from './entries/ny-statewide-imagery.json' with { type: 'json' };
import oaklandCountyMi from './entries/oakland-county-mi.json' with { type: 'json' };
import ohStatewideImagery from './entries/oh-statewide-imagery.json' with { type: 'json' };
import openseamapSeamarks from './entries/openseamap-seamarks.json' with { type: 'json' };
import orStatewideImagery from './entries/or-statewide-imagery.json' with { type: 'json' };
import paStatewideImagery from './entries/pa-statewide-imagery.json' with { type: 'json' };
import pdokAerialNetherlands from './entries/pdok-aerial-netherlands.json' with { type: 'json' };
import plOrtofotomapa from './entries/pl-ortofotomapa.json' with { type: 'json' };
import pnoaMa from './entries/pnoa-ma.json' with { type: 'json' };
import portlandMetroOr from './entries/portland-metro-or.json' with { type: 'json' };
@@ -110,7 +100,6 @@ import unionCountyOh from './entries/union-county-oh.json' with { type: 'json' }
import usgsHydrography from './entries/usgs-hydrography.json' with { type: 'json' };
import usgsTopo from './entries/usgs-topo.json' with { type: 'json' };
import vaStatewideImagery from './entries/va-statewide-imagery.json' with { type: 'json' };
import vlaanderenOmw from './entries/vlaanderen-omw.json' with { type: 'json' };
import vtStatewideImagery from './entries/vt-statewide-imagery.json' with { type: 'json' };
import wallonieOrtho from './entries/wallonie-ortho.json' with { type: 'json' };
import wiStatewideImagery from './entries/wi-statewide-imagery.json' with { type: 'json' };
@@ -123,8 +112,6 @@ export const LIBRARY_MANIFESTS = Object.freeze([
amsterdamTrafficCameras,
arStatewideImagery,
azStatewideImagery,
bangorMe,
basemapAtOrthofoto,
bayernDop40,
bismarckMandanNd,
bkgTopplusOpen,
@@ -137,21 +124,17 @@ export const LIBRARY_MANIFESTS = Object.freeze([
deStatewideImagery,
eeMaaAmetOrtofoto,
eiaPowerPlants,
emodnetBathymetry,
epaSuperfundSites,
epaToxicReleaseFacilities,
epcEnglandWales,
femaUsaStructures,
gbifOccurrenceDensity,
gdacsDisasterAlerts,
genevaSitgOrtho,
gpwPopulationDensity,
grandForksNd,
gsiJapanMap,
gsiJapanPhoto,
gvpHoloceneVolcanoes,
iaStatewideImagery,
icgcOrtoCatalunya,
idStatewideImagery,
ignOrthophotosFrance,
ilStatewideImagery,
@@ -175,7 +158,6 @@ export const LIBRARY_MANIFESTS = Object.freeze([
leeCountyFl,
loudounCountyVa,
louisvilleLojicKy,
luOrthoLatest,
maStatewideImagery,
macrostratGeology,
mapterhornTerrain,
@@ -183,7 +165,6 @@ export const LIBRARY_MANIFESTS = Object.freeze([
mdStatewideImagery,
meStatewideImagery,
miStatewideImagery,
mnStatewideImagery,
mountainVillageCo,
msStatewideImagery,
mtStatewideImagery,
@@ -205,10 +186,8 @@ export const LIBRARY_MANIFESTS = Object.freeze([
nyStatewideImagery,
oaklandCountyMi,
ohStatewideImagery,
openseamapSeamarks,
orStatewideImagery,
paStatewideImagery,
pdokAerialNetherlands,
plOrtofotomapa,
pnoaMa,
portlandMetroOr,
@@ -220,7 +199,6 @@ export const LIBRARY_MANIFESTS = Object.freeze([
usgsHydrography,
usgsTopo,
vaStatewideImagery,
vlaanderenOmw,
vtStatewideImagery,
wallonieOrtho,
wiStatewideImagery,
-48
View File
@@ -1,48 +0,0 @@
{
"id": "bangor-me",
"kind": "tiles",
"family": "imagery",
"title": "Bangor, Maine Orthoimagery",
"provider": "City of Bangor GIS",
"description": "Aerial orthophotos: Bangor, Maine jurisdiction.",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["US"],
"bbox": [-68.9126, 44.7674, -68.6451, 44.8951]
},
"source": {
"format": "xyz",
"url": "https://tiles.arcgis.com/tiles/yIxdYDwtUG29jfAN/arcgis/rest/services/2024_Orthoimagery_Tiles/MapServer/tile/{z}/{y}/{x}",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 11,
"maxZoom": 22,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "bbox",
"aerial": true
},
"imagery": {
"type": "ortho",
"resolution": "sub-foot to 1 ft (local program)",
"resolutionM": 0.15,
"trueOrtho": false,
"vintage": "2024–present",
"updateCycle": "Local flight cycle (typically annual to 3-yearly)",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "Local government open data — see publisher terms",
"url": "https://www.bangormaine.gov/",
"operatorOptIn": true
},
"attribution": {
"text": "City of Bangor GIS",
"url": "https://www.bangormaine.gov/"
},
"status": "community",
"reviewed": "2026-10-23"
}
@@ -1,48 +0,0 @@
{
"id": "basemap-at-orthofoto",
"kind": "tiles",
"family": "imagery",
"title": "basemap.at Orthofoto",
"provider": "basemap.at / geoland.at",
"description": "Aerial orthophotos: 100% of Austria (mosaic of state orthophotos).",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["AT"],
"bbox": [9.53, 46.37, 17.17, 49.02]
},
"source": {
"format": "xyz",
"url": "https://mapsneu.wien.gv.at/basemap/bmaporthofoto30cm/normal/google3857/{z}/{y}/{x}.jpeg",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 6,
"maxZoom": 19,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "coverage",
"aerial": true,
"noDataColor": "#fdfdfd"
},
"imagery": {
"type": "ortho",
"resolution": "20–30 cm",
"resolutionM": 0.2,
"trueOrtho": false,
"vintage": "2021–present",
"updateCycle": "Rolling (per state flight cycles)",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "CC BY 4.0",
"url": "https://basemap.at/nutzungsbedingungen/"
},
"attribution": {
"text": "basemap.at — Datenquelle: basemap.at",
"url": "https://basemap.at/"
},
"status": "community",
"reviewed": "2026-10-23"
}
@@ -1,34 +0,0 @@
{
"id": "emodnet-bathymetry",
"kind": "tiles",
"family": "environment",
"title": "European seabed depth (EMODnet)",
"provider": "EMODnet",
"description": "Shaded relief of the seabed across European seas from the EMODnet Digital Bathymetry model.",
"icon": "≈",
"maintainer": "github:asturksever",
"coverage": {
"bbox": [-36, 15, 43, 90]
},
"source": {
"format": "xyz",
"url": "https://tiles.emodnet-bathymetry.eu/2020/baselayer/web_mercator/{z}/{x}/{y}.png",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 0,
"maxZoom": 12
},
"display": {
"opacity": 0.85
},
"licence": {
"name": "EMODnet data: free use with attribution",
"url": "https://emodnet.ec.europa.eu/en/emodnet-data-policy"
},
"attribution": {
"text": "EMODnet Bathymetry Consortium — EMODnet Digital Bathymetry (DTM)",
"url": "https://emodnet.ec.europa.eu/en/bathymetry"
},
"status": "community",
"reviewed": "2026-10-22"
}
@@ -1,48 +0,0 @@
{
"id": "geneva-sitg-ortho",
"kind": "tiles",
"family": "imagery",
"title": "Orthophotos Canton de Genève (SITG)",
"provider": "SITG — Canton de Genève",
"description": "Aerial orthophotos: Canton of Geneva (~282 km²).",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["CH"],
"bbox": [5.95, 46.12, 6.32, 46.37]
},
"source": {
"format": "bbox",
"url": "https://ge.ch/terags/rest/services/RASTER/ORTHOPHOTOS/MapServer/export?bbox={bbox-epsg-3857}&bboxSR=3857&imageSR=3857&size=256,256&format=jpg&f=image",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 10,
"maxZoom": 20,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "bbox",
"aerial": true,
"noDataColor": "#fdfdfd"
},
"imagery": {
"type": "ortho",
"resolution": "5 cm",
"resolutionM": 0.05,
"trueOrtho": true,
"vintage": "2023–present",
"updateCycle": "Annual",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "SITG open data — free use with attribution",
"url": "https://ge.ch/sitg/media/sitg/documents/CGU_donnees_libres.pdf"
},
"attribution": {
"text": "© SITG — Etat de Genève",
"url": "https://ge.ch/sitg/"
},
"status": "community",
"reviewed": "2026-10-23"
}
@@ -1,60 +0,0 @@
{
"id": "gpw-population-density",
"kind": "tiles",
"family": "demographics",
"title": "Population density 2020 (SEDAC GPW)",
"provider": "NASA GIBS",
"description": "Estimated people per square kilometre in 2020 from SEDAC's Gridded Population of the World v4.",
"icon": "◍",
"maintainer": "github:asturksever",
"coverage": {
"global": true
},
"source": {
"format": "xyz",
"url": "https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/GPW_Population_Density_2020/default/GoogleMapsCompatible_Level7/{z}/{y}/{x}.png",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 0,
"maxZoom": 7
},
"display": {
"opacity": 0.75,
"legend": [
{
"label": "< 1 people per km²",
"color": "#fff2d1"
},
{
"label": "5–7.5 people per km²",
"color": "#fed59a"
},
{
"label": "25–50 people per km²",
"color": "#faab4d"
},
{
"label": "100–125 people per km²",
"color": "#fc9943"
},
{
"label": "250–325 people per km²",
"color": "#f55e2c"
},
{
"label": "≥ 1,000 people per km²",
"color": "#bd0026"
}
]
},
"licence": {
"name": "CC BY 4.0",
"url": "https://sedac.ciesin.columbia.edu/data/collection/gpw-v4/terms-of-use"
},
"attribution": {
"text": "CIESIN, Columbia University — Gridded Population of the World v4.11, via NASA GIBS",
"url": "https://sedac.ciesin.columbia.edu/data/collection/gpw-v4"
},
"status": "community",
"reviewed": "2026-10-22"
}
@@ -1,47 +0,0 @@
{
"id": "icgc-orto-catalunya",
"kind": "tiles",
"family": "imagery",
"title": "Ortofoto de Catalunya 25 cm",
"provider": "ICGC",
"description": "Aerial orthophotos: Catalonia (~32,100 km²).",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["ES"],
"bbox": [0.15, 40.52, 3.34, 42.87]
},
"source": {
"format": "xyz",
"url": "https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 7,
"maxZoom": 20,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "bbox",
"aerial": true
},
"imagery": {
"type": "ortho",
"resolution": "25 cm (15 cm in cities)",
"resolutionM": 0.15,
"trueOrtho": false,
"vintage": "2022–present",
"updateCycle": "Annual",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "CC BY 4.0",
"url": "https://www.icgc.cat/en/Ambits-tematics/Ortofoto"
},
"attribution": {
"text": "© Institut Cartogràfic i Geològic de Catalunya",
"url": "https://www.icgc.cat/"
},
"status": "community",
"reviewed": "2026-10-23"
}
-48
View File
@@ -1,48 +0,0 @@
{
"id": "lu-ortho-latest",
"kind": "tiles",
"family": "imagery",
"title": "Orthophoto officielle du Luxembourg",
"provider": "ACT Luxembourg / geoportail.lu",
"description": "Aerial orthophotos: 100% of Luxembourg (~2,586 km²).",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["LU"],
"bbox": [5.73, 49.44, 6.53, 50.19]
},
"source": {
"format": "xyz",
"url": "https://wmts1.geoportail.lu/opendata/wmts/ortho_latest/GLOBAL_WEBMERCATOR_4_V3/{z}/{x}/{y}.jpeg",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 8,
"maxZoom": 20,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "coverage",
"aerial": true,
"noDataColor": "#ffffff"
},
"imagery": {
"type": "ortho",
"resolution": "5–20 cm",
"resolutionM": 0.05,
"trueOrtho": false,
"vintage": "2023–present",
"updateCycle": "Annual (spring flight)",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "CC0 1.0 (Licence ouverte Luxembourg)",
"url": "https://data.public.lu/en/datasets/orthophoto-officelle-du-grand-duche-de-luxembourg-edition-2023/"
},
"attribution": {
"text": "Administration du cadastre et de la topographie, Luxembourg (CC0)",
"url": "https://data.public.lu/en/datasets/?q=orthophoto"
},
"status": "community",
"reviewed": "2026-10-23"
}
@@ -1,48 +0,0 @@
{
"id": "mn-statewide-imagery",
"kind": "tiles",
"family": "imagery",
"title": "Minnesota Statewide Imagery",
"provider": "MnGeo",
"description": "Aerial orthophotos: Statewide coverage of Minnesota.",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["US"],
"bbox": [-97.24, 43.5, -89.49, 49.38]
},
"source": {
"format": "bbox",
"url": "https://imageserver.gisdata.mn.gov/cgi-bin/wms?service=WMS&request=GetMap&version=1.1.1&layers=fsa&styles=&srs=EPSG:3857&bbox={bbox-epsg-3857}&width=256&height=256&format=image/jpeg",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 6,
"maxZoom": 19,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "bbox",
"aerial": true,
"noDataColor": "#ffffff"
},
"imagery": {
"type": "ortho",
"resolution": "60 cm (FSA/NAIP)",
"resolutionM": 0.6,
"trueOrtho": false,
"vintage": "2015–present",
"updateCycle": "NAIP 2-year cycle",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "Public domain / open — MnGeo terms",
"url": "https://www.mngeo.state.mn.us/"
},
"attribution": {
"text": "MnGeo / State of Minnesota",
"url": "https://www.mngeo.state.mn.us/chouse/airphoto/"
},
"status": "community",
"reviewed": "2026-10-23"
}
@@ -1,30 +0,0 @@
{
"id": "openseamap-seamarks",
"kind": "tiles",
"family": "infrastructure",
"title": "Seamarks (OpenSeaMap)",
"provider": "OpenSeaMap",
"description": "Buoys, beacons, lights and harbour marks from OpenSeaMap, drawn over any map. Useful with AIS vessels.",
"icon": "⚓",
"maintainer": "github:asturksever",
"coverage": { "global": true },
"source": {
"format": "xyz",
"url": "https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 6,
"maxZoom": 18
},
"display": { "opacity": 1 },
"licence": {
"name": "CC BY-SA 2.0; data © OpenStreetMap contributors (ODbL)",
"url": "https://openseamap.org/index.php?id=imprint&L=1"
},
"attribution": {
"text": "© OpenSeaMap contributors, CC BY-SA; data © OpenStreetMap contributors",
"url": "https://openseamap.org/"
},
"status": "community",
"reviewed": "2026-10-21"
}
@@ -1,48 +0,0 @@
{
"id": "pdok-aerial-netherlands",
"kind": "tiles",
"family": "imagery",
"title": "Netherlands aerial photos (PDOK)",
"provider": "PDOK",
"description": "The latest high-resolution aerial photography of the whole Netherlands, from Beeldmateriaal Nederland.",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["NL"],
"bbox": [3.2, 50.7, 7.3, 53.6]
},
"source": {
"format": "xyz",
"url": "https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0/Actueel_orthoHR/EPSG:3857/{z}/{x}/{y}.jpeg",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 6,
"maxZoom": 19,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "coverage",
"aerial": true,
"noDataColor": "#ffffff"
},
"imagery": {
"type": "ortho",
"resolution": "7.5–8 cm",
"resolutionM": 0.08,
"trueOrtho": false,
"vintage": "2023–present",
"updateCycle": "Annual",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "CC BY 4.0",
"url": "https://www.pdok.nl/introductie/-/article/luchtfoto-pdok"
},
"attribution": {
"text": "Beeldmateriaal Nederland via PDOK",
"url": "https://www.pdok.nl/"
},
"status": "community",
"reviewed": "2026-10-23"
}
-48
View File
@@ -1,48 +0,0 @@
{
"id": "vlaanderen-omw",
"kind": "tiles",
"family": "imagery",
"title": "Orthofotomozaïek Vlaanderen (winter)",
"provider": "Digitaal Vlaanderen",
"description": "Aerial orthophotos: Flanders + Brussels (~13,600 km²), flown yearly.",
"icon": "▣",
"maintainer": "github:asturksever",
"coverage": {
"countries": ["BE"],
"bbox": [2.54, 50.68, 5.92, 51.51]
},
"source": {
"format": "bbox",
"url": "https://geo.api.vlaanderen.be/OMWRGBMRVL/wms?service=WMS&request=GetMap&version=1.3.0&layers=Ortho&styles=&crs=EPSG:3857&bbox={bbox-epsg-3857}&width=256&height=256&format=image/png",
"fetch": "browser-direct",
"cacheSeconds": 86400,
"minZoom": 8,
"maxZoom": 20,
"bounded": true
},
"display": {
"opacity": 1,
"outline": "bbox",
"aerial": true,
"noDataColor": "#ffffff"
},
"imagery": {
"type": "ortho",
"resolution": "10 cm (winter) / 25 cm (summer)",
"resolutionM": 0.1,
"trueOrtho": false,
"vintage": "2022–present",
"updateCycle": "Annual",
"registry": "https://imagery-registry.netlify.app/"
},
"licence": {
"name": "Vlaanderen model licence for free reuse",
"url": "https://www.vlaanderen.be/digitaal-vlaanderen/onze-oplossingen/orthofotomozaieken"
},
"attribution": {
"text": "© Digitaal Vlaanderen",
"url": "https://download.vlaanderen.be/"
},
"status": "community",
"reviewed": "2026-10-23"
}
+89 -100
View File
@@ -3,104 +3,93 @@
["gvp-holocene-volcanoes", "01"],
["eia-power-plants", "02"],
["nasa-black-marble", "03"],
["openseamap-seamarks", "04"],
["wri-global-power-plants", "05"],
["nws-active-alerts", "06"],
["imf-portwatch-chokepoints", "07"],
["imf-portwatch-disruptions", "08"],
["noaa-tide-stations", "09"],
["fema-usa-structures", "0a"],
["epc-england-wales", "0b"],
["macrostrat-geology", "0c"],
["gbif-occurrence-density", "0d"],
["usgs-topo", "0e"],
["usgs-hydrography", "0f"],
["pdok-aerial-netherlands", "0g"],
["ign-orthophotos-france", "0h"],
["bkg-topplus-open", "0i"],
["gsi-japan-map", "0j"],
["gsi-japan-photo", "0k"],
["emodnet-bathymetry", "0l"],
["gpw-population-density", "0m"],
["jrc-surface-water", "0n"],
["gdacs-disaster-alerts", "0o"],
["ntad-national-bridges", "0p"],
["epa-superfund-sites", "0q"],
["epa-toxic-release-facilities", "0r"],
["swisstopo-swissimage", "0s"],
["ak-statewide-imagery", "0t"],
["ar-statewide-imagery", "0u"],
["az-statewide-imagery", "0v"],
["bangor-me", "0w"],
["basemap-at-orthofoto", "0x"],
["bayern-dop40", "0y"],
["bismarck-mandan-nd", "0z"],
["ct-statewide-imagery", "10"],
["dakota-county-mn", "11"],
["dc-statewide-imagery", "12"],
["de-statewide-imagery", "13"],
["ee-maa-amet-ortofoto", "14"],
["geneva-sitg-ortho", "15"],
["grand-forks-nd", "16"],
["ia-statewide-imagery", "17"],
["icgc-orto-catalunya", "18"],
["id-statewide-imagery", "19"],
["il-statewide-imagery", "1a"],
["in-statewide-imagery", "1b"],
["ks-statewide-imagery", "1c"],
["ky-statewide-imagery", "1d"],
["lake-county-in", "1e"],
["lawrence-ks", "1f"],
["lee-county-fl", "1g"],
["loudoun-county-va", "1h"],
["louisville-lojic-ky", "1i"],
["lu-ortho-latest", "1j"],
["ma-statewide-imagery", "1k"],
["maris-ms", "1l"],
["md-statewide-imagery", "1m"],
["me-statewide-imagery", "1n"],
["mi-statewide-imagery", "1o"],
["mn-statewide-imagery", "1p"],
["mountain-village-co", "1q"],
["ms-statewide-imagery", "1r"],
["mt-statewide-imagery", "1s"],
["naip", "1t"],
["nc-statewide-imagery", "1u"],
["nctcog-tx", "1v"],
["nd-statewide-imagery", "1w"],
["new-orleans-rpc-la", "1x"],
["nh-statewide-imagery", "1y"],
["nj-statewide-imagery", "1z"],
["nrw-dop", "20"],
["nsw-imagery", "21"],
["nwa-benton-washington-ar", "22"],
["ny-statewide-imagery", "23"],
["oakland-county-mi", "24"],
["oh-statewide-imagery", "25"],
["or-statewide-imagery", "26"],
["pa-statewide-imagery", "27"],
["pl-ortofotomapa", "28"],
["pnoa-ma", "29"],
["portland-metro-or", "2a"],
["pt-dgt-ortos", "2b"],
["ri-statewide-imagery", "2c"],
["tx-statewide-imagery", "2d"],
["union-county-oh", "2e"],
["va-statewide-imagery", "2f"],
["vlaanderen-omw", "2g"],
["vt-statewide-imagery", "2h"],
["wallonie-ortho", "2i"],
["wi-statewide-imagery", "2j"],
["wv-statewide-imagery", "2k"],
["kartverket-admin-units", "2l"],
["kartverket-cadastre", "2m"],
["kartverket-depth", "2n"],
["kartverket-hillshade", "2o"],
["kartverket-nautical-charts", "2p"],
["kartverket-terrain-relief", "2q"],
["kartverket-topo-grey", "2r"],
["kartverket-topo", "2s"],
["kartverket-toporaster", "2t"],
["mapterhorn-terrain", "2u"],
["amsterdam-traffic-cameras", "2v"]
["wri-global-power-plants", "04"],
["nws-active-alerts", "05"],
["imf-portwatch-chokepoints", "06"],
["imf-portwatch-disruptions", "07"],
["noaa-tide-stations", "08"],
["fema-usa-structures", "09"],
["epc-england-wales", "0a"],
["macrostrat-geology", "0b"],
["gbif-occurrence-density", "0c"],
["usgs-topo", "0d"],
["usgs-hydrography", "0e"],
["ign-orthophotos-france", "0f"],
["bkg-topplus-open", "0g"],
["gsi-japan-map", "0h"],
["gsi-japan-photo", "0i"],
["jrc-surface-water", "0j"],
["gdacs-disaster-alerts", "0k"],
["ntad-national-bridges", "0l"],
["epa-superfund-sites", "0m"],
["epa-toxic-release-facilities", "0n"],
["swisstopo-swissimage", "0o"],
["ak-statewide-imagery", "0p"],
["ar-statewide-imagery", "0q"],
["az-statewide-imagery", "0r"],
["bayern-dop40", "0s"],
["bismarck-mandan-nd", "0t"],
["ct-statewide-imagery", "0u"],
["dakota-county-mn", "0v"],
["dc-statewide-imagery", "0w"],
["de-statewide-imagery", "0x"],
["ee-maa-amet-ortofoto", "0y"],
["grand-forks-nd", "0z"],
["ia-statewide-imagery", "10"],
["id-statewide-imagery", "11"],
["il-statewide-imagery", "12"],
["in-statewide-imagery", "13"],
["ks-statewide-imagery", "14"],
["ky-statewide-imagery", "15"],
["lake-county-in", "16"],
["lawrence-ks", "17"],
["lee-county-fl", "18"],
["loudoun-county-va", "19"],
["louisville-lojic-ky", "1a"],
["ma-statewide-imagery", "1b"],
["maris-ms", "1c"],
["md-statewide-imagery", "1d"],
["me-statewide-imagery", "1e"],
["mi-statewide-imagery", "1f"],
["mountain-village-co", "1g"],
["ms-statewide-imagery", "1h"],
["mt-statewide-imagery", "1i"],
["naip", "1j"],
["nc-statewide-imagery", "1k"],
["nctcog-tx", "1l"],
["nd-statewide-imagery", "1m"],
["new-orleans-rpc-la", "1n"],
["nh-statewide-imagery", "1o"],
["nj-statewide-imagery", "1p"],
["nrw-dop", "1q"],
["nsw-imagery", "1r"],
["nwa-benton-washington-ar", "1s"],
["ny-statewide-imagery", "1t"],
["oakland-county-mi", "1u"],
["oh-statewide-imagery", "1v"],
["or-statewide-imagery", "1w"],
["pa-statewide-imagery", "1x"],
["pl-ortofotomapa", "1y"],
["pnoa-ma", "1z"],
["portland-metro-or", "20"],
["pt-dgt-ortos", "21"],
["ri-statewide-imagery", "22"],
["tx-statewide-imagery", "23"],
["union-county-oh", "24"],
["va-statewide-imagery", "25"],
["vt-statewide-imagery", "26"],
["wallonie-ortho", "27"],
["wi-statewide-imagery", "28"],
["wv-statewide-imagery", "29"],
["kartverket-admin-units", "2a"],
["kartverket-cadastre", "2b"],
["kartverket-depth", "2c"],
["kartverket-hillshade", "2d"],
["kartverket-nautical-charts", "2e"],
["kartverket-terrain-relief", "2f"],
["kartverket-topo-grey", "2g"],
["kartverket-topo", "2h"],
["kartverket-toporaster", "2i"],
["mapterhorn-terrain", "2j"],
["amsterdam-traffic-cameras", "2k"]
]
+5 -1
View File
@@ -26,7 +26,11 @@ const features = [
];
test('coverage outlines keep only the parts inside the declared area', () => {
const rings = outlineRings(features, libraryEntry('pdok-aerial-netherlands'));
const netherlands = {
coverage: { countries: ['NL'], bbox: [3.2, 50.7, 7.3, 53.6] },
display: { outline: 'coverage' },
};
const rings = outlineRings(features, netherlands);
assert.equal(rings.length, 1);
assert.equal(rings[0][0][0], 4);
});
+10 -10
View File
@@ -35,7 +35,7 @@ test('aerial imagery drapes above every other imagery layer', async () => {
tileProvider('https://base.example.org/{z}/{x}/{y}.png'),
);
const photos = createLibraryTileLayer(
entryWithoutOutline('pdok-aerial-netherlands'),
entryWithoutOutline('ign-orthophotos-france'),
{ source, cesium: Cesium },
);
await photos.init(viewer);
@@ -43,27 +43,27 @@ test('aerial imagery drapes above every other imagery layer', async () => {
const top = () => collection.get(collection.length - 1);
assert.equal(collection.length, 2);
assert.notEqual(top(), base);
const pdok = top();
const ign = top();
// A drape added later (weather, another library basemap) goes under it.
const weather = collection.addImageryProvider(
tileProvider('https://weather.example.org/{z}/{x}/{y}.png'),
);
assert.equal(top(), pdok);
assert.equal(top(), ign);
assert.equal(collection.indexOf(weather), 1);
// PDOK's white "no imagery here" fill is drawn transparent, and its tiles
// are requested only inside the Netherlands bbox.
assert.ok(pdok.colorToAlpha.equals(Cesium.Color.WHITE));
// IGN's dark blue "no imagery here" fill is drawn transparent, and its
// tiles are requested only inside the France bbox.
assert.ok(
pdok.colorToAlphaThreshold > 0 && pdok.colorToAlphaThreshold < 0.05,
ign.colorToAlpha.equals(Cesium.Color.fromCssColorString('#0a3b59')),
);
const west = Cesium.Math.toDegrees(pdok.imageryProvider.rectangle.west);
assert.ok(Math.abs(west - 3.2) < 1e-9);
assert.ok(ign.colorToAlphaThreshold > 0 && ign.colorToAlphaThreshold < 0.05);
const west = Cesium.Math.toDegrees(ign.imageryProvider.rectangle.west);
assert.ok(Math.abs(west - -5.5) < 1e-9);
// Off: the drape and its listener are gone, so later layers stay put.
await photos.disable();
assert.equal(collection.contains(pdok), false);
assert.equal(collection.contains(ign), false);
const later = collection.addImageryProvider(
tileProvider('https://later.example.org/{z}/{x}/{y}.png'),
);
+1 -1
View File
@@ -132,7 +132,7 @@ test('the row legend labels each colour and counts what is in view', async () =>
);
// A tile layer's static scale.
assert.equal(
colorByLegend(libraryEntry('gpw-population-density').display).length,
colorByLegend(libraryEntry('gbif-occurrence-density').display).length,
6,
);
assert.deepEqual(
+13 -1
View File
@@ -135,12 +135,24 @@ test('the stat tiles summarise the library in words and compact numbers', () =>
test('an imagery card lists type, resolution, years flown and refresh', async () => {
const { imagerySpecs } = await import('./libraryBrowser.js');
const specs = imagerySpecs(libraryEntry('geneva-sitg-ortho'));
const specs = imagerySpecs({
imagery: {
type: 'ortho',
trueOrtho: true,
resolution: '5 cm',
vintage: '2024',
updateCycle: 'Annual',
},
});
assert.deepEqual(
specs.map(({ label }) => label),
['Type', 'Resolution', 'Flown', 'Updates'],
);
assert.equal(specs[0].value, 'True orthophoto');
assert.equal(specs[1].value, '5 cm');
assert.equal(
imagerySpecs(libraryEntry('ign-orthophotos-france'))[0].value,
'Orthophoto',
);
assert.deepEqual(imagerySpecs(libraryEntry('eia-power-plants')), []);
});