espenandersen.no

Dataprogrammering som journalistisk metode

Digital graving

28. mars 2010

Dugnad, opplevelse og struktur. Tre stikkord som kan vise seg å bli avgjørende for undersøkende prosjekter på nett i tiden som kommer.

Vi er på vei inn i en hverdag der tilgangen på masseutlevert informasjon stadig blir bedre. Gjennom den nye offentleglova (spes. § 9) har vi fått utvidet rett til innsyn i forvaltningens datasett. Samtidig jobber myndighetene med å tilrettelegge for bedret tilgang på data.

Vi spør ikke lenger bare etter statistikken, men også rådataene bakenfor. Undersøkende journalistikk vil i fremtiden basere seg stadig mer på analyse og presentasjon av store datamengder.

Vi tenker ofte på journalisten som en som sammenstiller konkrete opplysninger og setter dem inn i en sammenheng for å kaste lys på et misforhold.

En journalistisk orientert dataprogrammerer befatter seg i tillegg med strukturer og relasjoner – med sikte på å gjøre de samme undersøkelsene i et stort antall tilfeller.

Kart over branner i verneverdige bygninger

Hvert punkt viser en brannrammet adresse som også står på gul liste. Bak hvert kartpunkt ligger dokumentoversikten fra plan- og bygningsavdelingen. Den viste adressen er et tilfeldig eksempel som det ikke er noen mistenkelige forhold rundt.

Noe av journalistikken ligger nettopp i måten disse strukturene legges opp. Vi kan formulere journalistiske hypoteser gjennom skript, tabeller og spørringer.

Et eksempel er måten vi koblet tre datakilder sammen i én database i forbindelse med et Brennpunktprosjekt. Vi innhentet listen over verneverdige bygninger i Oslo (gul liste), og koblet dem med brannvesenets utrykningslogg samt plan- og bygningsetatens postjournal.

Vi kunne nå få svar på spørringer som: ”Hvilke verneverdige bygninger i Oslo brant etter avslag på rivningssøknad?”.

Databasen inneholder 157.152 dokumenttitler, 2.121 branner og rundt 8.000 gullistede eiendommer. En manuell gjennomgang var praktisk umulig.

Konspiratoriske kart

Vi laget først et kart med markører som viste hvilke verneverdige eiendommer som hadde hatt en brann i løpet av de siste årene. Klikket du på markøren kom dokumentlisten fra plan- og bygningsetaten opp.

Brann, illustrasjonsbilde

Å koble branner mot byggesakshistorikk kan gi opphav til mange konspirasjonsteorier, men i de aller fleste tilfellene finnes det ingen sammenhenger. Bildet er fra en brann i Bærum i 2009 (illustrasjon).

Brannene dukket gjerne opp midt i en smertefull saksgang, der grunneieren slet med å få nødvendige tillatelser til ombygging, riving, påbygg, fasadeendringer og lignende. Man kunne få temmelig konspiratoriske ideer bare ved å skumme dokumenttitlene før og etter branntidspunktet.

Presentasjonen antydet at det fantes en sammenheng mellom saksgangen og brannene som i de fleste tilfellene ikke var reell. De aller fleste brannene hadde imidlertid naturlige årsaker, og omfanget var i mange tilfeller begrenset. Vi valgte ikke å publisere dette kartet.

Vi holdt altså ikke brannene opp mot saksgangen i plan- og bygningsetaten i materialet vi presenterte på nettet. Dermed unngikk vi å gi næring til uriktige spekulasjoner.

Samtidig gikk vi glipp av noe annet viktig. Ved å unnlate å publisere dokumenttitlene, mistet vi den hjelpen vi kunne fått fra tusener av øyne der ute.

Nettdugnad i form av såkalt crowdsourcing er en mulighet som bare i begrenset grad er utforsket av norske medier. Crowdsourcing kan sammenlignes med en felles innsats hvor alle som er interesserte kan hjelpe til med å løse en felles oppgave.

Oppgaven kan for eksempel være å gå gjennom et stort antall dokumenter på jakt etter potensielle saker.

I vårt tilfelle kunne vi latt publikum gå gjennom byggesaker tilknyttet gullistede og brannrammede adresser. Folk kunne se etter mistenkelige forhold og påfallende sammentreff i datasamlingen, for så å rapportere tilbake.

Britiske The Guardian gjorde nettopp dette på sine nettsider i fjor sommer. Avisen publiserte 456.000 dokumenter, bestående av bilag fra parlamentsmedlemmene. De lot sine egne lesere gå gjennom dokumentene for å finne mistenkelige refusjonskrav.

De første par dagene pløyde velvillige lesere gjennom 97.466 sider med bilag og flagget dem som ”uinteressante” eller ”interessante”.

Eksempelet med brannkartet viser at en databasespørring aldri alene kan resultere i en fornuftsbasert rangering av datagrunnlaget. Materialet må analyseres av individer med bakgrunnskunnskap og analyseferdigheter. Her kommer The Guardians metode til nytte.

Svineinfluensa, makt og politikere

Folk engasjerer seg på nett i den grad de får noe igjen for det. Et undersøkende nettprosjekt må gi noe umiddelbart tilbake for å få publikum med seg på dugnaden. De må føle at deres bidrag monner.

En liste med byggesaker koblet til et tipsskjema vil ikke alene være nok til å engasjere et stort antall folk. Bidragsyterne må ”belønnes” i form av synlige tilskudd og endringer i databasen.

VG Nett er blant redaksjonene som har eksperimentert med crowdsourcing i Norge. I fjor høst inviterte de sine lesere til å oppdatere listen over lokalpolitikere i Norge. I løpet av noen få timer kom det inn over 200 tilbakemeldinger.

Da den samme redaksjonen skulle lage en oversikt over vaksineprosjektet i forbindelse med svineinfluensaen, brukte de en lignende tilnærming: Hver kommune fikk sin wiki-side der publikum kunne fylle inn opplysninger om den lokale håndteringen av vaksinasjonene.

Brennpunkts egen oversikt over lokalpolitikere og deres næringsinteresser, Maktbasen, er et annet eksempel hvor crowsdourcing kunne spilt en viktigere rolle.

Dagens versjon av Maktbasen har et enkelt tipsskjema som inviterer leseren til å si i fra om feil, mistenkelige forbindelser eller dobbeltroller. Responsen kommer til redaksjonen i form av en e-post, og innholdet er ikke strukturert på noen måte.

Her ville vi kunnet trekke store fordeler av å gi basen et mer strukturert tilbakerapporteringssystem. Folk bør inviteres til å bli med på dugnaden gjennom aktivt å foreslå endringer i basen.

Tanken sammenfaller med prinsippet bak det brukerstyrte nettleksikonet www.wikipedia.org – bortsett fra at innrapporteringen bør skje gjennom strengt strukturerte skjemaer. På denne måten vil dataene enkelt kunne legges inn i databasen etter faktasjekk og godkjenning.

Dugnad, opplevelse og struktur

Vi kunne for eksempel latt publikum konstruere sine egne nettverkskart. Dermed vil folk utvide de eksisterende nettverkene ved å legge til relasjoner som de mener er relevante, basert på individuelle kunnskaper om lokale forhold.

Redaksjonen må kontrollere og publisere innsendte rettelser og utvidelser etter hvert som de kommer inn. De mest interessante konstellasjonene undersøkes nærmere av journalister.

Ideen bak prosjektet ”They Rule” i USA er på mange måter den samme. Her kan leserne lage sine egne, visuelle oversikter med forbindelser mellom styremedlemmene i USAs mektigste foretak.

Crowdsourcing som undersøkende metode åpner for svært spennende prosjekter. Metoden kan gi oss databaser med en journalistisk verdi som langt overstiger hva offisielle datakilder alene kan tilby.

Folks engasjement er knyttet til opplevelsen av å være med på noe viktig. De må dessuten få noe igjen for innsatsen. Resultatet av dugnaden bør med andre ord publiseres uten restriksjoner, gjerne i form av nedlastinger og såkalte API-er, som gjør det mulig for andre å trekke ut datasett til eget bruk.

Det er fortsatt viktig å ha redaksjonell faktasjekk på informasjonen som legges inn. Opplysninger som føres inn i en undersøkende nettdugnad må selvsagt kontrolleres før de publiseres. En streng struktur på tilbakemeldingsskjemaet, gjennom et godt planlagt brukergrensesnitt, gir høyere kvalitet på dataene, og forenkler jobben med å godkjenne og publisere bidragene.

Å forene Google Maps med Kartverket

19. mars 2010
Kartverkets sjøkart

Eksempel på hvordan Kartverkets sjøkart kan legges inn i Google Maps. Her er det brukt for å illustrere Sleipner-forliset.

Sitter i skrivende stund på toget på vei til SKUP-konferansen i Tønsberg. Der skal jeg blant annet snakke litt om avansert bruk av Google Maps i journalistikken.

Sjøkart, topografi og bygninger

Under forberedelsene til foredraget tok jeg en titt på de nye, såkalte WMS-tjenestene fra Statens Kartverk. Disse digitale gratiskartene ble lansert i desember i fjor, og kan enkelt integreres med blant annet Google Maps.

Det har egentlig ikke slått meg før nå hvilken fantastisk forbedring dette kan være i forhold til de originale Google-kartene.

Kartverket har publisert flere ulike karttyper, som for eksempel topografiske kart, sjøkart og svært detaljerte rasterkart.

Enkel utvidelse

Google Maps API-et tillater oss å opprette egendefinerte karttyper. Ved å legge til 4-5 kodelinjer i de eksisterende skriptene, kan du faktisk integrere Kartverkets kartgrunnlag i eksisterende Google Maps-applikasjoner.

Mine enkle kodeeksempler finner du her.

Hvor er nærmeste lokalavis?

5. februar 2010
Aviskart

Nå trenger du ikke lenger lete lenge for å finne redaksjonen som er nærmest en nyhetshendelse.

Hvilken lokalavis dekket nyhetsbegivenheten?

Problemstillingen er nokså vanlig i større redaksjoner som ønsker å kjøpe de ferskeste pressebildene fra hendelser rundt om kring i landet.

For noen år siden laget jeg dette kartet, som plasserer de fleste av landets aviser geografisk. Du kan søke på stedsnavn eller avisnavn.

Forhåpentlig kan kartet gjøre jakten på bildene enklere.

Informasjonen er hentet fra hjemmesidene til Mediebedriftenes Landsforening (MBL) og Landslaget for Lokalaviser (LLA).

Gå til kartet.

Skjermskraping i Access

21. januar 2010

Jeg får ofte spørsmål om hvilke dataprogrammer som kan brukes til å massenedlaste strukturerte data fra nettet til journalistisk bearbeiding. Teknikken kalles ofte for skjermskraping eller web scraping. 

De alternativene som finnes er ofte kompliserte å bruke. Noen av dem er i tillegg kostbare i innkjøp. Du kunne lenge laste ned RoboMaker fra OpenKapow. Dette programmet var lenge et alternativ. Men en funksjonell versjon av programmet er ikke lenger tilgjengelig. 

Access og makroer

Mange har imidlertid Microsoft Access installert på sin maskin. Dette er i utgangspunktet et program for å lage personlige databaser. 

Makro-knappen finner du under "Opprett"-fanen i siste versjon av Access

Makro-knappen finner du under "Opprett"-fanen i siste versjon av Access. Velg "Modul".

Men Microsoft har forsynt sine Office-applikasjoner med et kraftig programmeringsverktøy som vi kan utnytte. 

Dersom du oppretter et nytt databaseprosjekt, får du muligheten til å opprette tabeller og spørringer. Men i tillegg har du makroer. Under opprett-fanen kan du klikke på pilen nede på ”Makro“-knappen. 

Velg “Modul“. Du kommer da inn i et komplett utviklingsmiljø der du kan bruke programmeringsspråket Visual Basic for Applications (VBA) til å styre nær sagt hva du vil på datamaskinen. 

For å laste ned informasjon fra nettet, trenger du en nettleser, for eksempel Inernet Explorer (IE). IE kan “fjernstyres” fra Access, og koden bak nettsidene du navigerer til kan hentes. Deretter kan du hente ut strukturert informasjon fra nettsiden. 

Jeg har skrevet litt mer konkret om temaet i forbindelse med et innføring jeg hadde for en håndfull spesielt interesserte kolleger på IJ i begynnelsen av denne uken. Hvis du også er spesielt interessert, finner du mer om temaet her.

Ny seier i miljøklagenemnda

11. januar 2010

Siste: I dag (28. januar) kom filen med basestasjonene fra NetCom – innenfor fristen og på et format som gjør det greit å oppdatere kartet på nettet.

I dag kom vedtaket fra miljøklagenemnda, der Netcom pålegges å utlevere en samlet oversikt over sine GSM-basestasjoner til Brennpunkt-redaksjonen. Tidligere er Telenor pålagt å gjøre det samme.

Informasjonen om hvor GSM-senderne står faller inn under bestemmelsene i miljøinformasjonsloven, og skal altså være tilgjengelig for allmennheten.

Les vedtaket her: DOCS-#1384684-v1-NetCom_-_endelig_vedtak

Ifølge klagenemnda er informasjonen om mobilbasestasjonenes plassering å regne som miljøinformasjon som ikke kan holdes tilbake. Dermed har enhver rett til å få utlevert disse opplysningene fra telenoperatørene:

Flertallet kom til at informasjon om mobilmastenes plassering er opplysninger om forhold som kan medføre en ikke ubetydelig påvirkning på miljøet, jf mil. § 9. Sentralt i flertallets vurdering stod at, selv om Statens strålevern ikke per i dag har dokumentasjon på at det foreligger helserisiko ved stråling, medfører den usikkerheten som foreligger og publikums interesse og uro i tilknytning til strålingen fra mastene, at vilkåret om ”ikke ubetydelig påvirkning” jf mil. § 9 må anses oppfylt.

Jeg synes dessuten at det er interessant at flertallet mener den fysiske utplasseringen av mobilmastene alene kan anses som relevant i forhold til miljøinformasjonsloven. Uavhengig av de vurderingene man måtte gjøre i forhold til strålingen: 

(…) For øvrig peker flertallet på at selve den fysiske utplasseringen av mobilmaster rundt om i landet uansett i mange tilfelle trolig ville måtte anses som et forhold som kan ha en ikke ubetydelig påvirkning på miljøet på grunn av de inngrep som dette forårsaker.

Jeg ba om oversikten for å kunne utvide kartet over GSM-senderne ytterligere. Foreløpig inkluderer det kun Telenor sine sendere.

Kartet har vært godt besøkt siden NRK publiserte det på nettet, og interessen for temaet er åpenbart stor.

Søk i fylkesmennenes postlister

13. desember 2009

Vi venter vel alle på  at den nye, elektroniske postjournalen for forvaltningen skal komme. I mellomtiden har jeg samlet fylkesmennenes postlister i en søkbar database og gjort den tilgjengelig her.

Noen av dere husker kanskje at jeg gjorde akurat dette allerede for noen år siden. Den gangen gikk tjenesten ned etter en stund, fordi formatet på postjournalene ble endret slik at databasen ikke lenger  ble oppdatert.

Nå har jeg skrevet applikasjonen på nytt, og forbedret den en del. Databasen oppdateres hver natt. Den leser postjournalene fra statiske websider hos www.fylkesmannen.no og legger dataene inn i en database.

På den måten får du nå mulighet til å følge enkeltsaker ved å klikke på saksnummeret, eller se hvilke saker som sorterer under gitte avdelingskoder eller saksbehandlere. 

Gå til databasen og prøv selv. Den er forbeholdt journalistisk virksomhet.

Digital speilrefleks under vann

26. november 2009

Undervannshus til Nikon D200 koster noen kroner, men etter dagens dykk må jeg bare si at det var verd pengene!

Her ser dere noen av bildene jeg tok på 10-20 meters dyp utenfor Gylte ved Drøbak i dag:

Som ekte nerd har jeg naturligvis skrudd sammen en plugin til WordPress som leser eksportfilene fra dykkercomputeren min og presenterer dykkerprofilen her.

Undervannshus til Nikon D200

Kjenner at fotointeressen får en ny renessanse nå. Undervannshuset er av merket Nimar (italiensk fabrikat, håpløse hjemmesider), faktisk en forholdsvis rimelig løsning. Huset er gjennomsiktig, og laget av polykarbonat.

Fra før av hadde jeg en Nikonos SB-105 undervannsblitz, som jeg festet til Nimar-huset ved hjelp av plaststrips.

Dertil har jeg kjøpt et fokuslys, som gjør det mulig for kameraets autofokus å holde følge også under såpass dårlige lysforhold som i Oslofjorden i slutten av november.

Valg av brennvidde

Porten (tuten) på undervannshuset kan byttes ut, avhengig av hvilke objetiv du ønsker å ha med deg ned. Jeg gikk for en vidvinkelport til mitt oppsett.

På kameraet står et 20mm objektiv. Jeg priorterte vidvinkel av følgende grunner:

  • Vidvinkelobjektiver har stor dybdeskarphet. Dette betyr at du kan bruke større blenderåpninger i dårlig lys.
  • Med vidvinkel blir kamerabevegelser mindre synlig på bildene. Med andre ord kan du bruke lengre lukkertider for å beholde mest mulig av det lille eksisterende lyset som finnes under vann.
  • Du kan gå mye nærmere motivene. Det betyr færre siktreduserende partikler mellom kameraet og motivet. Bildene blir klarere og skarpere dess nærmere motivet du kommer.
  • Vidvinkel gir god dybde i bildene. Det er lettere å ta bilder med en distinkt forgrunn der perspektivet ikke er sammentrykket og flatt.

Kartet over GSM-stasjonene

16. november 2009
I sommer laget jeg en oversikt over GSM-basestasjonene til Telenor, som ble publisert på NRKs nettsider.

I sommer laget jeg denne oversikten over GSM-basestasjonene til Telenor, som ble publisert på NRKs nettsider.

Jeg legger inn noen linjer om hvordan jeg jobbet med Brennpunkts kart over Telenors basestasjoner. Kanskje noen har innspill til andre og bedre måter å løse ting på i fremtidige prosjekter?

1 Innhenting av data

Rådataene kommer fra Telenor, men utleveringen skjedde ikke frivillig. Vi begjærte innsyn i dataene med hjemmel i miljøinformasjonsloven.

Innsynsbegjæringen ble avslått, men miljøklagenemnda ga oss medhold, og påla teleselskapet å utlevere dataene.

Vi har i skrivende stund en tilsvarende klagesak gående mot NetCom, som også motsetter seg utlevering av informasjon om basestasjonenes plassering.

2 Konvertering av data

Dataene fra Telenor kom som en Excel-fil, med felter for kommune, navn, type, og desimalgrad. Denne konverterte jeg til en sql-fil for databaseimport.

3 Databasen

Jeg brukte MySQLs geospatial indexing for koordinatene til basestasjonene. Denne delen av MySQL er imidlertid svært mangelfull. PostgreSQL gir langt bedre muligheter dersom man tar i bruk PostGIS.

Mange av GIS-funksjonene i MySQL er ennå ikke implementert, for eksempel funksjonen for å regne ut avstand mellom to punkter, noe jeg trengte for å plukke ut nærmeste basestasjoner i forhold et gitt kartpunkt, samt geografisk avstand i kilometer mellom hver av dem.

Jeg fant denne presentasjonen, som beskriver en veldig hårete spørring for å returnere avstanden mellom to punkter i MySQL. Funker som bare det J

http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL

4 XML-feeden

Et PHP-skript genererer en XML-feed med informasjon om basestasjonene innenfor et kartutsnitt. Klienten (flashapplikasjonen) rapporterer valgt kartutsnitt til PHP-skriptet, som returnerer et cachet utsnitt tilpasset området brukeren vil titte på.

Eksempel:

http://www.nrk.no/basestasjoner/list.php?bounds=18.80,69.70,19.12,69.60&z=9

Skriptet normaliserer (kvantiserer) det bestilte utsnittet, slik at de returnerte dataene alltid dekker et større område enn det utsnittet (viewport) brukeren ser på i øyeblikket. Dette for å begrense nettverkstrafikken og for å gjøre caching praktisk mulig.

Jeg har forsøkt å begrense størrelsen på individuelle XML-filer til under 300K. De fleste ligger nok på godt under 100K.

Klienten gjør en ny spørring mot databasen bare dersom brukeren har dratt kartet utenfor den leverte rammen.

5 Clustring av kartpunkter

I områder med stor tetthet av kartpunkter blir punktene samlet i klynger. Dette skjer server-side, i PHP-skriptet. Klienten rapporterer zoomnivået, noe som gjør det mulig å regne ut avstand i absolutte piksler mellom hvert punkt.

Punkter slås sammen dersom avstanden mellom dem er mindre enn 70 piksler. Informasjon om hvordan gjøre dette fant jeg et eksempel på her:

http://www.appelsiini.net/2008/11/introduction-to-marker-clustering-with-google-maps

Clustringen skjer altså server-side for å avlaste klientene. Dette er en tung rutine som drar fordel av server-side cacing. Client side clustering av kartpunktene ville ført til ulidelig treg responstid på lave zoomnivåer.

6 Caching

Bruker Zend Cache, hvor man enkelt kan swappe mellom memcached og file cache. Produksjonsmiljøet kjører med memcached og nyter godt av gode responstider, selv når trafikken er høy.

7 Google Maps for flash

Veldokumentert API her:

http://code.google.com/intl/no/apis/maps/documentation/flash/reference.html

Har ingenting i mot AJAX, men det blir for kronglete å styre med JS i publiseringsverktøyet vårt, som er Polopoly — derfor ble det Flash.

Bruker for øvrig Googles geocoding-tjeneste (ClientGeocoder-objektet) til stedsnavn-søket. Informasjonsknappen som søker opp basestasjoner rundt et gitt kartpunkt bruker dessuten Googles reverse geocoding-funksjon for å returnere stedsnavn fra et gitt koordinat.

8 Grafikk

Animerte kartikoner er laget i LightWave 3D. Ikke veldig utfordrende å lage noe som ligner på de rektangulære GSM-antenneboksene til Telenor.

Animasjonen ble lagt inn i en egen (bitte liten) flash-fil og kompilert til en frittstående swf som jeg deretter embeddet i hoved-flashen.

Størrelsen på den ferdige swf-en er 228 kB. Den inkluderer alt av grafikk, animasjoner og fonter. Flashappen bruker ikke andre eksterne ressurser enn Google Maps API-et samt XML-feeden fra vår egen MySQL-database.

Dere kan slutte å mase

14. november 2009

Gamle espenandersen.no har tatt turen til de uvaliderte websiders evige jaktmarker.

Dette skjer etter et vedvarende, utidig press fra visse venner og kolleger, hvis omsvøpsløse karakteristikker av mine tidligere, håndkodede websider nærmet seg Dagbladets legendariske slakt av Postgirobyggets «Supertanker» i 1999.

De hadde rett. Foreløpig er det litt snaut med innhold her, men satser på å fylle opp med faglige ting, pludring og hobbyting utover vinteren.

Häng med!