Unngå dårlige WMS og Tiles i QGIS

Det har vært lenge siden sist det har vært aktivitet her. Det er kanskje et tegn på at mye annet har skjedd. Jeg har jobbet et år hos Norkart og fått (litt) erfaring med det private næringslivet, og kanskje også den virkelige geomatikkverden. Noe av det jeg jobber mye med er “Open Source”, eller åpen programvare. Utvalget av åpen teknologi for kartdata har virkelig vokst siden jeg satt på lesesalen og lagde mitt første kart med Google Maps API – og deretter med OpenLayers. Den gangen var utvalget mindre, og for det meste var det mye feil og rar oppførsel. Nå derimot er utvalget enormt, og den rare oppførselen har i all hovedsak forsvunnet og det har blitt flere solide software-pakker som fungerer like bra, og ofte bedre enn kommersielle alternativer. Men, altfor få kjenner til, eller tør ta i bruk open source kartteknologi. Ganske ofte er det ikke så mye som skal til før man får til det man vil. Men, uten noen å spørre om råd kan det være vanskelig. Jeg gir ofte råd og deler tips og triks som jeg kommer over – men har ikke fått delt de med så mange. Derfor har jeg tatt opp tråden på bloggen og håper å få delt noen tips og triks fra praktisk bruk av kartteknologi. Noe stammer fra jobben, noe stammer fra (litt nerdete) hjemmehygge.

Først ut er en klassis irritasjon når du skal ha tilecache (wmts) i QGIS og får opp et tilsynelatende dårlig kart! Jan Kristian Jensen hadde problemet https://twitter.com/LtGlahn/status/558561145813213184

En løsning er å slå på “Smooth Pixel Transformation” – i definisjonen på WMTS-laget i QGIS. Det er bare en hake, som dessverre er slått av som standard. Deretter funker alt så meget bedre. Problemet kommer av at QGIS ikke alltid “treffer” på samme målestokk som tilecache’n eller WMS’en forventer. Når QGIS viser kartbildet uten å gjøre noe med det blir det ofte litt “hakkete” – spesielt på tekstene i kartet. Ved å etterprosessere bildet med “smoothing”, blir bildet grafisk glattet – og ting ser bra ut igjen. Enkelt og greit. Sjekk videoen for demo:

 

Hvordan massere Kartverket til KML?

Jeg har fått påfallende mange spørsmål om hvorfor Google Fusion Table’en med kommunegrenser ikke er oppdatert med de nyeste frie datasettene til Kartverket. Vel, det enkle svaret er at jeg ikke har hatt tid til det. Høsten har vært svært innholdsrik med ny jobb hvor jeg (endelig?) har fått muligheten til å friske opp gamle, og nye, kunnskaper rundt Javascript, CSS, alle hippe JS-biblioteker, PostGIS, GDAL, W*S’er og alt mulig annet rart. Kombinert med dette har jeg også vært med på flere konferanser og truffet mange spennende mennesker og gode ideer!

Untitled

 

Sist var det @henningAa som lurte på kommunegrenser i KML. @atlefren er selvfølgelig med, og begge svarte at ogr2ogr løser det kjapt og greit. Jaja, det er jo greit nok. Men du kommer kanskje ikke videre med det?

Så, i ett ledd i å skrive oftere (men tydeligvis ikke mindre), så kommer forklaringen her:

Er du på Windows så laster du ned nyeste OSGeo4W herfra: http://trac.osgeo.org/osgeo4w/. Det er en pakke med alt mulig rart av open source-verktøy, som er svært gode, men ofte litt vanskelige å ta i bruk. Velg “avansert installasjon” – ta alt på menyen og velg alle pakkene. Da får du med noe som heter GDAL og også en GDAL-plugin som støtter .sos filer. Dette betyr at du kan lese Kartverkets .sos-filer og få de over på veldig mange andre formater/databaser – uten noe veldig stort problem. Dette gjør du ved å åpne “osgeo4w shell” i start-menyen (eller “app-menyen”) og bruke programmet inkludert i GDAL som heter ogr2ogr. ogr2ogr betyr egentlig “alt vi støtter av formater til alt vi støtter av formater”.

Da er du igang! For eksempel:

ogr2ogr -f “KML” abas/fylker.kml abas/fylker.geojson

Vil gi deg fylkene oversatt til KML-formatet. Det samme skal altså fungere med .sos som input også. Deretter åpner du i QGIS 2.01 og er i gang! (eller Google Earth / Fusion Tables hvis du må).

.. og da vil du se: hvorfor ser Norge ut som en rotte? Jo. Det er fordi havet er inkludert i grensene. Det er jo det juridisk riktige. Hvordan fjerne havgrensene kommer jeg tilbake til :)