Raskeste vei – til sjøs!

Et typisk problemstilling for en sørlending på sjøen er: Hvor langt er det fra A til B?

Andre har jo samme problemstilling – og da spesielt i bil, på sykkel eller tilsvarende. På land er alt dette løst siden man følger veier, stier og sykkeltraseer. Alle er kartlagt til minste centimeter og resten dreier seg bare om smarte algoritmer. På havet er ting så meget annerledes. Ferdsel på havet begrenses jo ikke av en fast rute. Det finnes kartlagte farleder, men det hjelper lite i skjærgården når man skal farte mellom holmer og skjær utenfor farleden.

En litt regntung morgen tenkte jeg at det må da kunne gå an å lage seg en slags “vei” i vannet. Men hvordan lager man seg en “vei” basert på havoverflaten? Vel. Det er det andre som har funnet ut av før og det heter “thinning”. Metoden brukes for eksempel til å lage “skjeletter” fra bilder over mennesker. Og det er jo akkurat det jeg var ute etter: En metode som finner minste mulige representasjon av en flate uten at “topologien” eller formen blir forstyrret.

QGIS kommer som kjent med GRASS-integrasjon – og GRASS har selvfølgelig ferdige algoritmer for tynning, deriblant “r.thin”. Datagrunnlaget er jo egentlig kun havoverflaten, så den tok jeg ned fra N50-datasettet til Kartverkets åpne data. Jeg hentet ut havoverflate fra “Arealdekke” og lagret det midlertidig som en shapefil.

1

Men, r.thin krever et raster som input. Dette fikser verktøyet “Rasterize” i QGIS, som er en overbygging av GDAL sin rasterizer. Her kan du sette parametere etter ønske. Til eksperimentet valgte jeg 50 meter oppløsning for at det skulle gå litt raskt. Resultatet er et rasterkart over havflaten.

2

raster_kart

Da er alt klart for tynning med r.thin!

tynning

Resultatet er et rasterkart med “skjelettet” til havflaten. Vi vil ha det som vektorgeometri siden vi skal bruke rutealgoritmer på det. Det er enkelt med “r.to.vect”, som gjør nettopp dette.

rastertynnet

 

Siden havflaten strekker seg ut til landet grenser så blir det noen rare lange linjer ut i havet. De fjernet jeg ved å redigere direkte på vektordatasettet.

vektor_edit

Raskeste vei er fantastisk enkelt i QGIS med “road graph / shortest path” som man setter opp via “vector->road graph”.

roadgraph

Deretter er det bare å velge start og stoppested og kjøre algoritmene som finner raskeste vei til havs!

ruteberegn

Nyttig? Tja. Det er vel ikke akkurat så voldsomt nyttig for sjøfart. Men morsomt? Ja definitivt!

Hvor langt kan du se? Siktanalyse med QGIS

Kan jeg se sjøen fra verandaen? Skygger den lille toppen for meg? Hvor mange kirkesogn kan jeg se fra fjelltoppen?

Dette er tilbakevendende spørsmål som dukker opp hos mange. Og med gratis kartdata, gratis programvare og littegrann geomatikk-kunnskap – så kan vi finne ut av dette raskt og greit!

Jeg lurte på sikten til en hytte på Sørlandet. Der er naturligvis det mest aktuelle spørsmålet: Kan jeg se sjøen?

2015-08-02 11.40.29For å finne ut av dette lastet jeg ned passende flik av terrengmodellen til Kartverket (http://data.kartverket.no/download/content/digital-terrengmodell-10-m-utm-33). Lastet inn terrengmodellen i QGIS og var klar.

QGIS kommer med kobling til en gammel programvare som heter GRASS-GIS. GRASS inneholder veldig mange, veldig gode algoritmer for analyser. Men grensesnittet er litt vrient. Da er det perfekt at QGIS forenkler bruken av GRASS sine algoritmer i sin “toolbox” hvor du kan hente opp algoritmene direkte, bruke de fra python eller lage modeller som kan kjøres. Dermed kan vi åpne direkte algoritmen: “r.los” (Raster.LineOfSight) og sette parametere.

r.los-paramJeg brukte verktøyet: “vector->coordinate capture” for å plukke riktige koordinater. Husk å bruk koordinater i den projeksjonen du har terrengmodellen. I mitt tilfelle UTM33N (32633).coordcapt

Algoritmen kjører saktere jo lenger ut vi ønsker å beregne. Jeg brukte 5000 meter som gikk rimelig raskt. Utover det så kan du sette maskering, sikthøyde, om det skal tas hensyn til jordens krumning og et par andre parametere. r.los

Resultatet viser hvor det er sikt og inneholder også siktvinkelen fra siktepunktet. For litt stiligere visualisering kan du lett gjøre om til vektor og symbolisere som du ønsker. Ganske stilig! Og ganske nyttig! 
vectres