Tag Archive | webbkarta

QGIS Python Tile Server

Igår utlovade jag ett test av ett pythonskript som genererar en TMS server med Leaflet.JS från ett QGIS projekt. Skriptet är på runt 100 rader så om det fungerar är det ganska imponerande.

Läs mer…

Annonser

OpenGeo Suite – igen!

Det var ett tag sedan jag testade OpenGeo Suite från Boundless, så i detta inlägg är det dags igen. Det blir ett installationsinlägg, där alla steg redovisas med kommandon och exempel så att du själv kan följa med. Läs mer…

Nästan för enkelt…

Igår pratade jag om PNG vs JPG i tiles för webbkartor. I dag tänkte jag lite snabbt visa vad det är jag hållit på med och som rubriken antyder så var det faktiskt förvånansvärt enkelt.

Jag säger inte att vem som helst klarar av det, för du behöver skapliga kunskaper i java-skript, men det mesta kan man faktiskt googla sig till, och modifiera efter önskemål.

Skärmbild från 2015-11-07 17:38:22 Läs mer…

Leaflet 1.0 närmar sig

Det är väldigt många som använder sig av Leaflet för att visualisera kartor i webbläsare. Det är en liten, snabb, effektiv motor för att fixa det mesta man kan tänka sig för den här typen av uppgifter.

Version 0.7.3 släpptes 23 Maj 2014 och anses i huvudsak vara komplett, och även Vladimir Agafonkin som står bakom Leaflet tycker att versionen är mer eller mindre perfekt.

Version 1.0 har varit på gång ganska länge, men har av flera skäl dragit ut på tiden. Nu är det dock snart dags…

Skärmbild från 2015-07-12 12:04:25Det finns milstolpar för såväl beta1 som beta2 ute på GitHub, men det är några procent kvar innan vi får se en ”officiell” beta från Leaflet. Det går dock att testa koden genom att ladda hem den från GitHub redan nu.

Det finns massor med förbättringar och en del fixar till kända fel och om dessa går det att läsa i ändringsloggen.

Jag går inte in på några specifika detaljer eftersom då Leaflet inte skall vara fokus i webbapplikationen utan kartan, så är det inga dramatiska visuella förändringar att vänta. Använder du Leaflet mycket så kommer du dock att märka av många av dessa förändringar. Inte minst så kommer en del kod att behöva skrivas om för att fullt ut dra nytta av en del förbättringar.

En liten varning

En del förändringar är ganska påtagliga. Detta påverkar inte så mycket Leaflet i sig, men däremot så behöver många plug-in anpassas. Då Leaflet är tunn på inbyggd funktionalitet så är det många som förlitar sig på sådana plug-in för olika saker.

Innan du implementerar Leaflet 1.0 så måste du därför säkerställa att de plug-in du behöver fortfarande fungerar som det är tänkt.

Om du själv utvecklat plug-in för Leaflet så är det hög tid att se över om dessa är kompatibla med 1.0.

[EDIT]

Beta 1 släpptes under eftermiddagen onsdag Svensk tid.

http://leafletjs.com/2015/07/15/leaflet-1.0-beta1-released.html

Mapbender3

Då var det dags att titta på något för mig helt nytt, nämligen Mapbender.

Mapbender är ett php, javascript, xml-ramverk för att sätta upp webb-kartklienter med lite utökad funktionalitet utan att behöva koda javascript själv i exempelvis OpenLayers och Leaflet. Mapbender är dock baserad på OpenLayers för karthanteringen.

På hemsidan (http://www.mapbender.org) talar man även om mekanismer för autensiering med användare och grupper.

Mapbender3 är en ganska ny release som är baserad på Symfony2, JQuery och OpenLayers.

Screenshot from 2015-02-15 09:59:27

Det finns flera exempel på Internet med organisationer som använder Mapbender, exempelvis Geoportal.de (bilden ovan).

För att skapa en ”portal” eller tjänst så behöver man ”bara” logga in och välja ”Create New Application”. Sedan väljer man en mall/template och lägger till de komponenter man vill ha med.

Screenshot from 2015-02-15 10:27:53

Beroende på vilken mall man valde så finns det olika områden där man kan lägga till innehåll, lite som Widgets i andra sammanhang.

Det går att styra utseendet via CSS och det finns instruktioner för hur man skapar egna mallar på hemsidan.

Nu har jag inte detaljstuderat allt, men det första intrycket är att det ser snyggt ut och att det är ett smart koncept att sätta upp karttjänster via den här typen av portal. Sedan känns det lite rörigt och jag har inte riktigt fått grepp om hur man går till väga för att få igång en karttjänst som jag vill. Dokumentationen är inte helt tydlig, men man får väl jobba lite…

Man skall först lägga till WMS källor, sedan skapa ett Lagerset, som man lägger till lagerinstanser i, som man sedan lägger till i den kartwidget som man placerar i sin layout…

Det går att lägga till OGC-WMS lager och använda dessa i de kartor man skapar, men dessa WMS-tjänster får skapas någon annanstans. Mapbender tillhandahåller ingen kartserver, utan är en så kallad ”front-end” för sådana.

Vill du testa Mapbender3 så kan du använda OSGeoLive som jag skrev om igår…

Annars finns det flera exempel på http://mapbender3.org/en/gallery. Jag tycker att Gütersloh har en sida som ganska bra belyser hur man skulle kunna använda Mapbender3 för att sätta upp en portal för exempelvis en Kommun.

Nu kanske mina första intryck är lite reserverade, men det här känns faktiskt ganska bra. Är man lite tveksam inför att satsa på en kartplattform med mycket kodskrivande så kan Mapbender absolut vara något att titta närmare på. Det borde inte vara krångligare än exempelvis CMS/DMS tjänster som Drupal, Nuxeo eller för den delen Microsoft Share Point.

Det är öppen källkod, och i och med OSGeoLive så är det som sagt inte ens svårt att prova.

Vad har jag gjort i jul?

Jaha då var jul och nyår över och de flesta av oss är väl tillbaka i normala rutiner igen.

Vad har ni gjort under ledigheten? Varit med familj och vänner utgår jag från, men mer då?

Själv har jag haft så många påbörjade projekt att jobba med, så jag hade kunnat fylla minst tre gånger så mycket ledig tid och ändå inte blivit färdig.

Vad är det då för projekt jag hållit på med. En del foto och filmprojekt har det blivit, men det kan vi lämna här och nu.

Jag har sedan börjat titta på panoramabilder och hur man kan skapa dessa så snabbt och enkelt som möjligt, utan att det för den skull blir dåligt. Och nej, en panorama app i telefonen duger inte.

Det blev en lång process med massor av experiment och 3D utskrifter. Resultatet blev en ”panoramarobot” som när den är helt klar tar de bilder som behövs för ett helt sfäriskt panorama på ungefär en minut. Bilderna skall sedan bearbetas, och detta har jag också skapat en process för så att det blir riktigt bra panoramabilder med drygt 50 megapixels upplösning. Jag har sedan tidigare en större mycket mera avancerad ”robot” som kan ta ännu mycket bättre bilder och med högre upplösning (gigapixel), men den har jag inte byggt själv.

Är du nyfiken på roboten jag byggt så finns en tidig prototyp på ”Thingiverse” och jag gjorde även en film på YouTube.

Den färdiga roboten har mindre elektronik och färre gummiband… Dessutom eftersom den är lättare så ”svajjar” den mycket mindre.

När jag nu kan skapa såväl ”ekvirektangulära” (standard 360×180) som ”stereografiska” (se bild nedan) panoraman, så blev nästa steg att se vad man kan göra sedan.

EKSJOchurchJag har tidigare använt lite olika javaskript för att visa panoraman på webbsidor, vilket fungerat bra även om det funnits en del problem och nackdelar.

Nu råkade jag på Pannellum.org som är öppen källkod för en panoramavisare i HTML5, vilket lät intressant att titta närmare på. En skillnad som jag gillar med pannellum jämfört med andra javaskript är navigeringen och panoreringen inne i panoramat (jämför PTviewer här). Det finns dessutom väldigt få javaskript för panoramavisning som är fria/öppen källkod.

I praktiken så är all nödvändig kod för panoramat inbakad i en html-fil och konfiguration görs antingen via URL-strängen eller en JSON-fil.

För att visa enkla panoraman så görs det enklast via URL-strängen (exempel).

Men det går som sagt att skapa ganska komplicerade rundturer med skräddarsydda JSON skript (exempel). Dessa rundturer skriver man koden till manuellt, vilket kan bli nog så krångligt inte minst när man skall placera ut alla hyperlänkar och info-symboler. Därför så skapade jag ett skriptprogram och lite metoder för att även detta skulle kunna göras smidigt.

Ett problem med HTML5 och Pannellum är att man måste vara lite försiktig med upplösningen i bilderna, då mobila klienter inte kan hantera bilder större än 4096 pixlar. Desktop klienter brukar klara minst 8192 pixlar, och några klienter med bra grafikhantering ännu större.

Mina bilder i exemplen ovan är 5000 pixlar, vilket innebär att om du använder en mobil klient, så kommer du inte att kunna se några panoraman, sorry! Jag hade redan skapat och skalat ned bilderna till 5000 pixlar, när jag fick reda på begränsningen för mobila klienter. Om du vill kan du testa samma panorama i olika upplösningar, inklusive för mobila klienter genom att klicka här. Dessutom så är den en skillnad mellan Android och iOS, som man också måste planera för.

Det går att komma runt det här med upplösning genom att använda en variant av ”tiles”, men detta har jag inte tittat närmare på än.

En annan begränsning är att några funktioner kräver en modern webbläsare för att exempelvis kunna köras i helskärmsläge. Dessutom så måste alla filer läsas från en webbserver och inte från en lokal, eller delad katalog… (säkerhetskrav).

Vad är då kopplingen till GIS?

Jo, det går ju att skapa en webbkarta, med exempelvis Leaflet eller OpenLayers och där lägga ut klickbara punkter som öppnar dessa panoraman. Kombinerar man exempelvis med mitt exempel på ”Story Map” så går det att bygga upp väldigt interaktiva rundturer i en mängd olika syften.

Allt som krävs är öppen källkod, lite javaskript, JSON, HTML5 och så förstås en panoramarobot…

Webbkartor från Skogsstyrelsen

För ett tag sedan tittade jag lite på Länsstyrelsernas webbkartor, vilket inte fungerade alls eftersom man använder Silverlight, som inte stöds av Linux samt många mobila plattformar.

Nu tänkte jag titta lite kort på Skogsstyrelsens webbkartor (länk), där de bland annat publicerat en karta för den stora branden utanför Sala och Fagersta.

Screenshot from 2014-08-31 12:35:45Klicka på bilden ovan för att starta Brandkartan i ett nytt fönster

Det går att välja bland flera olika bakgrundskartor och flygbilder. Exempelvis finns en före-efter karta där man kan jämföra bilder före branden, men nytagna bilder efter (se bild nedan).

brand

Det går även att lägga på lager med utförda avverkningar samt natur- och kulturhänsyn, vilket i sammanhanget kan vara av intresse.

Om tjänsten då. Det mesta fungerar och man får fram det man önskar även om det inte är helt intuitivt. Sedan så verkar det vara något lite galet med en del lager som gör att kartan inte vill visas helt ut till kanten överallt. Kanske något med WMTS tjänsterna någonstans? Å andra sidan så med tanke på det jag beskriver härnäst så kanske det bara är en slump och om jag provar att ladda om sidan några gånger så kanske det blir bättre.

Det jag först reagerade på var nämligen att det tog en hiskelig tid att starta tjänsten och innan olika funktioner svarade på kommandon. Det kan bero på att servrar var i vila, men det kan finnas andra skäl också.

När jag tittar på tjänsten i Firebug (tillägg i Firefox) så framgår det tydligt att tjänsten är baserad på Open Layers (2.12) och GeoExt, men det som jag reagerar på är att det finns över 260 hänvisningar till javascriptfiler som skall läsas in, och då har jag bara räknat de som rör Open Layers!

Namnlös

När dessutom huvuddelen av dessa skriptfiler är många hundra rader långa så förstår man att det är fruktansvärt mycket kod som skall läsas in i datorn och sedan hanteras av webbläsaren för att allt skall fungera.

Jag kan inte tillräckligt mycket om javascript för att säga något definitivt, men det här känns fel.

Screenshot from 2014-08-31 17:05:08

När jag testkör sidan genom http://www.webpagetest.org så blir det lite intressanta resultat. Dels blir den initiala laddningstabellen otroligt lång och redovisas som 12,4 sekunder till ”document load” och drygt 21 sekunder tills sidan är klar, medan återbesök tar knappt två sekunder.

Det som sticker ut lite förutom att det är väldigt många skript som skall läsas in är ArcGIS 9.3 REST API som tar väldigt lång tid att läsa in (bild nedan).

Screenshot from 2014-08-31 17:13:14

Som avslutning så kan man utläsa från testet att av den totala mängden anrop vid första visningen så står javascript för 272 stycken, vilket utgör över 4 Mb i storlek.

Screenshot from 2014-08-31 17:17:12

Diagrammen ovan gäller för första visningen. Efterföljande visningar har betydligt lägre andel javascript (av naturliga skäl) och en större andel bildinnehåll även om mängden bilddata inte ökar.