NL:OpenHistoricalMap/Reuse

From OpenStreetMap Wiki
Jump to navigation Jump to search

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 vector­tegel 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 Delen 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 voorkeurs­kaartbibliotheek 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 content­management­systemen en website­frameworks 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:

Noten en referenties

  1. Mapbox GL Leaflet is ook beschikbaar, maar is alleen compatibel met leaflet-ohm-timeslider-v2, niet met maplibre-gl-dates.
  2. Spacedman (August 1, 2024). “Downloading administrative boundaries from OpenHistoricalMap”. Geographic Information Systems Stack Exchange. Retrieved March 1, 2025. 

Zie ook