Blackbox Euroairport

Der Streit rund um die Nachtflüge am Euroairport in Basel schwelt seit Jahren, die Fronten (Flughafen/Anwohner) sind klar, die Argumente teilweise zweifelhaft. So lässt sich der Flughafen nur ungern in die Karten blicken, etwa wenn es darum geht, welche Flüge / Fluggesellschaften besonders häufig spät (nach 23 Uhr) starten. Auch um die genauen Abflug-Routen herrscht Verwirrung – «die Flugzeuge könnten früher abbiegen und über unbesiedeltes Gebiet starten» behaupten Fluglärm-Gegner, das werde bereits gemacht, sagt der Flughafen. Zwei Streitpunkte, die ich mit datenjournalistischem Ansatz angehen konnte.

Streitpunkt 1: Welche Flüge und Fluglinien starten am häufigsten nach 23 Uhr?

Der Flughafen veröffentlicht auf dieser Seite die täglichen Abflugzeiten – und zwar die tatsächlichen, nicht, wann die Flugzeuge nach Flugplan starten oder das Dock verlassen. Die Daten werden jedoch nach sieben Tagen wieder gelöscht. Nicht jedoch für einen Scraper, der täglich darauf zugreift und die Daten in eine Datenbank schreibt. Diese liegen als Javascript-Variabel vor, und zwar folgendermassen:

var flights = {"00:00":[{"datetime":"2018-02-03 23:03:00","runway":15,"flight_pattern":"N","direction":"D","airline":"REGA","flight":"FR2","destination":"DIVERS CH","aircraft":"HELICO","mtow":3000,"noise_idx":"11.0","destination_fr":"DIVERS CH","destination_de":"DIVERS CH","destination_en":"DIVERS CH","hour_runway":"23_15","procedure":null,"time":"00:03"}],"06:00":[{"datetime":"2018-02-04 05:25:00","runway":33,"flight_pattern":"S","direction":"D","airline":"IBERIA","flight":"IB9048","destination":"MADRID","aircraft":"MODEL757\/200 WITH RB211C","mtow":99790,"noise_i [...]

Das Format entspricht JSON und kann mittels JSON-Decode in ein PHP-Array umgewandelt, analysiert und bereits mit perfekten Labels versehen in eine entsprechende Datenbank eingefügt werden. Und zwar so:

$starts = json_decode(substr($html,strpos($html,"var flights")+14,strpos($html,"var ul_width")-strpos($html,"var flights")-18), true);
 foreach($starts as $zeit=>$content){
 if($zeit == "22:00" || $zeit == "22:30" || $zeit == "23:00" || $zeit == "23:30" || $zeit == "00:00" || $zeit == "00:30" || $zeit == "01:00" || $zeit == "01:30" || $zeit == "02:00" || $zeit == "02:30" || $zeit == "03:00" || $zeit == "03:30" || $zeit == "04:00" || $zeit == "04:30" || $zeit == "05:00" || $zeit == "05:30"){
 foreach($content as $einzelnerflug){
 echo $einzelnerflug["time"]."|geplant ".$einzelnerflug["datetime"]." Flugdetails:".$einzelnerflug["airline"]."|".$einzelnerflug["destination"]."<br/>";
 $wpdb->insert('EAPstarts',$einzelnerflug);
 }
 }
 }

Um Dubletten zu vermeiden, habe ich die Spalte Datetime als Unique Key definiert. Und um das Script täglich aufzurufen, habe ich einen CRON-Job definiert:

Für die Auswertung habe ich auf Excel vertraut, indem ich folgende MYSQL-Abfrage gemacht und die Resultate als CSV-Datei exportiert habe:

SELECT * 
FROM `EAPstarts` 
WHERE TIME LIKE "%23:%"

Die Auswertung mittels PIVOT-Funktion geht schnell und zuverlässig und bietet genügend Funktionen, um alle interessanten Fragen zu beantworten (die Spalten 15 und 33 bezeichnen die Startrichtung).

Aufbereitet als Infografik
Aufbereitet als Infografik

Veröffentlicht als Text im Print und online.

Fragestellung zwei: Welche Route fliegen die Flugzeuge bei Süd-Starts?

Fluglärmgegner behaupten seit Jahren, dass die Flugzeuge bei Südstarts früher abdrehen könnten und dadurch unbesiedeltes statt besiedeltes Gebiet überfliegen. Die Materie ist sehr kompliziert, aber mittels Flightradar24.com ist es möglich, die Südstarts zu exportieren und in Google Maps darzustellen. Hierzu ist ein kostenpflichtiger Flightradar-Account nötig (oder zumindest eine 7-tätige Test-Version) und ziemlich viel Handarbeit nötig (wahrscheinlich lässt sich vieles automatisieren und ich weiss nicht, wie). So habe ich die manuelle Variante gemacht:

Zunächst habe ich auf der Abflug-Seite des Euroairports nach Südstarts gesucht, die entsprechende Flugnummer auf Flightradar24.com eingegeben und ein KML-File heruntergeladen. Wie dies geht, ist hier beschrieben. Das File habe ich danach in eine Google Map als Layer importiert; es werden gleichzeitig zwei Layer erstellt, eine mit Punkten (wieder gelöscht) und eine mit dem Linienverlauf. Leider ist die Anzahl Layer in Google Maps auf zehn limitiert, aber eine Idee der ungefähren Startrouten ist dennoch möglich. Zur schöneren Darstellung habe ich die uninteressanten Punkte (einzeln) gelöscht, Tipp: Delete-Taste gedrückt halten und linke Maustaste klicken. Danach habe ich den Layer in die Flugnummer inklusive Datum umbenannt.

Das Resultat:

Der zweite Streitpunkt betrifft die Flughöhe. Auch diese Daten sind in den KML-Files enthalten, zur Darstellung wird jedoch Google Earth verwendet. Entstanden ist folgendes Bild, wobei die grünen Linien normale Flüge und die roten Linien für Flüge stehen, die vom hinteren Pistenrand aus gestartet sind.

Starts vom Nordende der Piste (rote Linien) bringen Höhengewinne.

Entstanden daraus ist ein Faktencheck, auf den ich verweise, sobald er veröffentlicht wurde.

Erste Erfahrungen mit Instant Articles

Facebook hat vor einigen Wochen „Instant Articles“ für die Allgemeinheit geöffnet. Es ist schwierig abzuschätzen, wie gross der Einfluss von IA auf die Medienlandschaft allgemein und spezifisch in der Schweiz sein wird, aber es ist gut vorstellbar, dass es ziemlich heftig werden könnte. Wenn man beobachtet, wie unverfroren Facebook derzeit Live-Videos pusht, dann ist der Konzern eine Algorithmus-Anpassung davon entfernt, dasselbe mit den „Instant Articles“ zu tun – diese also im Gegensatz zu normalen Links massiv zu bevorzugen. Und wenn man dann noch das tatsächlich bereits jetzt unvergleichliche Nutzererlebnis beim Klick auf einen IA-Link dazurechnet, dann…

…dann lohnt es sich definitiv, als Medienunternehmen, aber auch als digital interessierter Journalist, einen Blick auf „Instant Articles“ zu werfen und erste Erfahrungen zu sammeln.

Aus dieser Überlegung habe ich vor einem guten Monat meine Website „Instant Articles“-ready gemacht und einige Artikel für das „IA“-Review bei Facebook angemeldet. Ich veröffentliche hier bei Interesse gerne eine Anleitung, wie das für eine Wordpress-Site funktioniert.

Mittlerweile konnte ich erste Erfahrungen sammeln, und es zeigt sich, dass „Instant Articles“ vom Algorithmus (noch) nicht deutlich bevorzugt werden, aber dass sie besser gelesen, geliked und geteilt werden als Website-Links. Dies lässt sich auch an ersten Zahlen ablesen, wobei die Datengrundlage natürlich zu dünn ist, um verlässliche Angaben machen zu können.

Dazu ein Vergleich zweier Posts und die dazugehörigen Zahlen:

Normaler Link:


Reichweite: 556 | Reaktionen: 3 | Klicks: 26

Instant-Article-Link:


Reichweite: 1038 | Reaktionen: 7 | Klicks: 120

Fazit: Instant-Articles bringen doppelte Reichweite, mehr Interaktionen und ein massiver Anstieg bei den Klicks. Natürlich ist die Datengrundlage, wie bereits erwähnt, äusserst dünn – aber zumindest die Zahlen für den Post mit dem normalen Link entsprechen dem Durchschnitt meiner Facebook-Seite. Habt ihr auch schon Erfahrungen mit Instant-Articles gesammelt? Und wie schätzt ihr deren Bedeutung für die Medienunternehmen ein? Über eine Diskussion in den Kommentaren würde ich mich freuen.

Twitter ist tot!

Vor gut zwei Wochen habe ich für die bz Basel eine aufwendige datenjournalistische Analyse über den FC Basel als Publikumsmagnet in den Stadien seiner Gegner erstellt. Mit folgendem Tweet habe ich den Text gleich nach Erscheinen verbreitet:

Der mit dem in FCB-Fan-Kreisen populären Hashtag #rotblaulive markierte Tweet wurde insgesamt acht Mal retweetet, unter anderem von @tageswoche mit 27’700 Followern. Vor ein paar Jahren noch hätte ein einziger solcher Retweet gefühlt 30, 40 neue Follower gegeben. Exklusive Story, direkt vom Autor, zu einem Thema, das die Follower von @tageswoche interessieren dürfte… der Klick auf den Follow Button wäre die logische Konsequenz. Diesmal, mit „das-dürfte-dir-gefallen“ und Werbetweets, die sich dauern zuoberst in der Timeline halten, gabs: Einen Follower.

Zur etwas reisserischen Aussage „Twitter ist tot“ bringt mich aber nicht das Ausbleiben von Followern, sondern die Analyse, weshalb das so sein könnte. Dank analytics.twitter.com, dem offiziellen Analyse-Tool von Twitter, zeigt sich nämlich deutlich: Es ist die Reichweite, die nicht mehr stimmt. Dazu diese simple Rechnung:

@sinnmacher (197 Follower) + @salizaemme (626 Follower) + @thierrymsbr (120 Follower) + @Chris_Wachtler (154 Follower) + @tageswoche (27’700 Follower) + @samswald (614 Follower) + @CR_Sieber (3549 Follower) + @erlanger_s (287 Follower) + meine eigenen 775 Follower ergeben eine maximal mögliche Reichweite von 34’022. Die bei Twitter Analytics angegebene tatsächliche Reichweite (siehe oben) betrug für diesen Tweet hingegen lediglich 3298 – was nicht einmal zehn Prozent entspricht.

Twitter scheint also tatsächlich voll von Fake- und nicht mehr gebrauchten Accounts zu sein, oder gibt es andere Erklärungen dafür? Über eine Diskussion in der Kommentarspalte würde ich mich freuen.

Bookmarklets

Was sind Bookmarklets und weshalb machen sie Sinn im journalistischen Alltag?

Download Audioprotokolle Nationalrat

Die Sitzungen im Parlament können in der Datenbank des Amtlichen Bulletins durchsucht werden. Nebst den Wortprotokollen gibt es zu den Geschäften auch eine Videoaufzeichnung, die im Browser gestreamt werden kann. Als Beispiel hier die Links zum Wortprotokoll und zum aufgezeichneten Live-Stream des Geschäfts „Fragestunde. Frage Grin Jean-Pierre. Zunahme der Importmenge von gewürztem Fleisch“ (besser bekannt als Bü-Bü-Bündnerfleisch). Zum Herunterladen und konvertieren der Datei ins mp3-Format habe ich den VLC-Player verwendet. Dort die Stream-URL unter Menu>Konvertieren/Speichern>Netzwerk eingeben und als Ausgabeformat .mp3 wählen. Das Speichern erfolgt in Echtzeit.

Eigene Artikel auf Facebook-Page posten

Einfacher Ansatz, aufwendige Lösung. So könnte man meine Bemühungen festhalten, meine eigenen neuen Artikel auf 20min.ch automatisch auf meiner Facebook-Page und hier auf diesem Blog zu posten. Hier eine Schritt-für-Schritt-Anleitung.

1. News-Site mit Google-Alerts überwachen.
Google-Alerts schickt automatisch eine E-Mail, wenn ein neuer Eintrag zu einer bestimmten Suchabfrage in den Resultaten erscheint. Der Dienst funktioniert auch mit Google-News und kann statt einer E-Mail auch einen RSS-Feed generieren. In meinem Fall alle neuen Artikel auf „site:20min.ch“, die „von Samuel Hufschmid“ enthalten. Der Alert findet sich hier, der dazugehörige RSS-Feed hier.

2. RSS-Feed mit ifttt.com auf Facebook-Page posten
Der Automatisierungsdienst ifttt.com (ifthisthenthat) wirbt mit dem Slogan „Put the internet to work for you“ und erlaubt neuerdings auch Updates von Facebook-Pages. Das entsprechende Rezept wird immer dann ausgelöst, wenn im RSS-Feed ein neues Item erscheint. Facebook zeigt den Artikel inkl. Link und Bild an. Das Rezept habe ich hier veröffentlich.

3. RSS-Feed als Widget in WordPress integrieren
Damit die Artikel auch auf diesem Blog erscheinen, habe ich den RSS-Feed als Widget der Sidebar hinzugefügt. Im Gegensatz zu den Facebook-Einträgen erscheint lediglich der Titel inkl. Link.

Update:
Ein Speedtest für meinen ersten Artikel zeigt:
20.10.2013 20:37 Veröffentlich auf 20min.ch
20.10.2013 23.03 Facebook-Eintrag veröffentlicht
= 2,5 Stunden, bis der Artikel von Google gefunden, der RSS-Feed ergänzt und von ifttt.com gescannt wurde. Dafür, dass keiner dieser Dienste auch nur einen Rappen kostet, eine durchaus verkraftbare Verzögerung.

Google Autorship für Journalisten

Inspiriert von diesem Blog-Post („The One Reason Every Blogger Should Use Google+“) habe ich mich erstmals mit Google Autorship auseinandergesetzt. Kurz zusammengefasst bietet Google Autorship die Möglichkeit, eigene Artikel in Suchresultaten persönlicher darstellen zu lassen – also mit Foto und Link zum eigenen Google+-Profil. Zunächst habe die Artikel auf samuelhufschmid.ch autorisiert, was gemäss der oben verlinkten Anleitung problemlos funktioniert hat. Eigentlich kein Wunder, läuft dieser Blog doch mit dem meisterverwendeten CMS der Welt – WordPress. Schwieriger war es, mich als Autor meiner Artikel auf 20minuten.ch anzugeben. Zwar steht auch dort mein Name als Autor und ich verfüge auch über eine @20minuten.ch-Emailadresse, aber zunächst wollte das Unterfangen nicht funktionieren. Google bietet mit dem Structured Data Testing Tool eine Möglichkeit, die Fehlerquelle zu identifizieren. „Authorship is not working for this webpage“, hiess es dort. Und ich habe aufgegeben, da ich aus guten gründen nicht am Quellcode von 20min.ch herumbasteln darf. Die freudige Überraschung kam dann einige Tage später, als ich per Zufall auf google.com mein Bild neben einem meiner Artikel auf 20min.ch entdeckt habe.

 

Personensuche mit Facebook Graph

Facebook Graph Search ist wohl eines der mächtigsten Werkzeuge für Journalisten. Wieso? Hier ein aktuelles Beispiel aus der 20 Minuten Redaktion. Die Facebook-Seite Basel’s Schönheiten ist derzeit bei Jugendlichen sehr beliebt (3500+ likes). Die Administratoren posten Fotos von jungen Männern und Frauen, die dann vom Pöbel kommentiert und vor allem geliked werden. Die meisten Likes hat Facebook-Userin Marta Adriana Alejos erhalten, die ich für einen Bericht gerne befragt hätte. Auf Facebook-Messages und Freundschaftsanfragen hat sie jedoch nicht reagiert. Da kommt der Graph Search ins Spiel. Mit der Anfrage „My friends who are friends of friends of Marta Adriana Alejos“ fand ich mehrere Facebook-Freunde, die ihrerseits Freunde haben, die mit Marta befreundet sind. Man könnte diese Anfrage folgendermassen darstellen:

[Ich] <–> [meine Freunde] <–> [Freunde von Marta] <–> [Marta]

Per Handy kontaktierte ich einen meiner Freunde, erklärte ihm das Problem, nannte ihm den Namen seines gemeinsamen Freundes mit Marta und fragte, ob er diesem Martas Handynummer entlocken könne.

 

Weshalb jeder Journalist sein Facebook-Profil in eine Seite umwandeln sollte (und wie es geht).

Facebook ist zu einem immer wichtigeren Recherchemittel für Journalisten geworden. Die meisten Journalisten nutzen für ihre Arbeit ein persönliches Profil. Häufig anzutreffen, aber illegal, sind auch  Zweit- oder Fakeprofile. Seit einiger Zeit ermöglicht es Facebook, persönliche Profile in Seiten umzuwandeln. Die Anleitung dazu ist hier zu finden: http://www.facebook.com/help?page=213602951994043. Vor einigen Wochen habe ich zu Test-Zwecken mein Zweitprofil in eine Facebook-Seite umgewandelt. Das gute daran: Sämtliche Verbindungen werden automatisch in „Likes“ umgewandelt, mit der neuen Seite braucht man also nicht bei null zu beginnen. Meine Erfahrungen sind vorwiegend positiv, auch wenn die Umwandlung eine (unerwartete) negative Aspekte mit sich brachte.

Vorteile einer Facebook-Page

  • Professioneller Auftritt, keine Vermischung zwischen privaten Freundschaften und beruflichen Verbindungen.
  • Kein illegaler Zweit-Account nötig: Facebook-Pages können mit dem privaten Account administriert werden.
  • Unendliche Anzahl Verbindungen: Während private Accounts auf 5000 „Freunde“ begrenzt sind, können Facebook-Pages eine uneingeschränkte Anzahl „Likes“ haben.
  • Auf der Facebook-Seite können Recherchefragen gestellt und Umfragen gemacht werden. Die Personen, die die Seite eines Journalisten liken, erwarten das und geben gerne Auskunft.
  • Über die Facebook-Page kann man sich zu Recherche-Zwecken mit einer grossen Anzahl anderer Pages verbinden. So können Einträge anderer Seiten (Parteien, Behörden, Interessensverbände) Themen-Inputs liefern.
  • Twitter-Nachrichten können automatisch auf der Facebook-Page veröffentlicht werden und sorgen dafür, dass täglich Inhalte erscheinen. Die Reichweite auf Facebook ist dabei schnell sehr viel grösser als bei Twitter.
  • Eigene Artikel können mittels der überall verfügbaren Sharing-Optionen auf Internetseiten schnell auf der eigenen Facebook-Seite veröffentlicht werden.

Nachteile

  • Via Facebook-Seite kann (noch) nicht direkt mit Facebook-User in Verbindung getreten werden. Dies wäre beispielsweise praktisch, um in der Funktion des Journalisten eine Person zu kontaktieren. Dies muss weiterhin über das (private) Profil geschehen.
  • Eigene Einträge, beispielsweise Artikel über eine Institution, können nicht auf deren Facebook-Seite geteilt werden. Dies wäre eine hervorragende Möglichkeit, nach der Publikation eines Artikels mit der Institution in Verbindung zu bleiben. Die einzige Möglichkeit bleibt, den Administrator aufzufordern, den Text auf der Seite der Institution zu teilen.