{"id":13426066,"url":"https://github.com/rapideditor/imagery-index","last_synced_at":"2026-05-28T01:12:15.421Z","repository":{"id":38347071,"uuid":"242800420","full_name":"rapideditor/imagery-index","owner":"rapideditor","description":" 🛰 An index of aerial and satellite imagery useful for mapping","archived":false,"fork":false,"pushed_at":"2025-11-04T21:04:49.000Z","size":15725,"stargazers_count":29,"open_issues_count":9,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-15T00:57:09.815Z","etag":null,"topics":["aerial-imagery","imagery","satellite-imagery"],"latest_commit_sha":null,"homepage":"https://ideditor.github.io/imagery-index/index.html","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rapideditor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-24T17:36:00.000Z","updated_at":"2025-12-21T21:47:39.000Z","dependencies_parsed_at":"2023-07-17T15:00:22.288Z","dependency_job_id":null,"html_url":"https://github.com/rapideditor/imagery-index","commit_stats":null,"previous_names":["ideditor/imagery-index"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/rapideditor/imagery-index","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapideditor%2Fimagery-index","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapideditor%2Fimagery-index/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapideditor%2Fimagery-index/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapideditor%2Fimagery-index/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rapideditor","download_url":"https://codeload.github.com/rapideditor/imagery-index/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapideditor%2Fimagery-index/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33589876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aerial-imagery","imagery","satellite-imagery"],"created_at":"2024-07-31T00:01:25.570Z","updated_at":"2026-05-28T01:12:15.416Z","avatar_url":"https://github.com/rapideditor.png","language":"JavaScript","funding_links":[],"categories":["Simultaneous Localization and Mapping","JavaScript"],"sub_categories":["Vector Map"],"readme":"[![build](https://github.com/rapideditor/imagery-index/workflows/build/badge.svg)](https://github.com/rapideditor/imagery-index/actions?query=workflow%3A%22build%22)\n[![npm version](https://badge.fury.io/js/%40rapideditor%2Fimagery-index.svg)](https://badge.fury.io/js/%40rapideditor%2Fimagery-index)\n\n# imagery-index\n\n🛰 An index of aerial and satellite imagery useful for mapping.\n\nPlay with the data here: https://rapideditor.github.io/imagery-index/\n\n\n### About the index\n\n#### tl;dr\n\nTo add an imagery source to the index:\n\n* Add source `.json` files under the `sources/` folder\n  * Each file contains info about the imagery source: name, url template, license requirements\n  * Each file also contains info about which locations the imagery covers. The locations can be country or region codes, or custom `.geojson` files in the `features/*` folder.\n  * You can copy and change an existing file to get started.\n* Run `npm run build`\n  * This will check the files for errors and make them pretty.\n  * If you don't have Node installed, you can skip this step and we will do it for you.\n* If there are no errors, submit a pull request.\n\n👉 See [CONTRIBUTING.md](CONTRIBUTING.md) for full details about how to add an imagery source to this index.\n\n\n### Details\n\nThe goal of **imagery-index** is to collect public imagery sources useful for making maps.\n\nThis project evolved from a previous project called [editor-layer-index](https://github.com/osmlab/editor-layer-index). Thank you, editor-layer-index!\n\nTo avoid distributing redundant geojson data, imagery-index leverages several other projects:\n  * [country-coder](https://github.com/rapideditor/country-coder) - a dataset of the world's country and region borders.\n  * [location-conflation](https://github.com/rapideditor/location-conflation) - a library for defining complex geographic regions. Each `locationSet` may contain `include` and `exclude` regions.\n\nBefore: Include multiple redundant copies of a 5kb boundary of Slovakia\u003cbr/\u003e\nAfter: `\"locationSet\": {\"include\": [\"sk\"]}`\n\nBefore: Include 67kb outline of the contiguous United States\u003cbr/\u003e\nAfter: `\"locationSet\": {\"include\": [\"us\"], \"exclude\": [\"as\", \"um\", \"alaska_hawaii.geojson\"]}`\n\nThe space savings are significant:\n\nProject | Size\n------- | ----\nosmlab/editor-layer-index  | 4.0Mb minified `imagery.geojson`\n@rapideditor/imagery-index | 221kb features, 354kb sources (575kb total)\n\nIt's also much easier to contribute to and maintain the index.\n\nWhat's not included (yet):\n* historic scanned imagery from the United Kingdom.\n* sources that used `wmts` or `wms_endpoint` types.\n\n\n### Source files\n\nThe source files for imagery-index are stored in two kinds of files:\n\n* Under `sources/` there are `.json` files to describe the imagery sources\n* Under `features/` there are custom `.geojson` files\n\n👉 See [CONTRIBUTING.md](CONTRIBUTING.md) for full details about how to add an imagery source to this index.\n\n\n### Distributed Files\n\nSeveral files are published under `dist/`.  These are generated - do not edit them.\n\n* `dist/`\n  * `featureCollection.json` - A GeoJSON FeatureCollection containing only the custom features\n  * `sources.json` -  An Object containing all of the sources\n  * `combined.json` -  A \"join\" of every GeoJSON feature with the image sources stored in a `sources` property.\n  * `legacy/` - Compatible editor-layer-index style files\n    * `imagery.geojson` - A GeoJSON FeatureCollection of all imagery sources (including from country-coder)\n    * `imagery.json` - An Array of all imagery sources and their properties\n    * `imagery.xml` - A [JOSM-compatible](https://josm.openstreetmap.de/wiki/Maps#Documentation) imagery source XML file\n  * `images/` - many of the source logos can be found here\n\n🧐: \"Why use `.json` instead of `.geojson` as the file extension for generated GeoJSON files?\"\u003cbr/\u003e\n🤓: \"So you can `require` or `import` them as modules into other JavaScript code if you want.\"\u003cbr/\u003e\n🧐: \"Can you give me an example?\"\u003cbr/\u003e\n🤓: \"Great segue!...\"\u003cbr/\u003e\n\n\n### Examples\n\nLet's create a `LocationConflation` instance and seed it with the `featureCollection.json` containing all the custom geojsons from imagery-index.  We'll grab the imagery `sources.json` too.\n```js\nconst sources = require('@rapideditor/imagery-index/dist/sources.json');\nconst features = require('@rapideditor/imagery-index/dist/featureCollection.json');\n\nconst LocationConflation = require('@rapideditor/location-conflation');\nconst loco = new LocationConflation(features);\n```\n\nWe can use these to get info about the imagery sources.  A simple one might just be \"include all of Croatia\":\n```js\nlet source = sources['dgu-dof-2011'];\nsource.name;\n//  \"dgu.hr: Croatia 2011 Aerial imagery\"\nsource.locationSet;\n//  { include: [ 'hr' ] }\nlet feature = loco.resolveLocationSet(source.locationSet);\n```\n\n\u003cimg width=\"500px\" alt=\"Croatia Aerial Imagery 2011\" src=\"https://raw.githubusercontent.com/rapideditor/imagery-index/main/docs/images/croatia-2011.png\"/\u003e\n\nBut we're not limited only to country borders. For example in 2017, only portions of Croatia were imaged. The `locationSet` contains a custom .geojson to exclude a squarish region from the middle of the country:\n```js\nlet source = sources['dgu-dof-2017'];\nsource.name;\n//  \"dgu.hr: Croatia 2017 Aerial imagery\"\nsource.locationSet;\n//  {include: ['hr'], exclude: ['dgu-dof-exclude-2017.geojson']}\nlet feature = loco.resolveLocationSet(source.locationSet);\n```\n\n\u003cimg width=\"500px\" alt=\"Croatia Aerial Imagery 2017\" src=\"https://raw.githubusercontent.com/rapideditor/imagery-index/main/docs/images/croatia-2017.png\"/\u003e\n\nIn 2018, they imaged the rest of Croatia. A different .geojson file is used to exclude Croatia's outer regions:\n```js\nlet source = sources['dgu-dof-2018'];\nsource.name;\n//  \"dgu.hr: Croatia 2018 Aerial imagery\"\nsource.locationSet;\n//  {include: ['hr'], exclude: ['dgu-dof-exclude-2018.geojson']}\nlet feature = loco.resolveLocationSet(source.locationSet);\n```\n\n\u003cimg width=\"500px\" alt=\"Croatia Aerial Imagery 2018\" src=\"https://raw.githubusercontent.com/rapideditor/imagery-index/main/docs/images/croatia-2018.png\"/\u003e\n\n\n### Interactive Viewer\n\nTry out the interactive source viewer at https://rapideditor.github.io/imagery-index/ to inspect any of the imagery sources visually and to compare them to their boundary polygons. You can also test different `locationSet` values to see what they look like.\n\nThe viewer itself is just a single .html page using:\n  * A [Mapbox GL](https://docs.mapbox.com/mapbox-gl-js/api/) base layer, and\n  * The raster tile code from [iD](https://github.com/openstreetmap/iD) sitting on top of it.\n\nThe code for the is in [`docs/index.html`](https://github.com/rapideditor/imagery-index/blob/main/docs/index.html).\n\n🧐: \"Why use iD's `\u003cimg\u003e`-based slippy map code instead of adding a Mapbox GL raster layer?\"\u003cbr/\u003e\n😭: \"[CORS is why](https://github.com/rapideditor/imagery-index/issues/1). WebGL needs access to the pixels of an image in order to render it, and this can't happen unless the tile server has the necessary CORS header set. The good news is: if an imagery source works here, it will work in iD also.\"\u003cbr/\u003e\n\n\n### Prerequisites\n\n* [Node.js](https://nodejs.org/) version 10 or newer\n* [`git`](https://www.atlassian.com/git/tutorials/install-git/) for your platform\n\n\n### Installing\n\n* Clone this project, for example:\n  `git clone git@github.com:rapideditor/imagery-index.git`\n* `cd` into the project folder,\n* Run `npm install` to install dependencies\n\n\n### Building\n\nFor contributors:\n* `npm run build` - This will check the files and make them pretty\n\nFor maintainers:\n* `npm run test` - Same as \"build\" but also checks the source code\n* `npm run stats` - Generate some statistics about the file sizes\n* `npm run dist` - Generate distibuted and minified files under `dist/`\n* `npm run appbuild` - Generate the JavaScript bundle used by the preview site: https://rapideditor.github.io/imagery-index/\n\n\n### Licenses\n\nimagery-index data files are available under the [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/).\nSee the [LICENSE.md](LICENSE.md) file for more details.\n\nimagery-index build scripts are available separately under the [ISC License](https://opensource.org/licenses/ISC).\nSee the [scripts/LICENSE.md](scripts/LICENSE.md) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frapideditor%2Fimagery-index","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frapideditor%2Fimagery-index","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frapideditor%2Fimagery-index/lists"}