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

-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')), []);
});