Category Archives: Geomatikk

Engelske Geomatikk-blogger/nettsteder

Etter å ha “kartlagt” GeomatikkNorge på nettet har jeg kommet til at det skrives mye om temaet Geomatikk på engelsk. En twitter-diskusjon gav meg inspirasjon til å samle endel ressursser(hovedsakling blogger) som favner geomatikk-temaet på ett sted. Dette er en liste jeg håper dere bidrar til å fylle ut, jeg kommer med et første utkast her, in no particular order:

MineTurer Beta

Jeg skrev for noen dager siden om prosjektet mitt GPS Trip Organizer. Jeg fikk endel tilbakemeldinger, og ganske mange testet en demo-versjon. Det er inspirerende, og derfor fortsetter jeg jo å jobbe på prosjektet. Jeg har funnet ut at man må ha et bedre navn, så enn så lenge heter barnet “MineTurer Beta”. Dog, jeg har et håp om å komme meg ut av beta etterhvert.

En beskrivelse av siden er så langt:

MineTurer er en webtjeneste for å holde rede på GPX-filer (også kjent som GPS-spor/GPS-tracks), altså data fra GPS-loggere. Dataene lastes opp og vises på kart (Statens Kartverk, Google Maps eller OpenStreetMap). For hver tur vises statistikk og grafer. Alle dataene lagres i en romlig database. Tjenesten er i kraftig beta, og utvikles av Atle F. Sveen på frivillig basis.

Siden sist har jeg fått løst følgende saker:

OK - fix charset errors
OK - add more maps from SK
OK handle case with tracksegments with one point (see gpx sent pr mail)
OK - handle case where 12.16 is read as 0.16 (see gpx sent pr mail)
OK- remove similar points.. Is this smart? Probably not.. But hey!
OK - change header on perma-page
OK - change markers for trip points
OK - blank out fields on upload page for next upload
OK - should only return one centroid even if trip consists of several tracks
OK - make a user register page
OK - use a database-table for user management

Som på norsk betyr: Du kan nå registrere din egen bruker, vi vil (forhåpentligvis) ha færre filer som ikke fungerer (og er det noe som går galt skal du få beskjed). I tillegg vil nå æ,ø og å vises korrekt. I tillegg har jeg fått/kommet på endel nye requests, så det som står på lista mi er:

- find a solution for speed graph
- add labels to graph
- clustering on trip points
- find a faster server than kj0leskap
- make it possible to delete trips
- make it possible to edit trip info
- consider displaying a simplified version of the geometry
- make a "merge trips" function
- write tests(!)
- some kind of documentation?
- make it possible to change color for a trip
- discard waypoints? Or at least find a nicer presentation
- figure out if "routes" is relevant
- more inituitive layer-switcher
- consider flicker-integration
- handle error with large GPX-files
- some solution for bit.ly style permalinks
- handle heartRate extension, make HR graph//
- many of the features of http://utrack.crempa.net/
- export geom as KML/GeoJSON
- store actual GPX file for later download
- static link for height profile
- more maps (from where?)

I tillegg har jeg fått et tilbud om assistanse med litt design, så vi venter spent der 😉

Så, klikk deg over til http://geomatikk.eksplisitt.net/MineTurer/login.jsp, lag deg en bruker og last opp noen GPX-filer. Ser du noe som ikke fungerer? Si fra her eller på mail. Har du noen ideer? Si fra. Vil du bare klappe meg på skulderen? Gjør det også 😉 Har du lyst til å leke med koden? Clone ut fra https://bitbucket.org/atlefren/gpsorganizer

Fremover vil jeg nok prioritere å få på plass flere grafer (http://utrack.crempa.net/) inspirerte meg en smule), samt å prøve ut en cloud-tjeneste for å hoste dette.

Gps Trip Organizer

Oppdatering på http://www.atlefren.net/post/2011/09/mineturer-beta/

Jeg har flere ganger skrevet om hvordan man kan legge GPX filer over kartverkets WMSer, og dermed slippe unna “stygge” løsninger med Google Maps og særs dårlig detaljgrad på kartene. Dog, løsningene jeg har skissert før har krevd at man aktivt legger en GPX-fil på en webserver og deretter inkorporerer den i JavaScript kode.

Jeg har flere ganger også nevnt at det smarteste ville være å lagre GPX-filas geometrier i en PostGIS base, og dermed slippe å forholde seg til løse GPX-filer. Dette krever dog litt mer “jobb” enn en enkel JavaScript-side, man trenger noe serverside-kode, og man trenger en installasjon av PostGIS. Uansett, dette er jo ting jeg jobber ganske mye med til vanlig, så jeg tenkte å teste litt.

Mine “weapons of choice” er:

  • OpenLayers – Det mest kjente OpenSource kartrammeverket for Javascript
  • Java og Spring – Mest fordi jeg begynner å kjenne dette rammeverket ganske godt, men også fordi det gir meg tilgang til GeoTools
  • GeoTools og JTS, Java-biblioteker for å håndtere geometrier
  • PostGISDen ledende OpenSource romlige databasen
  • jQuery- JavaScript rammeverk som gjør livet så mye enklere!
  • Flot, et fint lite JS-bibliotek for å lage grafer

I tillegg tok jeg endel andre beslutninger ganske tidlig:

  • Jeg ville ha kartet mitt i EPSG:900913-projeksjonen (“Google”-projeksjonen), da kan jeg bruke kart både fra Kartverket, Google Maps og OpenStreetMap (blant andre)
  • Jeg ville lagre geometriene i EPSG:4326 (WGS84 Lengde-/Breddegrad). Dette er koordinatene som brukes i GPX-filer, dermed mister jeg ikke noe nøyaktighet ved å transformere
  • Planen var i utgangspunktet å lagre tracks i GPX-filene som MULTILINESTRINGer i PostGIS i XYXM (lat,lon,høyde og tid), men det viste seg at jeg med GeoTools ikke klarte å lagre 4D-geometrier. Løsningen ble å dobbeltlagre geometriene, både som en 2D-Multilinestring og som en samling 2D-punkter med høyde og tid som ekstra attributter. Ja, redundant, men da kan jeg hente ut kun linjegeometriene når jeg trenger det, og all informasjon for å generere høyde- og fartsprofiler
  • Jeg tenkte meg fort en løsning med innlogging, der man kan se alle sine opplastede tracks, og en mulighet for å hente ut en “permalenkle” man kan dele med andre
  • Jeg så fort at dette ville bli en “thick client”-applikasjon, som gjør bruk av mange AJAX-kall mot server-side funksjoner
  • Jeg ville at kartet skulle fungere for GPX-filer fra hele verden. Dermed er transformsjon til UTM sone 33 ikke en mulighet. Det viste seg at OpenLayers har en fin avstandsberegningalgoritme, som var lett å porte til Java.

Så, oppdaget jeg også endel problemområder:

  • Det å generere høydeprofiler var greit, her er man bare begrenset av høydeunøyaktigheten i GPS-enheten som har genrert GPX-fila. Dog, fartsgrafer er et problem, de blir så utrolig “hakkete”.
  • Det å bruke GeoTools for å kommunisere med PostGIS var utrolig krøkkete, dermed har jeg endt med å bruke WKT, ikke en helt optimal løsning
  • Jeg er elendig på GUI-design, og spesielt på grafiske ting. Dermed ser ting ikke helt optimalt ut.
  • Siden dette er en Java Web App, som kjører med PostGIS, duger ikke webhotellet mitt hos Subsys. Det betyr at jeg må se på en dedikert server, eller en Cloud-løsning. Enn så lenge har Alexander gitt meg tilgang på kj0leskap, en grei boks, men ikke noe high performance 😉
  • GeoTools har ikke noen skikkelig GPX-parser. Istedenfor å leite opp en skikkelig GPX-parser endte jeg opp med å skrive min egen med hjelp av SAXParser, noe som gikk ganske glatt når jeg gløtta litt mot GPX-spesifikasjonen. Dog, “routes” veit jeg ikke helt om er relevant.

Dog, på tross av dette (og det faktum at jeg kun jobber med dette på fritiden) har jeg kommet meg et stykke på vei, og på lørdag kveld la jeg ut en liten preview på http://geomatikk.eksplisitt.net/GpxUpload. Du kan teste den med brukernavn/passord test/test. Test gjerne å laste opp en GPX-fil, og skulle noe tryne er det fint om du sender meg en mail og sier fra om hva som gikk galt. Jeg blir også veldig glad om du legger ved GPX-fila du prøvde å laste opp, slik at jeg kan få feilsøkt litt. Jeg har nemlig funnet ut at ikke alle GPX-filer er like.

I tillegg har jeg lagt ut kildekoden til prosjektet på BitBucket, se https://bitbucket.org/atlefren/gpsorganizer/, under en BSD-lisens. Der har jeg også en TODO-fil, med følgende innhold (denne kommer jeg nok til å legge over i Issue-trackeren på BitBucket). TODOen min ser pr i dag slik ut:

in no particular order:
-handle different kinds of errors with gpx files
-find a solution for speed graph
- add labels to graph
- clustering on trip points
- change markers for trip points
- find a faster server than kj0leskap
- make it possible to delete trips
- make it possible to edit trip info
- consider displaying a simplified version of the geomerey
- make a "merge trips" function
- make a user register page
- use a database-table for user management
- write tests(!)
- some gui-improvements
- some kind of documentation?
- prettier login-page
- some kind of logo?
- make it possible to change color for a trip (and use another default color)
- discard waypoints? Or at least find a nicer presentation
- figure out if "routes" is relevant
- check for more GPX-types (tested qstarz and mytracks)
- prettify the upload-page
- blank out fields on upload page for next upload
- more inituitive layer-switcher
- more maps (from where?)
- consider flicker-integration
- handle error with large GPX-files
- fix charset hell

Så? Hva synes du? Er dette en tjeneste du kunne tenke deg å bruke? Er det noen ting du ikke synes fungerer? Har du oppdaget noe feil? Har du lyst til å bidra? Skrik ut, ting går sakte fremover her, så ikke forvent mirakler på kort tid, se det mer som et prosjekt jeg kjører for å lære meg endel ting, men som jeg håper andre kan ha nytte av.

OBS: Jeg tror ikke brukerhåndteringen er så glad i flere samtidige brukere, så opplever du problemer kan det være årsaken :\)

(PS: Det jeg har ute nå er bare en testversjon, så ikke regn med at linker vil fungere i fremtiden, eller at oppetiden er noe å skryte av. Regn ei heller med at dataene du laster opp vil ligger her i all evighet. DS)

Hjelp, jeg vil lære meg OpenSource WebGIS?

Ja, hvem vil ikke det? Joke aside, som jeg tror jeg har vist flere ganger her på bloggen er det mye man kan gjøre med en eller flere av tre komponenter:

  1. En romlig database
  2. En kartserver som støtter OGC-standardene (WMS,WFS etc)
  3. Et klient-side-bibliotek for å vise kart i en nettleser

For noen år siden hadde man ikke så mange muligheter på dette feltet som glad amatør. Romlige databaser var synonymt med ArcSDE fra ESRI, kartsevere som støttet OGC-standardene fantes ikke (dog, man hadde jo ArcIMS), og når det kom til klient-side biblioteker kunne man bruke det noe begrensede Google Maps, eller man kunne bruke noe fra ESRI.

Men, fortvil ikke, verden har endret seg. I dag finnes det fri programvare som kan fylle alle hullene:

  • PostGIS er en genial extention til PostgreSQL, og gir deg en fullverdig romlig database
  • Geoserver og Mapserver er to oppegående kartservere som heller ligger forran enn bak de proprietære løsningene
  • OpenLayers er et javascript-rammeverk som gjør alt det Google Maps APIet gjør, pluss mye, mye mer

Men, så var det hvordan man skal lære seg alt dette. Hvordan de forskjellige komponentene brukes, hvvordan de konfigureres og hvordan de spiller sammen. Mye kan såklart løses ved å studere Geomatikk, men det tar ganske mye tid. Mye kan også læres ved å se på tutorials og dokumentasjon på nett. I tillegg er det nesten et krav å beherske følgende:

  • SQL – bruk og teori
  • Programmering generelt, og kanskje JavaScript spesielt
  • Et eller annet slags server-side rammeverk, som f.eks. Java-Spring, Groovy-Grails, Ruby-Rails, JavaScript-Node.js, Python-Pyramid, PHP-whatever
  • En viss kjennskap til datumer, projeksjoner, koordinatsystemer, transformasjoner og GIS-operasjoner
  • Linux-generell bruk, om du skal kjøre på denne platformen (anbefales)

Men fortvil ikke, man trenger ikke kunne alt med en gang. Man kommer langt med å lære seg noe og bygge på når det trengs. Og nå er vi fremme ved hovedpoenget med denne posten: Det finnes etterhvert en rekke gode bøker som tar for seg OpenSource GIS-verktøy i dybden. Noen anbefalinger er:

  • GIS for Web Developers Denne er noen år gammel, og versjonene den dekker er nok litt utdaterte, men den tar for seg både PostGIS og Geoserver, samt filformater, projeksjoner, koordinatsystemer og generelle biblioteker
  • PostGIS in Action er en helt ny bok om, du gjettet riktig, PostGIS. Meget god bok, som også tar for seg endel basic geomatikk-emner på en lettfattelig måte.
  • OpenLayers 2.10 Beginner’s Guide er også en helt fersk bok, som tar for seg den nyeste versjonen av OpenLayers. Jeg har ikke rukket å lese denne, men ser mange positive omtaler av den.

I tillegg vil jeg varmt anbefale to bøker om JavaScript: JavaScript: The Good Parts og Object-Oriented JavaScript.

Hvis Java er din grunnplatform er du kanskje også interessert i min post om Javascript, GIS, testing, Maven og AJAX. Skal du jobbe med Geoserver vil du nok ha nytte av å kunne litt om Tomcat, da det er java-webcontaineren denne trives best i. Og det å lære seg PostgreSQL i seg selv er nok heller ikke dumt. Kartografi er også et tema som fort kan bli nyttig å kunne noe om, men på disse områdene er jeg litt blankere på gode bokanbefalinger. Så tips meg gjerne her!

Et problem er jo at både PostgreSQL med PostGIS og en Java-container ikke akuratt er standard på webhotell rundt omkring. En mulighet er jo å kjøre sin egen server, en annen mulighet er diverse Cloud-løsninger som popper opp for tiden. Uansett, med noe av kunnskapen her i boks står du godt rustet til både å lage egne netttjenester eller, hvis du er utvikler fra før, å komme deg over i en del av IT-verdenen som er i enorm vekst. Lykke til!

Geomatikkbransjen: I front eller tilbakelent i gamle sannheter?

Dette innlegget har jeg, etter oppfordring fra Alexander, skrevet og sendt inn til Posisjon, medlemsbladet for GeoForum, bransjeorganisasjonen for kart, oppmåling og geografisk informasjon, også kjent som Geomatikk. Jeg regner med at det kan være av interesse for andre enn de som får Posisjon i posten, dermed legger jeg det ut her også. Jeg tar gjerne imot kommentarer, men temaet er jo ikke nytt her på bloggen.

Google er ikke som oss. På godt og vondt. Der bransjen som opererer i krysningspunktet mellom IT og geomatikk (gjerne kalt GIS) er kjent for å lage tunge, kompliserte og dyre fagsystemer lager Google noe enkelt, som fungerer og som når ut til forbrukermarkedet.. Og det skal vi være glade for. Google Maps tvang oss til å tenke nytt. “Folk flest” forsto at kart på nett ikke trenger å være trege, tungvinte og begrensede. Det er én ting. En annen ting er alle nerdene der ute. De tok også i bruk Google Maps, og la tjenester på toppen av dette, noe Google gjorte lettere ved å åpne et API mot tjenesten. Men datafolk er rare. Gratis er ikke nok. Det skal være fritt (“free as in speech, not as in beer”, som amerikanerene sier).

Man hadde altså et problem. Det manglet kartdata man fritt kunne bruke, mikse med andre data og gjøre andre spennende ting med. Google sine data er bare ferdigtegnede fliser som fort kan inneholde reklame. De nasjonale dataene var (og er) dyre og utilgjengelige for mange. Dermed tenkte en gjeng initiativrike mennesker: “Se på Wikipedia, der har de klart å lage et fullverdig leksikon basert på dugnadsånd”. Og kimen til OpenStreetMap var lagt. Et sted for å samle inn og koordinere kartdata fra hele verden, basert på folks frivillige innsats. Og fritt til å brukes, av alle, til alle formål (dog, så lenge du overholder lisensen, som i kortform sier: “Ikke miks meg inn med dine stygge, ufrie data”). Og folk bidrar i stort monn. De setter GPSen sin på logging og kjører rundt for å finne ut hvor veiene går. De tar med seg GPSen på tur for å tracke stier. De har fått satelittbilder fra Microsoft og Yahoo! for å tegne inn bygninger, vann og den type ting som er vanskelig å tracke med en håndholdt GPS. Fordi dataene som allerede var samlet inn av det offentlige og det private var utligjengelige hadde man snublet over en ny måte å samle kartdata på, generelt kjent som «crowdsourcing», man setter det oppgaven ut til folket. Denne metoden har også Google fattet interesse for, og de kastet seg rundt å lanserte Google Map Maker etter samme prinsipp.

Men hva får folket igjen? Først av alt får de tilgang til data de selv kan bruke. Og bruke dem gjør mange. Derfor finnes det etterhvert en mengde løsninger rundt omkring basert på disse dataene. Gjerne i applikasjoner laget av ildsjeler, utenfor kartbransjen. For hva gjør geomatikerene? Jo, vi lener oss tilbake og sier: “Jammen, kvaliteten på dette må da være under enhver kritikk? Vi kan da ikke bruke dette?”. På samme måte sitter det mange leksikonforfattere, lærere og andre forståsegpåere og sier at “Vi kan da ikke stole på Wikipedia”, de har jo ingen kvalitetskontroll. Da kan vi begynne å diskutere kvalitet. Hva er det? ISO 9000 definerer kvalitet som: “Helheten av egenskaper en enhet har og som vedrører dens evne til å tilfredsstille uttalte og underforståtte behov.” Vi er like langt. Det avhenger av behovet. Og hva er det? Er det å regne på millimeteren hvor lang Glomma er eller er det å finne frem til den %#&@! bensinstasjonen? Er det værre at bensinstasjonen ligger 1 meter feil eller at den ikke er der i det hele tatt? Er dårligere data bedre enn ingen data?

Hva kan man si om slike crowdsourcede data? Nøyaktigheten blir nok i de fleste tilfeller dårligere enn om en landmåler hadde gjort jobben, men oppdateringsfrekvensen? Tilgjengeligheten? Bedre! “Kart er ferskvare”, ynder vi å si. Kvalitetskontrollen vi må ha sinker denne prosessen. Å bestemme hva som er best av dataene du finner i OpenStreetMap og det “folk flest” kaller “Kartverkets data” blir litt som å sammenligne pærer og bananer. De er gode på hvert sitt felt. Likevel vil OpenStreetMap-miljøet ha tak i “Kartverkets data”. Hvorfor? Fordi de synes det er mer spennende med en miks av pærer og bananer enn kun pærer. Høydedata er et godt eksempel, grenselinjer likeså. Dette er data det er vanskelig for amatørene (i ordets positive betydning) å samle inn selv. Så tenker man som så: “Vi, som i folket, har jo vært med på å finansiere de offentlige kartdataene, hvorfor skal vi se oss avspist med at kommunens saksbehandlere bruker dem? Eller at jeg kan kjøpe dem trykt på papir? Eller, nå i det siste, få tak i dem som WMS?”.

Endringer kommer ofte utenfra, og man må henge med eller forsvinne. Google brakte endring på softwaresiden når det gjelder kart. OpenStreetMap bringer endringer på datasiden. Da kan vi gjøre ett av to; som Store Norske Leksikon og si at “vi er best”, for så å dø en sakte død (naboen lempa forleden dag 10 bind leksikon i containeren, han har jo Wikipedia på telefonen), eller vi kan henge oss på, tenke nytt om kartdata og bli med på oppturen sammen med de glade amatørene. Google har satt gullstandarden for kartklienter på web, skal OpenStreetMap og andre få sette gullstandarden for oppdatering, forvaltning og synkronisering av kartdata eller skal bransjen selv ligge i forkant på dette feltet? Ved å gjøre som man alltid har gjort får man det man alltid har fått. Hva vil vi egentlig?