Vid något tillfälle förra veckan så såg jag begreppet ”OpenTileServer”, och funderade lite på vad det innebar.
En vanlig GeoServer genererar ju Tiles (typ), så vad är det det handlar om? I detta inlägg så går jag igenom vad jag hittat och beskriver hur man kan sätta upp en egen tile-server för specifika ändamål och laddar den med Open Street Map data. Och du… det är lättare och blir bättre än vad man kan förvänta!
Först och främst så kan man gå till http://opentileserver.org och läsa lite.
OpenTileServer är i princip ett skript som installerar tjänster och data på en server.
Jag tänker använda en virtuell Linux Ubuntu 14.04 server att testa med, skriptet är byggt just för en ren Ubuntu 14 installation. Eftersom det bara tar några minuter att installera en Linux Server (utan direkta tjänster) så är detta inga problem om man vill testa lite (hmm undrar hur lång tid det tar att installera en Windows Server…).
Först så skall skriptet hämtas hem, packas upp och göras körbart.
wget https://github.com/MapFig/opentileserver/archive/master.zip unzip master.zip chmod +x opentileserver-master/opentileserver.sh
Om du inte har unzip på servern så får du köra ett apt-get install för att fixa det. I instruktionen så står det att man skall redigera skriptfilen innan den körs för att ändra defaultlösenordet, men jag hoppar över det nu när jag testar. Default lösenordet är osm2015SgsjcK.
Skriptet har några alternativ när det skall köras:
./opentileserver.sh [web|ssl] [bright|carto] pbf_url
Man kan välja om det skall vara en http eller https server (web/ssl) och om man vill att kartan skall ha stil som OSM standard (bright) eller lite intensivare som carto db. Avslutningsvis så pekar man ut en sökväg till en ”pbf” fil. Jag väljer vanlig http, vanlig OSM och pekar helt enkelt på Sverige från http://download.geofabrik.de.
sudo ./opentileserver.sh web bright http://download.geofabrik.de/europe/sweden-latest.osm.pbf
Skriptet uppdaterar och uppgraderar datorn först så det behöver man inte göra, sedan hämtas och installeras alla servertjänster som behövs. Alla data laddas hem och trycks in i en databas. Stil tillämpas på data och webbserver startas.
När skriptet är klart så startas alla tjänster om och ett meddelande visas att allt är klart.
Nu låter detta som att det går fort. Det gör det inte! Det som tar tid är bearbetning av alla noder och kopplingar i OSM-databasen, vilket för Sveriges del är ganska många. Du kommer i alla fall hinna gå och sätta på en kanna kaffe innan det är klart.
När det är färdigt så pekar man en webbläsare på servern.
Här finns det ett exempel baserat på Leaflet och ett för OpenLayers. Det är just ”exempel” men det är väldigt bra sådana om man bara är ute efter en enkel webbkarta.
Det går sedan att använda dessa tiles i andra sammanhang också, men det är framför allt i webbkartor av denna typ de är avsedda.
När man börjar så är inga tiles renderade så det kan ta lite tid när man panorerar och zoomar i ett nytt område. Efter ett tag så är bilderna ”cachade” och då går det mycket fortare. Prestanda är sedan beroende av framför allt diskar och RAM minne på servern.
Bygger man en egen webbkarta så hänvisar man bara till:
server-IP/osm_tiles/${z}/${x}/${y}.png
Exempelsidorna finns på sökvägen /var/www/html/ på servern, och om man vill så kan man enkelt skapa sina egna sidor där också. Att lägga till Samba och dela ut katalogen i nätverk är inte särskilt krångligt om man skulle vilja det, men webbsidorna kan ju faktiskt ligga var som helst så servern behöver i princip inte röras efter det att den är färdiginstallerad.
Vill man fylla på med mer OSM data så finns det ett annat skript (reload-opentileserver.sh) som fungerar som det tidigare, men man tar bara med sökvägen till pbf-filen.
Detta var makalöst enkelt och jag kanske tyckte att skriptet tog lite tid när det höll på, men från att ha börjat med ingenting och ca 30 minuter senare ha hela Sverige i Open Street Map lokalt i en Tile Server färdigt att använda är väldigt imponerande! Är det stabilt i längden? Det vet jag inte. Vet jag vad jag gjort? Nix, men skriptet finns där och är inte så svårt att följa om man skulle vilja göra allt lite mera manuellt.
Om du alltid velat ha en egen Open Street Map Tile Server så är OpenTileServer precis vad du behöver.