73 lines
2.9 KiB
Markdown
73 lines
2.9 KiB
Markdown
# erfamap
|
|
|
|
Generate a map for https://www.ccc.de/regional from Wikidata, Nominatim and the doku.ccc.de Semantic MediaWiki data.
|
|
|
|
## TL;DR
|
|
|
|
```
|
|
pip3 install -r requirements.txt
|
|
export DOKU_CCC_DE_BASICAUTH=username:password
|
|
./generate_map.py --rename 'Frankfurt am Main' 'Frankfurt' --update-erfalist
|
|
ls -al out/
|
|
```
|
|
|
|
![Map as generated by this tool](map.readme.png)
|
|
|
|
## Installation
|
|
|
|
1. Create a Python virtualenv: `python3 -m virtualenv venv`
|
|
1. Enable the virtualenv: `. venv/bin/activate`
|
|
1. Install the dependencies: `pip install -r requirements.txt`
|
|
|
|
Instead of following these steps, you could also install the dependencies from your OS' package manager.
|
|
|
|
## Usage
|
|
|
|
For a quick test run, point the script at the cache.example directory:
|
|
|
|
```
|
|
./generate_map.py --cache-directory cache.example
|
|
```
|
|
|
|
This creates the following files in `out/`:
|
|
|
|
- `map.svg` is the map as a SVG image, with clickable links.
|
|
- `map.png` is the map as a PNG image.
|
|
- `imagemap.html` includes map.png, along with a HTML image map that makes the dots and labels clickable.
|
|
- `erfamap.html` includes map.svg, with map.png and an imagemap as fallback.
|
|
- `style/` contains the stylesheet and font.
|
|
|
|
**If the wrong font is used in the PNG, make sure the chosen font is installed on your system.** ([CairoSVG](https://cairosvg.org/) does not support the use of `@font-face` in style sheets.)
|
|
|
|
Usually you'll want to keep the border cache, but renew the Erfa & Chaostreff list from time to time:
|
|
|
|
```
|
|
./generate_map.py --update-erfalist
|
|
```
|
|
|
|
For this, you need to provide the HTTP Basic Auth credentials to doku.ccc.de via an environment variable:
|
|
|
|
```
|
|
export DOKU_CCC_DE_BASICAUTH=username:password
|
|
```
|
|
|
|
A run without cache takes some time as it fetches all data from their sources:
|
|
|
|
1. Get a list of countries in Europe and federal states in Germany from [Wikidata](https://wikidata.org).
|
|
1. Download all these countries' and states' border shapes from Wikimedia Commons.
|
|
1. Get a list of Erfas & Chaostreffs from the doku.ccc.de Semantic Mediawiki API.
|
|
1. Resolve all POIs' (Erfas & Chaostreffs) street addresses' to geocoordinates using [Nominatim](https://nominatim.org/), rate limited to 1 request per second as per Nominatims usage policy.
|
|
|
|
**Use the cache whenevery you don't need to update country borders or hackerspace locations. Otherwise, both Wikidata and Nominatim will start rate limiting pretty quickly.** (And caching is actually required by [Nominatim's acceptable use policy](https://operations.osmfoundation.org/policies/nominatim/)).
|
|
|
|
## License
|
|
|
|
Unless otherwise noted, the contents of this repository are licensed under the MIT License (See LICENSE).
|
|
|
|
### Fonts
|
|
|
|
The font contained in `style/concertone-regular.ttf` was created by Johan Kallas (johankallas@gmail.com) and is licensed unter the terms of the SIL Open Font License v1.10.
|
|
|
|
### Geoshape Data
|
|
|
|
The geoshape data contained in `cache.example` is in the public domain.
|