T:kort – flexus light?

Jeg tar ikke bussen mye. Til jobb går jeg og kommer nesten opp i de anbefalte 10.000 skrittene pr dag. Derimot hater jeg småpenger, og lenge var de få bussturene jeg tok årsaken til at lomma randt over av småpenger. Jeg har aldri kontanter på meg, så hver gang jeg skulle ta bussen tok jeg ut penger. Og i minibank er som regel minimumen 200 kr. Med en busspris på (hårreisende) 30 kr i Trondheim sitter jeg da igjen med 170 kr som forsvinner.

Derfor bestemte jeg meg for å skaffe meg et T:kort. T:kort er:

[..] et elektronisk reisekort for alle som reiser kollektivt i Trøndelag.

Jeg tar kun buss, men du kan få en slags klippekort-løsning som gjør at du betaler 22 kr pr tur, og ikke 30. Altså kunne jeg spare 8 kr pr busstur, og jeg kunne slippe småpengemaset, og komme et skritt nærmere det kontantfrie samfunn. Bare fryd og gammen med andre ord.

Men akk, hvor lenge var Atle i paradis? Ikke lenge skulle det vise seg. Jeg frustrerte vettet av både samboer og kolleger i de tre ukene jeg jobba med å få meg et fungerende kort. Men, jeg rakk aldri å skrive noe om det på bloggen. Det ble med en twitter-post, som vel summerer opp mine følelser når det gjelder registeringsprosessen.

Så så jeg at Martin Bekkelund har planer om å ta for seg Flexus, som jo er noe av det samme for Oslo som T:kort er for Trøndelag. Jeg kjenner kun Flexus via en rimelig artig video. Men, i kommentarfeltet til Martin var det flere som skrøt av T:kort, han blir endog anbefalt en studietur til Trondheim for å oppleve et system som “bare virket”. Vel.. Det er ikke min oppfatning, derfor denne posten.

Altså. Hvorfor T:kort er elendig, en punktliste:

1. Bestillingsprosessen. Hvis du skal bestille t:kort via internett (som man jo vil, hvem vil besøke et kundesenter med sære åpningstider og reisetid fra og til?) går man til Bestill T:kort og fyller ut navn, adresse etc etc. Så venter man i en ukes tid før kortet dumper ned i postkassa sammen med en brosjyre som forteller deg at du må opprette en reisekonto. Skal du gjøre dette heldigitalt må du signere med bankID. Her må du igjen fylle ut en rekke opplysninger: kort sagt, alt du fylte inn for å få kortet i posten, pluss flere andre ting som bla.a et 16 siffers kortnummer.

1a: Jeg vet nå hvorfor det er slik: man kan ha flere kort knyttet til en reisekonto. Denne funksjonen er fin for familier, der foreldrene kan fylle barnas kort. Dog: de fleste brukere har nok et 1:1 forhold mellom kort og konto. Dermed blir det unødvendig mye inntasting.

2. Kundeservice: Etter å ha strevd lenge med BankID-autentisering (BankID og Linux er ikke alltid venner, i tillegg fikk jeg noen feilmeldinger) fikk jeg opprettet en reisekonto. Etter dette fikk jeg en bekreftelsesmail, og kunne logge inn på reisekontoen min. Dog var det noe som var rart: under “Mine kort” sto det ikke listet noen kort. Dette til tross for at jeg hadde fyllt inn det 16-sifrede nummeret på kortet mitt. Jeg mistenkte at noe var galt, og sendte en mail til kundeservice. Den lød som følger:

Hei!

Nå har jeg:

a) bestillt t:kort via nett og fått det i posten
b) opprettet reisekonto (etter masse RÆL med bankID)
c) opprettet en bruker på tkort.no

Når jeg logger inn og så ser under “mine kort” listes det null, niks, nada, ingen kort der, det eneste som står er:

“Fant ingen kort knyttet til Reisekontoen”

Noe jeg finner sært, iom at jeg oppgav kortnummeret xxxxxxxxxxxxxxxx når jeg opprettet reisekonto (eller en av de andre registereringene, ikke husker jeg mer)

Er det slik å forstå at jeg nå må fysisk møte opp på et kundesenter, slik at all denne strevinga er forgjeves, eller er det fordi jeg enda ikke har overført penger til kontoen? Eller er det noe magi i det utrolig infløkte systemet deres som ikke har slått inn enda?

Jeg innrømmer at det ikke er det hyggeligste mailen jeg har sendt, men husk at jeg var drittlei av hele systemet, jeg hadde tastet inn personopplysninger mange ganger og brukt mye tid på noe som markedsføres som “enkelt og effektivt”. Dog, jeg synes ikke svaret jeg fikk var noe særlig heller:

Skal normalt gå helt greit det der, men vi har hatt problem med dette i
det siste. Har lagt kortet ditt ut på aksjonsliste, så det må i kontakt
med en busscomputer for at det skal legge seg til din reisekonto. Dette
vil skje påfølgende natt. Dette er som sagt et teknisk problem vi har
mot FARA. Beklager dette.

Altså: Aksjonsliste og FARA?! Sier meg ingenting, så jeg svarer igjen:

Så kortversjonen er at det skal fungere i morgen?

Hvorpå svaret kom, i det jeg synes var en noe nedlatende tone:

Kortet vil jo først fungere når du har et produkt på det, enten
autoreise eller periode.

Jaha, da må jeg jo opprette et produkt, men hvordan kan jeg opprette et produkt på en reisekonto som ikke er tilknyttet noe kort? Jeg begynnte å bli irritert og spilte derfor dum:

ja, det er jo så, jeg kommer til den hodepinen senere.. Men vil det listes under “mine kort” når jeg logger inn på tkort.no?

Har (av en eller annen grunn) en avsersjon mot å opprette noe som helst produkt eller betale noe penger inn til en løsning der ikke kortet mitt er linket mot kontoen/produktet..

Med atter et svar:

Det vil ikke være mulig å bestille noe produkt før kortet er knyttet til din konto. Ikke skummelt i hele tatt å betale inn penger til din reisekonto. Det er dine penger.

Hmm, ble jeg ikke nettopp fortalt at jeg måtte opprette et produkt for at det skulle fungere? Nå er det visst motsatt?! Jeg skjønte enda mindre, men bestemte meg for å sette inn 300 kr på kontoen min. Merk: dette må gjøres via en giro fra bank og tar et par-tre dager (VISA, PayPal, anyone?!)

Med penger på reisekontoen (men fortsatt ikke noe kort knyttet til) et par dager senere svarte jeg igjen:

Hæ?

Jeg kan ikke bestille noe produkt får kortet er knyttet til min konto?
Og jeg har pr dags dato ikke noe kort knyttet til noe konto (til trossfor at jeg oppgav kortnummeret når jeg opprettet kontoen?!)

Og du skrev i forrige mail at jeg måtte kjøpe et produkt for at kortet skulle fungere?

Med svaret på denne mailen tørnet det for meg:

Hei!
Du vil få tilgang til kortet ditt i morgen, etter du har vært ut til en
buss i ettermiddag.

Jeg må altså ta bussen med kortet for at det skal funke slik at jeg kan bruke kortet på bussen?!

Som trigget mitt siste, rimelig aggresive svar:

Ikke for å være vrang, men:
Hvis jeg forstår deg riktig:

Jeg må altså ta bussen med kortet for å få aktivert kortet?

Det betyr jo at jeg må ta bussen med et kort jeg ikke har fått koblet noe produkt til for å få aktivert kortet slik ar jeg får koblet kortet til noe produkt slik at jeg kan bruke det til å ta bussen??

Hvordan skal jeg kunne bruke kortet på bussen når jeg ikke får kobla det mot reisekontoen min?

Jeg har lenge vegra meg mot å bestille meg tkort, da jeg har hørt mange historier om folk som sliter med å bestille, men at det skulle være så bakvendt som jeg får inntrykk av nå hadde jeg aldri forestillt meg.

Jeg har nå satt igang en overføring av penger til kortet/reisekontoen/hva veit jeg mer… Og også bestillt et produkt (som jo ikke er kobla mot noe kort…)

Vil det fungere? Eller må jeg på bussen for å holde kortet forran en automat (og så betale med cash?) før ting fungerer?

Hadde jeg visst at det var så vanskelig å bestille tkort via nett hadde jeg heller beveget meg ned på kundekontoret i første omgang… Eller fortsatt å betale kontant de få gangene jeg tar bussen…

Hvorpå jeg fikk et kort svar:

Hei!
Dette ordner seg tydeligvis ikke, så jeg anmoder deg til å oppsøke salgskontor.
Dette er en teknisk feil som desverre ikke har løst seg. Vi beklger dette.

Tre uker etter at jeg bestillte måtte jeg altså gi opp og oppsøke et kontor. Der ble jeg møtt av en hyggelig fyr som sa “dette skal gå fint, jeg fikser dette”. Han tok kortet mitt og kom tilbake med følgende spørsmål etter ti minutter: “Du har ikke prøvd å registrere dette kortet flere ganger?” Hvorpå jeg såklart svarte: “ja, opptil flere ganger, BankIDen gav meg feilmeldinger.” Svaret var da “Aha, problemet er nemlig at det er to reisekontoer knyttet til kortet ditt”

Så, det som hadde skjedd var at når bankID gav feilmelding på autorisasjonen ble det likevel opprettet en reisekonto. Snakk om feildesign på et system! Hvordan kan man i det hele tatt designe et system som fortsetter ved en feilet validering? Jeg akket meg litt og sa at det var jo helt på trynet å regsistrere seg på nett, og at jeg like gjerne kunne ha møtt opp på kontoret fra dag en. Svaret var at “ja, systemet er ikke helt optimalt, men de som har levert det har det jo så travelt.” Jaha, jeg veit ikke hvem som har laget systemet, men å ikke rette alvorlige bugs fordi man er opptatt med å selge makkverket til andre er en elendig unnskyldning.

Rett og slett!

Det skal sies at etter at denne hyggelige fyren hjalp meg har ting fungert meget bra, jeg slipper småpenger og får billig buss. Men, å ha en så slitsom registreringsprosess, og så lite hjelpsom kundeservice.. Flexus light sier jeg bare.

PS: Rune (@kvisten) tipset meg om et lignende innlegg han skrev om T:kort i 2008: t:kort – hvor vanskelig kan det være? Det virker som om de har fått fikset opp språket sitt siden den tid, men ikke stort mer annet..

Boklesememe

Det er lenge siden sist. Både siden jeg skrev noe her sånn generelt og siden jeg svarte på et meme. Dermed må vi gjøre noe med den saken. Simen Øvrebø utfordret meg med et bokmeme mens jeg var på ferie, og slike ting kan man jo ikke la stå ubesvart.

Spørsmålene er som følger:

  • Hvilken bok leser du akkurat nå?
  • Hvor liker du best å lese?
  • Hvilken bok skulle du ønske ble filmet?
  • Er det noen bøker du ser fram til å lese de neste månedene?
  • Hva er favorittboken din?
  • Hva synes du er den fineste forsiden på en bok?

Så da er det vel bare å begynne fra toppen:

Hvilken bok leser du akkurat nå?

Akkuratt nå skriver jeg jo dette, men den boka jeg begynnte på sist er The Colour of Magic av Terry Pratchett. Denne kjøpte jeg på Gardermoen på søndag for å ha noe å lese på flyet etter å ha fullført The Lost City of Z av David Grann. Pratchett har jeg ikke fått lest så mye av enda, men virker som en småsprå fantasy-sak. Andre kan nok beskrive den bedre, men jeg har fåttt meg meg såppass som at det er 36 bøker i Discworld-serien, så om jeg liker boka har jeg litt å se frem til.

Hvor liker du best å lese?

Jeg har funnet ut at jeg liker å lese liggende. Enten i senga, eller langflat i sofaen. I skyggen på en strand er heller ikke så dumt, men sand og solkrem og vann kan bli slitsomt. Flyseter har jeg funnet ut at er slitsomme å lese i (det er et eller annet med vinkel/avstand jeg ikke er komfortabel med. Men jeg leser gjerne på fly uansett, for å få tida til å gå).

Hvilken bok skulle du ønske ble filmet?

Nei. Jeg har lest mange bøker som har blitt filmet og jeg tror jeg foretrekker boka i alle tilfeller. En kokebok kanskje, det er nok mer spennende på TV 😉

Er det noen bøker du ser fram til å lese de neste månedene?

Hmm.. Godt spørsmål. Jeg har kjøpt inn en del bøker jeg ikke har fått lest enda. Men Ingen spesielle tror jeg. Stephen Kings Misery kanskje? Eller Kafkas Prosessen, hvis jeg får ro i sjela til det? Gleder jo også til å komme skikkelig i gang med Pratchett, den virker jo som sagt lovende!

Hva er favorittboken din?

I entall? Umulig! Jeg har skrevet om temaet før, så tror den lista der får lov til å stå fortsatt. Generation Kill av Evan Wright kan jo også nevnes i disse “norske soldater er slemme i Afghanistan”-tider.

Hva synes du er den fineste forsiden på en bok?

Øhm. Jeg ser bare bokryggene i bokhylla mi så det er ikke så lett å si. Dessuten har jeg lært meg at man ikke skal dømme en bok etter omslaget. Pass!

Et meme skal vel helst sendes vidre også. Er det noen som leser denne bloggen mer egentlig? Hadde jo vært artig å se Anders Hoff svare på dette memet i tegneserieform, og om Alexanno leser noe annet enn forskning om dagen kunne jo han fått en utfordring? Ellers er jeg veit jeg sannelig ikke hvem som følger med her, føler du deg utelatt så er du mer enn velkommen til å ta memet videre!

Bokhandleren i Norge

Det er lørdag og jeg hører på det beste fra Dagsnytt 18. En sak om eBøker blir diskutert. Debattantene er Arve Juritzen som driver et lite forlag og en representant fra Gyldendal (eller Aschehoug, et av de store forlagene ihvertfall).

Debatten går på om norske forlag eier bokhandlene, og dermed ikke ønsker eBøker. Fair enough, jeg er nok enig der. Men det er ikke det jeg reagerer på. Det er en bisetning jeg reagerer på, som både små og store forlag er enige i, nemlig at bokhandlene er viktige, at de vil bestå.

Hvorfor? Fordi de driver boksalget, med kunnskapsrike medarbeidere, utvalg og anbefalinger. Jaha. Jeg vet ikke hvilke bokhandler de snakker om, men for meg er intrykket av norske bokhandler dette:

  • En stor vegg med “bestselgere”. Her finner du krim i hardcover til ublu priser
  • En stor vegg med pocket, her finner du de samme krimbøkene i pocketutgave til rundt 100-lappen
  • En liten hylle med “litteratur”. Her finner du Hamsun og noen obskure diktsamlinger
  • En stor hylle med diverse kaffebord-bøker. Her finner du diverse illustrerte “oppslagsverk”, “guide til hagen” etc.
  • En stor avdeling med rekvisita. Her finner du penner, skriveblokker, Moleskine-notatbøker, brettspill, kontorutstyr etc etc etc
  • En hylle med DVDer
  • Og som en bonus finner du noen steder en hylle med engelske bøker, litt historiebøker og annen litteratur. Men da er vi på de store bokhandlene

Så, utvalget er dårlig, prisene matcher ikke nett. Men hva med de som jobber der da? Har de peiling? Anekdoter er ikke bevis, men jeg har et par historier:

Jeg var i en bokhandel i Oslo, og var på jakt etter en bok av Arthur C. Clarke. Jeg ble praia opp av ei ivrig ung dame som lurte på om jeg “så etter noe spesielt”. Jeg svarte at jeg var på jakt etter noe Science Fiction. Hu ble stående å tenke, før hu til slutt sa: “da må du nok bort til fantsay-hylla.” Hva fant jeg der? Twilight-bøkene, eragon og et eksemplar av Ringenes Herre. Det ble ikke noen kjøp.

På Norli i Trondheim var jeg innom og spurte etter en bok ved navn “Bad Sience” (jeg huska ikke navnet på forfatteren, men visste hva den handla om, og tittelen). Dama, ei typisk bokhandlerdame litt oppe i årene satt seg ned ved maskina si og søkte, og søkte, og søkte. Og sa til slutt: den tror jeg ikke vi har. Jeg fant den på nett etter 30 sekunder når jeg kom hjem.

Så, hvordan kan bokhendlene være noe som kan bestå? Med et utvalg på linje med Rema 1000 sitt matutvalg, priser på linje med ferjene på vestlandet og ansatte med kunnskapsnivå på linje med en gjennomsnittlig support-telefon?

Nei, gi meg heller nettsteder som Librarything og nettbokhandler som Capris (ja, eid av Cappelen, I know) og Amazon. Bokhandelen går mot samme skjebne som platebutikken, døden. Med mindre de oppstår som de papirbutikkene de egentlig er…

Dagens Ord: Tant

Dagens ord er det få som bruker. Svært få vil jeg tørre å påstå, og tilnærmet ingen under 80. Det er jeg nesten sikker på. Det er et ord som faller inn under en ganske artig ordgrupppe (som jeg selv har definert): “ord som kun brukes sammen med andre ord”.

Det er altså et ord som brukes i et uttrykk. Et uttrykk som i deg selv ikke er mye brukt. Det artige er jo at det andre ordet i uttrykket brukes mye. Hører du noen si “fjas” stusser du nok ikke noe særlig. Hører du noen si “tant og fjas” stusser du nok litt, men hører du noen snakke om “tant” stopper du nok opp. Men, det må jo være et ord, i og med at det brukes i uttrykket. Dermed vier jeg dagens “dagens ord” til nettopp tant. Rent instinktivt vil nok de fleste forbinde det med fjas, og dermed tillegge det samme betydning.

Ifølge den alltid trofaste Bokmålsordboka, kan tant ha to betydninger:

1. fantasi, oppspinn
2. foreld: noe verdiløst

tilfelle 2 er det som menes i uttrykket “tant og fjas”, mens tilfelle 1 brukes i det for meg noe ukjente uttrykket “tøv og tant”.

Ut over disse to uttrykkene kommer jeg ikke på noen gode bruksområder for ordet, det må i så fall være noe i retning av:

“Nå snakker de tant”

Som jo unektelig virker som litt gammelmodig 😉

Ellers kan jeg jo bemerke at ordet har opphav i det latinske “tantum”, så for språknerder det er faktisk et fremmedord vi burde ta inn i varmen igjen! Utfordringen er bare å bruke det uten å gi assosiasjoner til kamferdrops og svisker.

GPX med Kartverkets bakgrunnskart

OBS: En nyere versjon av eksempelet her er tilgjengelig på http://www.atlefren.net/post/2011/02/kartverket-openlayers/. Se gjerne på koden der!

OBSOBS (mai 2015): Denne bloggposten ble skrevet for 5 år siden, og mye har endra seg siden da. Det betyr at denne bloggposten er utdatert og koden ikke funker mer, men ta en titt på https://github.com/atlefren/kartverket-gpx

Du har sikkert en GPS, eller en smarttelefon med GPS innebygd? Du liker kanskje også å gå på tur og logge den? Men du synes ikke det er så forbanna kult å legge ut et track fra en tur i den norske villmark over Google Maps (la oss innse det) elendige turkart eller kornete satelittbilder?

Du ønsker kanskje ikke å vise frem noe slik som dette til turvenner? Du skulle heller ønske du kunne lagt inn ruta di over “indrefileten” av norske data? Nemlig kartverkets kart? Du har sikkert fått med deg at disse er tilgjengelige for gratis bruk for privatpersoner?

Du har kanskje til og med kommet så langt at du har fått satt opp OpenLayers med kartverkets WMS på din hjemmeside?

Men der stopper du kanskje? Du skjønner ikke helt hvordan du skal få lagt GPX fila di over kartet? Eller du får kanskje lasta den inn, men den havner helt riv, ruskende, galt avsted? Eller kanskje ser hele Norge helt på trynet ut? Frykt ikke, siden kongeriket Norge har fått meg utdanna som IKT-Geomatiker tenkte jeg jeg skulle prøve å hjelpe deg.

Jeg vet folk lurer på dette. Jeg så tidligere en tweet fra Martin Bekkelund om temaet, og når har også søkefraser som “turkart egne gpx-filer” begynnt å dukke opp i søkeloggene her på bloggen. Derfor tenkte jeg å yte en innsats.

Så, hva tenkte jeg å gå gjennom? Først av alt en liten intro til å sette opp OpenLayers med Kartverkets WMS i Openlayers. Så tenkte jeg å gå gjennom hvordan man får inn GPX-data i OpenLayers, før jeg forklarer magien bak transformasjoner og dermed får alt til å passe sammen.

Kartoppsett

Først må du ha opp et kart, det gjøres ved å gjøre ca følgende:

1. Lag en HTML-side med en div med høyde og bredde 100%. Gi denne diven en id

<html>
<head>
<title>Kart</title>

<!-- sett opp en div til kartet -->
<style type="text/css">
#map { width: 100%; height: 100%;}
</style>
</head>

<body>

<div id="map"></div>

</body>
</html>

2. Så må du legge inn OpenLayers js-biblioteket. Det greieste er å hente den fra serveren deres direkte.
Dette gjør du ved å legge til en <script>-tag i headeren:

<!-- last inn OpenLayers js -->
<script src="http://openlayers.org/api/OpenLayers.js"></script>

3. Så må vi skrive litt JavaScript selv. Vi ønsker å ha en metode som startes når siden listes, og vi velger å legge all javascript-koden direkte inn i en script-blokk i headeren: Da får vi følgende skjelett:

<html>
<head>
<title>Kart</title>

<!-- sett opp en div til kartet -->
<style type="text/css">
#map { width: 100%; height: 100%;}
</style>
<!-- last inn OpenLayers js -->
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">
//her kommer JS-koden vår
function init(){
}
</script>
</head>

<body onload="init()">

<div id="map"></div>

</body>
</html>

4. Da er grunnlaget lagt, vi har importert OpenLayers-biblioteket, og vi har en (foreløpig) tom init-funksjon. Da gjenstår det å lage et Map-objekt, et layer objekt og legge til litt kontroller.

Gjør vi dette blir js-blokka vår seende slik ut (med beskrivende kommentarer):


<script type="text/javascript">
//selve kartet
var map;

//her starter vi ting
function init() {

OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3; //reduserer problemet med "rosa" tiles (openlayers viser rosa tiles når den ikke får lastet en tile)

//sett opp kartet (EPSG:32633 er UTM sone 33N)
map = new OpenLayers.Map( 'map', {
projection: new OpenLayers.Projection('EPSG:32633'),
maxExtent: new OpenLayers.Bounds(-2500000.0,3500000.0,3045984.0,9045984.0),
units: "m",
maxResolution: 2708.0, // tilsvarer zoom level 3 (hele er 21664.0)
numZoomLevels: 18 // egentlig 21, men maxResolution tilsvarer zoom level 3 (følgelig er 0-3 skrudd av)
} );

//musenavigering
map.addControl(new OpenLayers.Control.MouseDefaults());

// Definer karttjenesten(e)
var topo2 = new OpenLayers.Layer.WMS(
"Topografisk norgeskart2","http://opencache.statkart.no/gatekeeper/gk/gk.open?",
{layers: 'topo2', format: 'image/png'},{attribution:''}
);

// Legg WMSen fra kartverket til kartet
map.addLayers([topo2]);

//sentrer kartet på besseggen
map.setCenter(new OpenLayers.LonLat(683589,7146336),0); //Besseggen

}

</script>

5. Har du kommet så langt skal du nå ha ett Norgeskart du kan zoome og panorere rundt i, slik som dette.

GPX-innlasting

Godt å vel det, men jeg ser jo fortsatt ikke noe track? Nei, det skal vi ta nå.

Første skritt er å lokalisere en .gpx-fil (min ser slik ut) og ligger i samme mappe som kartet mitt på webserveren.

En ting kan vi like godt notere oss først som sist: GPX filer er i et koordinatsystem kjent som WGS 84 Lat/Lon, mens kartet vårt er i WGS84 UTM Sone 33N. Derfor må vi transformere, men det kommer vi til. Først skal vi få lasta inn GPX-fila i JS-koden.

1. Innlasting. OpenLayers har støtte for GPX-formatet og støtte for å laste filer. I tilegg må vi ha et vector-layer å legge tracket vårt i.

Ved å legge inn dette får vi noe slikt som:

//openLayers GPX-leser
var format = new OpenLayers.Format.GPX();

//layeren vi hiver featurene fra GPX i
var featureLayer = null;

//selve kartet
var map;

//her starter vi ting
function init() {

//sett opp featurelayeren som en vector-layer
featureLayer = new OpenLayers.Layer.Vector("GPX");

//url til gpx-fila (må ligge på samme server)
var url = "track.gpx";

//OpenLayers har støtte for å lese inn filer
OpenLayers.loadURL(url, null, null, loadSuccess, loadFailure);

//sett opp kartet (EPSG:32633 er UTM sone 33N)
map = new OpenLayers.Map( 'map', {
projection: new OpenLayers.Projection('EPSG:32633'),
maxExtent: new OpenLayers.Bounds(-2500000.0,3500000.0,3045984.0,9045984.0),
units: "m",
maxResolution: 2708.0, // tilsvarer zoom level 3 (hele er 21664.0)
numZoomLevels: 18 // egentlig 21, men maxResolution tilsvarer zoom level 3 (følgelig er 0-3 skrudd av)
} );

//musenavigering
map.addControl(new OpenLayers.Control.MouseDefaults());

OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3; //reduserer problemet med "rosa" tiles (openlayers viser rosa tiles når den ikke får lastet en tile)

// Definer karttjenesten(e)
var topo2 = new OpenLayers.Layer.WMS(
"Topografisk norgeskart2","http://opencache.statkart.no/gatekeeper/gk/gk.open?",
{layers: 'topo2', format: 'image/png'},{attribution:''}
);

// Legg WMSen fra kartverket og featureLayeren vår til kartet
map.addLayers([topo2,featureLayer]);

//sentrer kartet på besseggen
map.setCenter(new OpenLayers.LonLat(683589,7146336),0); //Besseggen

}

//denne kalles når GPX-fila er lastet
function loadSuccess(request) {
//les responsen her som GPX
var features = format.read(request.responseText);

}

//denne kalles hvis/når noe går galt ved lesing av fila
function loadFailure(request) {
alert("Kunne ikke lese GPX-fila...");
}

Vi ser vi har gjort endel nye ting:

  • Vi har definert et format og en featureLayer
  • Vi kjører et kall til OpenLayers.loadURL
  • Vi legger til et layer til til kartet
  • Vi har en funksjon loadSuccess som laster GPX-fila over i et feature-array

Men vi kommer forsatt ikke så veldig langt.

Neste, logiske skritt, ville være å legge til featurene i featureLayeret og zoome inn på disse. Dvs å legge til litt i loadSuccess:

function loadSuccess(request) {
//les responsen her som GPX
var features = format.read(request.responseText);
//vi får da en samling features, legg disse til vector-layeret
featureLayer.addFeatures(features);
//zoom kartet, denne gangen til område de lastede featurene dekker
map.zoomToExtent(featureLayer.getDataExtent());

}

Men dette vil ikke fungere, det ser vi her. Problemet er, som nevnt før, at vi har to forskjellige koordinatsystem. Hadde kartet vært i WGS84 Lon/Lat hadde det fungert (men det vil vi ikke, da ser ikke kartet bra ut), hadde GPX-fila vært i WGS84 UTM Sone 33N ville det fungert (men det er aldri GPX-filer).

Dermed må vi transformere. Her kommer OpenLayers til kort, men den kan støtte seg på Proj4js. Du må laste ned kildekoden, og legge “lib/proj4js-compressed.js” et sted der javascriptet ditt når den, samt inkludere den på samme måte som med OpenLayers.js. Hvis du legger den i samme mappe legger du til:

<script src="proj4js-compressed.js"></script>

i headeren.

I tillegg må du definere for Proj4Js hvilke parametere som gjelder for WGS84 UTM Sone 33N, da den ikke kjenner det. Dette gjør du ved å legge inn følgende i begynnelsen av JavaScriptet:

//Proj4js definisjon for WGS84 UTM Sone 33N
Proj4js.defs["EPSG:32633"] = "+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

(Denne definisjonen finner du under “Proj4js” på http://spatialreference.org/ref/epsg/32633/.)

Da er vi nesten i mål, nå gjenstår bare selve transformasjonen. Det vi må gjøre i loadSuccess er å loope gjennom alle featurene og transformere geometriene fra WGS84 LatLon (som har kode EPSG:4326) til WGS84 UTM Sone 33N (som har kode EPSG:32633). Dette gjør vi med transform-metoden til geometri-objektet, og funskjonen vår blir slik:


function loadSuccess(request) {
//les responsen her som GPX
var features = format.read(request.responseText);

//loop gjennom alle features og transformer fra WGS84 Lat/Lon (EPSG4326) til WGS84 UTM Sone 33N (EPSG:32633)
for(var i = 0; i < features.length; i++){
features[i].geometry.transform(new OpenLayers.Projection('EPSG:4326'), new OpenLayers.Projection('EPSG:32633'));
}

//vi får da en samling features, legg disse til vector-layeret
featureLayer.addFeatures(features);
//zoom kartet, denne gangen til område de lastede featurene dekker
map.zoomToExtent(featureLayer.getDataExtent());
}

Nå ser vi et spor slynge seg oppover Skogshorn, men det er litt blasst. Vi må endre hvordan det tegnes!

Flikking og pussing

Vi har nå ting på plass, men det ser kanskje litt sært ut? Vi kan mens vi er i gang fikse litt på utseendet på lina vår, via et StyleMap på vektor-layeret. Dette gjør vi ganske enkelt slik (og tegner linja med 2px grønn strek):


//angi styling av features
var styleMap = new OpenLayers.StyleMap(OpenLayers.Util.applyDefaults({
strokeColor: "green",
strokeWidth: 2},
OpenLayers.Feature.Vector.style["default"]));

//sett opp featurelayeren som en vector-layer
featureLayer = new OpenLayers.Layer.Vector("GPX", {styleMap: styleMap});

Og får dette. (For mer om styling, se OpenLayers.Feature.Vector).

Eller kanskje du foretrekker å bruke N50-kartet som bakgrunn, og la brukeren få velge? Mulighetene er mange!

Konklusjon

Dette var bare en quick-and-dirty gjennomgang av prinsippene, koden fungerer greit til enkel bruk, men den kan lett kombineres med opplastingsrutiner for å laste opp GPX-filer via f.eks. php, eller du kan utvide ting til å bruke en romlig database for å lagre GPS-tracket? Muligehtene er mange.

Og, skulle du oppdage feil eller mangler, eller har spørsmål er det bare å si fra!