OpenStreetMap Ireland identified a need for a map of Ireland showing place names in the Irish language (Gaeilge) and to encourage more Irish language additions to OpenStreetMap (OSM). Some other mapping services show only town names in Irish when Irish is set as the preferred language in the web browser; however we wanted a map that would ‘by default’ show towns, streets and other places using the Irish place name.
We named this service ‘léarscáil’ which translates to English as ‘map’. The service is available at learscail.openstreetmap.ie Any streets that do not have a tag for name:ga within OpenStreetMap are left blank on léarscáil – this is by-design – to encourage everyone to fill-in-the-blanks. We use official street name signs as the source for the translations.
Technical
We made use of several open technologies to solve the problem including:
- OpenStreetMap : OSM as a data source contains the map elements and names contributed by volunteers. This shows the power of OSM, as big companies are rarely interested in ‘edge cases’ such as minority languages and those with accessibility needs.
- OpenMapTiles : This project allows us to create vector tiles from the data in OSM
- Tileserver GL : This project allows us to serve the generated tiles on-demand
In addition we made use of some other technologies:
- Github : We stored the build code in a Github repo with a Github Action performing a regular build of new tiles
- Backblaze: We used the free-tier on Backblaze to store the tiles generated by the Github action. These are then pulled from Backblaze to the learscail web server.
OpenMapTiles
OpenMapTiles is a project to “generate your own vector tiles from OpenStreetMap” so you can “host the maps on your own server”. The OpenMapTiles github repo explains the steps to generate your own vector tiles. We amended these steps with customisations for Ireland, and the steps are explained in our repo here. The main change was to the mapping.yaml file which we amended to use the name:ga tag for the text-field of most map elements.
Since OSM is updated regularly we needed to automate the generation of the map tiles so our map would show the latest information. To automate this we added a ‘Github Action’ pipeline to the repo that runs the build-tiles.sh script every few days to re-build the vector tiles and copy the generated tiles to the cloud bucket (backblaze).
Tileserver-GL
At OpenStreetMap Ireland we host our website in an Azure Virtual Machine. On that server we used Docker and the Tileserver GL container image to serve the mbtiles file generated from the pipeline with a very simple docker-compose.yml file : version: '3' services: learscail: image: maptiler/tileserver-gl container_name: tileserver-gl restart: unless-stopped ports: - "8080:8080" volumes: - .:/data Since the server was already running Nginx we added an nginx config file to proxy requests from learscail.openstreetmap.ie to the docker container.
There is a cron job on the server that regularly checks the cloud bucket for newly generated tiles. ### Web Interface
We added some basic map controls to the HTML for zooming, searching and switching to satellite view. Costs
So how much does it cost to run this service? The answer may surprise you, as we don’t incur any costs. Due in no small part to the generosity of the tech community:
- Backblaze: have a generous 10GB free tier of object storage
- Github: repos are free and actions/pipelines are free in
- OpenMapTiles: This project is open and free and supported by the MapTiler company
- Tileserver-GL: This is also a open/free project
- Web Hosting: We are fortunate to have web space made available to our group as we are a non-profit
Future Improvements
To enhance the service we would like to:
- engage with the Conradh na Gaeilge to encourage more additions to OSM in Irish
- add pop-ups to show info/tags for selected map elements
- create a mobile version
- facilitate directions
- satellite view with place names in Irish
- street view via Mapillary or Mapilio