Werkstattbericht: Density-Map zu Edeka/Tengelmann mit CartoDB

Es wird Zeit, hier mal wieder den Staub vom Mobiliar zu pusten. Ein bisschen Leben zurückbringen in dieses Blog will ich, indem ich ab jetzt das eine oder andere meiner datenjournalistischen Projekte vorstelle, die ich für die Lebensmittel Zeitung gebaut habe. In erster Linie sollen diese Beiträge mir selbst als Gedächtnisstütze dienen: Ich habe nämlich festgestellt, dass ich von einem auf das andere Projekt gerne mal wieder vergesse, wie ich ein Problem schon einmal gelöst habe, vor dem ich nun wieder stehe. Echte Datenjournalismus-Cracks werden hier also kaum Neues erfahren – ich freue mich aber über jeden Kommentar mit Verbesserungsvorschlägen.

Den Anfang macht diese Visualisierung: Eine interaktive Deutschland-Karte der regionalen Verteilung und Filialdichte der beiden Supermarkt-Betreiber Edeka und Tengelmann.

Deutschland-Karte Edeka und Tengelmann

Anlass für diese Karte ist das Vorhaben von Edeka, das Supermarkt-Geschäft von Kaiser's Tengelmann bis Mitte 2015 zu übernehmen. Angesichts der Marktführerschaft von Edeka in Deutschland hatte das Bundeskartellamt angekündigt, sehr genau hinzuschauen, wo sich durch die Übernahme eine wettbewerbsschädliche Konzentration von Edeka-Märkten ergeben könnte.

Die Vorbereitung

Ein bisschen aus dem Nähkästchen geplaudert: Ursprünglich hatte ich geplant, diese Karte irgendwie mit der Leaflet-Bibliothek umzusetzen, die ich auf LZnet regelmäßig benutze, um Karten wie etwa diese zu den europäischen Märkten von Zalando zu erstellen. Da ging ich allerdings noch davon aus, mehr Vorlauf zu haben, da die Kollegen im zuständigen Printressort schon etwas länger Wind von dem sich anbahnenden Deal bekommen hatten. Dann ging es plötzlich aber doch unerwartet schnell, Tengelmann posaunte die Nachricht in die Welt und ich musste meinen Plan umwerfen. Gute Gelegenheit, sich endlich mal etwas näher mit der All-in-one-Lösung CartoDB zu beschäftigen.

Die Daten

Das Standortnetz von Kaiser's Tengelmann war das kleinere Problem – wir haben Zugang zur Datenbank von Trade Dimensions, dort ließen sich die gut 450 Adressen flugs ziehen. Hätte auch für Edeka funktionieren können. Leider spuckte die TD-Datenbank "nur" etwa 4500 Adressen aus, die sich eindeutig zu Edeka zuordnen ließen. Etwa noch einmal so viele finden sich über eine von der Edeka-Bank zur Verfügung gestellte Liste der an einem Bonusprogramm teilnehmenden Märkte. Macht rund 9000 Adressen, natürlich inklusive Dubletten. Edeka selbst gibt die Zahl der von seinen selbstständigen Händlern betriebenen Märkte mit gut 6230 an, dazu kommen noch einmal 1350 so genannte Regiebetriebe, die von den Regionalgesellschaften selbst geführt werden. Summa summarum 7580 Standorte, von denen jedoch noch die Großflächenmärkte – wie etwa Marktkauf und Herkules – sowie Getränkeabholmärkte abgezogen werden müssen. Schließlich sollte auf unserer Karte nur die Filialdichte dessen visualisiert werden, was als "Supermarkt" klassifiziert werden kann.

Die Liste der Edeka-Bank liegt leider als PDF vor, um die enthaltenen Tabellen Excel-fähig zu machen, habe ich PDFTables von Scraperwiki eingesetzt. Funktioniert ziemlich gut. Einzig, dass ich plötzlich etliche Dutzend Adressen hatte, die sich allesamt in einer "Dr. Salvador-Allende-Str. 1" bzw. "Carl-von-Ossietzky-Str. 232" befinden sollten, nervte. Muss wohl ein Bug in PDFTables sein. Vor der Lösung dieses Problems bereinigte ich die Edeka-Excel-Liste um alles Überflüssige (Titel, Seitenzahlen, Fußnoten) und brachte dann beiden Listen in eine einheitliche Struktur (Spaltenreihenfolge), um sie schließlich zusammenzufügen.

Beim Aussieben der Dubletten habe ich ziemlich sicher unnötig viel Zeit vergeudet: Ich habe mir in Excel alle Zeilen mit identischen Straßenangaben farbig markieren lassen, manuell kontrolliert und dann die echten (verbreitete Adressen wie z.B. "Hauptstr. 1" existieren natürlich mehrfach) Dubletten gelöscht. Vermutlich hätte die Excel-Funktion "Duplikate entfernen" mir hier einiges an Arbeit ersparen können. Übrig geblieben sind 5949 Edeka-Standorte – das ist nicht das vollständige Filialnetz, aber ausreichend, um die regionale Verdichtung erkennen zu können.

Geokodierung

CartoDB übernimmt zwar grundsätzlich auch die Geokodierung von Adressdaten, aber im kostenlosen "Free"-Paket nur für 100 Adressen monatlich. Muss auch nicht sein: Ich nutze dafür immer das Excel-Geocoding-Tool von Max Rice. Das funktioniert über die Map API von Bing, man braucht also erstmal einen Bing Maps Key (wird aber alles im Tool erklärt). Ist alles eingerichtet, wird das Tool mit einer Liste von Adressen gefüttert, rattert dann los und spuckt Latitude und Longitude aus. Die so generierten lat- und lon-Spalten werden dann in die Excel-Tabellen mit den Adressen gepackt.

Die Karte

Das Erstellen der Karte macht CartoDB dann denkbar einfach: Die beiden Excel-Sheets (einmal Edeka-Adressen, einmal Tengelmann-Adressen) hochladen und jeweils als ein Layer in eine Karte integrieren. Als Darstellung wählte ich die Density-Map - ich will ja die Verdichtung zeigen, nicht die Einzelstandorte. Ein bisschen Feintuning, fertig ist die Laube:

 

Mein Fazit zu CartoDB, das ich hier zum ersten Mal richtig eingesetzt habe – großartiges Tool insbesondere für Anwender wie mich, die über keine nennenswerten Programmierer-Skills verfügen.

Comments are closed.