NL:OpenHistoricalMap/Reuse
Als open data-project moedigt OpenHistoricalMap je aan om de gegevens te hergebruiken in je eigen onderzoek en creatieve projecten.
Gegevens verwerken
Vectortegels en stijlbladen
Je kunt een kaart op basis van OpenHistoricalMap insluiten op je website of in je native applicatie met behulp van Mapbox GL of MapLibre.
De stijlbladen op de OpenHistoricalMap-website voldoen aan de Mapbox Style Specification en de MapLibre Style Specification, zodat je je kaart direct op een van deze stijlen kunt instellen:
Deze stijlen zijn ook beschikbaar via de @openhistoricalmap/map-styles NPM-module.
Als je liever je eigen stijl schrijft, kun je deze laten verwijzen naar de vectortegels van OpenHistoricalMap met behulp van het volgende URL-sjabloon:
https://vtiles.openhistoricalmap.org/maps/osm/{z}/{x}/{y}.pbf
De indeling van elke vectortegel is gedefinieerd in een reeks TOML-bestanden. Je kunt de inhoud van de tegels bekijken met deze Tegola-inspector. De tegels bevatten gelokaliseerde namen in elke taal met 50 of meer vermeldingen van name:*=*
, die worden opgesomd in dit JSON-bestand.
Of je nu een bestaande stijl gebruikt of je eigen maakt, je zult de objecten moeten filteren op de eigenschappen start_decdate
en end_decdate
, die overeenkomen met de start_date=*
- en end_date=*
-tags omgezet naar decimale jaartallen.
QGIS
- Hoofdartikel: OpenHistoricalMap/QGIS
Voor meer geavanceerde visualisaties die desktopverwerking vereisen, kan OpenHistoricalMap/QGIS direct de tegels en stijlbladen van OpenHistoricalMap laden, of het kan de Overpass API bevragen voor meer selectieve gegevensverwerking.
Een kaart weergeven
Er zijn verschillende manieren om een interactieve kaart op een webpagina weer te geven.
Insluiten
De eenvoudigste methode is om naar de OHM-startpagina te gaan, te navigeren naar de plaats en tijd van interesse, en op de knop aan de rechterkant van de kaart te klikken. In het paneel Delen wijzig je de indeling van "Link" naar "HTML" en kopieer je dan de opgegeven HTML-code.
Door deze manier van insluiten wordt embed.openhistoricalmap.org in een iframe geladen. De broncode hiervoor is ook beschikbaar in de repository openhistoricalmap-embed.
MapLibre GL JS
MapLibre GL JS is de voorkeurskaartbibliotheek aan de clientzijde voor het web bij OHM. Je kunt een van de officiële stijlbladen gebruiken of je eigen ontwerpen in een tool zoals Maputnik. Maak een maplibregl.Map
-object met de URL naar dit stijlblad:
const map = new maplibregl.Map({
container: 'map',
style: 'https://www.openhistoricalmap.org/map-styles/main/main.json',
attributionControl: {
customAttribution: '<a href="https://www.openhistoricalmap.org/">OpenHistoricalMap</a>',
},
});
Je moet ook de plugin maplibre-gl-dates installeren en configureren om de kaart op datum te filteren, zodat anachronismen worden voorkomen:
map.once('styledata', function (event) {
map.filterByDate('2013-04-14');
});
Om Arabische en Hebreeuwse tekst correct weer te geven, installeer je de plugin mapbox-gl-rtl-text. Als je de labels wilt lokaliseren naar de voorkeurstaal van de gebruiker, zoals op de insluitbare kaart, installeer dan ook de plugin mapbox-gl-language.
Vermeld alsjeblieft de bijdragers van OpenHistoricalMap op of nabij de kaart. Je kunt eenvoudig bronvermelding toevoegen door de attribution
-optie in te stellen bij het initialiseren van het L.maplibreGL
-object.
MapLibre Native
MapLibre biedt compatibele bibliotheken voor Android en iOS. Een implementatie voor datumfiltering is beschikbaar in Kotlin voor Android:
mapView.getMapAsync {
it.setStyle("https://www.openhistoricalmap.org/map-styles/main/main.json") { style ->
val localDate = LocalDate.of(2013, Month.APRIL, 14)
style.filterLayersByDate(localDate)
}
}
Mapbox GL JS
Omdat MapLibre GL JS is geforkt van Mapbox GL JS, bieden beide bibliotheken grotendeels gelijkwaardige ondersteuning voor OHM. We onderhouden Mapbox-ondersteuning echter alleen op basis van best effort.
Om een OHM-gebaseerde kaart in te stellen, volg je dezelfde stappen als in #MapLibre GL JS, maar maak je een mapboxgl.Map
-object in plaats van een maplibregl.Map
-object. De plugin maplibre-gl-dates is alleen compatibel met Mapbox GL JS als je deze op de ouderwetse manier installeert met een <script>
-tag, en niet als je hem via een pakketbeheerder installeert.
Let op dat Mapbox Studio momenteel geen ondersteuning biedt voor externe tegelverzamelingen zoals die van OHM. [1] Als je je stijl wilt aanpassen, kun je een alternatieve stijlblad-editor gebruiken, de ruwe stijl-JSON handmatig aanpassen, of de ingebouwde runtime styling-API van GL JS gebruiken.
Leaflet
Veel contentmanagementsystemen en websiteframeworks integreren Leaflet, een bibliotheek voor het renderen van rasterkaarten. Aangezien we geen rastertegellaag publiceren, moet je nog steeds MapLibre GL JS installeren, evenals de plugin MapLibre GL Leaflet om de twee bibliotheken te koppelen:[1]
const gl = L.maplibreGL({
style: 'https://www.openhistoricalmap.org/map-styles/main/main.json',
attributionControl: '<a href="https://www.openhistoricalmap.org/">OpenHistoricalMap</a>'
}).addTo(map);
Om anachronismen te voorkomen, moet je de kaart op datum filteren. De plugin OpenHistoricalMap Timeslider verzorgt de filterstap en biedt een gebruiksvriendelijke interface voor het aanpassen van het jaar waarop gefilterd wordt. Als alternatief kun je de plugin maplibre-gl-dates installeren en configureren en je eigen bediening voor datumkeuze bouwen:
const maplibreMap = gl.getMaplibreMap();
maplibreMap.once('styledata', function (event) {
maplibreMap.filterByDate('2013-04-14');
});
OSM-OHM is een Leaflet-widget die specifieke OHM-ways of -relaties bovenop een OpenStreetMap-basemap weergeeft.
Folium
Gebruik de plugin VectorGridProtobuf van Folium om OHM-tegels weer te geven:
from folium.plugins import VectorGridProtobuf
import folium
from datetime import datetime
# Datum omzetten naar decimaal jaar
d = datetime(2013, 4, 14)
next_new_year = datetime(d.year + 1, 1, 1)
last_new_year = datetime(d.year, 1, 1)
year_len = next_new_year.toordinal() - last_new_year.toordinal()
dec_date = int(d.year) + (d.toordinal() - last_new_year.toordinal()) / year_len
options = '''{
"vectorTileLayerStyles": {
"land_ohm_lines": function(f) {
if ((!f.start_decdate || f.start_decdate <= {date}) && (!f.end_decdate || f.end_decdate >= {date})) {
return {
"weight": 1,
"fillColor": "pink",
"color": "pink",
"fillOpacity": 0.2,
"opacity": 0.4
};
}
}
}
}'''.format(date=dec_date)
m = folium.Map(tiles=None, location=[51.5073219, -0.1276474], zoom_start=14)
url = "https://vtiles.openhistoricalmap.org/maps/osm/{z}/{x}/{y}.pbf"
VectorGridProtobuf(url, "folium_layer_name", options).add_to(m)
m
Voor meer informatie raadpleeg je "Vector tiles using VectorGridProtobuf" in de documentatie van Folium.
Gegevens opvragen
Overpass
- Hoofdartikel: OpenHistoricalMap/Overpass
De Overpass API-instantie van OpenHistoricalMap maakt het mogelijk om de database te bevragen naar elements die aan zeer specifieke criteria voldoen. Zo kun je bijvoorbeeld zoeken naar bomen die in een bepaalde stad zijn geplant tijdens een specifieke periode in de buurt van een bepaald type gebouw – uiteraard afhankelijk van of deze gegevens zijn gemapt. Je kunt de Overpass API van OpenHistoricalMap rechtstreeks via HTTPS bevragen of met Overpass turbo of Overpass Ultra in een webbrowser.
QLever
- Hoofdartikel: OpenHistoricalMap/QLever
QLever biedt een endpoint voor het snel bevragen van de wereldwijde OpenHistoricalMap-dataset. Net als bij de Overpass API kun je zoeken op willekeurige, specifieke criteria; maar hierbij gebruik je de standaardquerytaal SPARQL. SPARQL-query’s kunnen gecombineerd worden met tal van andere datasets, waaronder OpenStreetMap en Wikidata. QLever kan resultaten weergeven als tabel, kaart of heatmap.
Nominatim
De Nominatim-instantie van OpenHistoricalMap laat je zoeken naar objecten op naam of op een beperkte selectie van andere zoektermen. De API-endpoint bevindt zich op:
https://nominatim.openhistoricalmap.org/
Een webinterface biedt extra informatie die nuttig kan zijn bij het diagnosticeren van onverwachte resultaten.
Planet
Voor verwerking van grote hoeveelheden gegevens is de volledige inhoud van de OpenHistoricalMap-database beschikbaar in planet.osm-formaat op Amazon S3. Blader door de beschikbare planet-bestanden. Elke dag wordt een nieuw planet-bestand gegenereerd met de huidige inhoud van de database. Wekelijks wordt er een vollediger planet-bestand gemaakt met de volledige revisiegeschiedenis van de database. Met de revisiegeschiedenis kun je wijzigingen in de database in de loop van de tijd volgen – niet te verwarren met veranderingen in de echte wereld.
Als je niet alle gegevens van elke plaats in de hele geschiedenis nodig hebt, overweeg dan om een deel van de database te extraheren via Overpass of de REST API. We hebben momenteel geen regionale extract-service, maar laat het ons weten als je zo’n service kunt aanbieden.
Torrent-magnetlinks
REST API
De belangrijkste REST API van OpenHistoricalMap stelt je in staat om ruwe gegevens in OSM XML-formaat te uploaden en te downloaden. Dit is meestal alleen nuttig voor ontwikkelaars van OpenHistoricalMap-software. Maar als je een node-, way- of relation-ID hebt en alleen de ruwe tags wilt opvragen, is dit de snelste en meest actuele methode. De API-endpoint bevindt zich op:
https://www.openhistoricalmap.org/api/0.6/
De pagina van elk element bevat een Download XML-link naar de ruwe elementgegevens in OSM XML-formaat, dat compatibel is met QGIS. Je kunt bijvoorbeeld node 2.124.538.186 downloaden op:
https://www.openhistoricalmap.org/api/0.6/node/2124538186
Voor relaties, zoals grens- en chronologie-relaties, gebruik je de methode /full om de relatie en zijn leden recursief te downloaden.[2] Je kunt bijvoorbeeld relatie 2.749.168 volledig downloaden op:
https://www.openhistoricalmap.org/api/0.6/relation/2749168/full
Juridische overwegingen
In het algemeen vallen de gegevens van OpenHistoricalMap onder het publieke domein via een CC0-afstandsverklaring. Vermeld als hoffelijkheid waar nodig de bijdragers van OpenHistoricalMap. Sommige afzonderlijke objecten kunnen aanvullende wettelijke vereisten voor naamsvermelding hebben.
Voorbeelden
Ter inspiratie volgen hier enkele voorbeelden van mashups die gebruikmaken van gegevens van OpenHistoricalMap:
- Gramps Web
- OSM-Wikidata Map Framework
- GlobStory.it / HistoryAI
- Doublemap (klik op het boekpictogram rechtsboven; zie broncode)
- Richard Welty’s Ghost Tracks-prototype
- Mapy židovského osídlení 1857–1930 – interactieve kaart van de historische Joodse bevolking van verschillende Tsjechische steden door Daniel Baránek
- The Mennonite Map – nederzettingen en migraties, gevisualiseerd op een OHM-basemap met een aangepaste tijdschuif
- Mashup van OpenStreetMap (Shortbread) vectortegels en historische spoorwegen van OpenHistoricalMap
Noten en referenties
- ↑ Mapbox GL Leaflet is ook beschikbaar, maar is alleen compatibel met leaflet-ohm-timeslider-v2, niet met maplibre-gl-dates.
- ↑ Spacedman (August 1, 2024). “Downloading administrative boundaries from OpenHistoricalMap”. Geographic Information Systems Stack Exchange. Retrieved March 1, 2025.