Erstellen und benutzen einer Geodatenbank

In diesem Artikel soll es im Gegensatz zum vorherigen Artikel Alles über Geodaten weniger darum gehen, was man denn alles mit Geodaten machen kann, dafür aber mehr darum wie man dies anstellt. Es wird gezeigt, wie man aus dem öffentlich verfügbaren Datensatz des OpenStreetMap-Projekts eine Geodatenbank erstellt und einige Beispiele dafür gegeben, wie man diese abfragen und benutzen kann.

Wahl der Datenbank

Prinzipiell gibt es zwei große “geo-kompatible” OpenSource-Datenbanken bzw. “Datenbank-AddOn’s”: Spatialite, welches auf SQLite aufbaut, und PostGIS, das PostgreSQL verwendet.

PostGIS bietet zum Teil eine einfachere Syntax, welche manchmal weniger Tipparbeit verursacht. So kann man zum Beispiel um die Entfernung zwischen zwei Orten zu ermitteln einfach schreiben:

während dies in Spatialite “nur” mit einer normalen Funktion möglich ist:

Trotztdem wird in diesem Artikel Spatialite (also SQLite) verwendet, da dessen Einrichtung deutlich einfacher ist (schließlich sollen interessierte sich alle Ergebnisse des Artikels problemlos nachbauen können, ohne hierfür einen eigenen Datenbankserver aufsetzen zu müssen).

Der Hauptunterschied zwischen PostgreSQL und SQLite (eigentlich der Unterschied zwischen SQLite und den meissten anderen Datenbanken) ist, dass für PostgreSQL im Hintergrund ein Server laufen muss, an welchen die entsprechenden Queries gesendet werden, während SQLite ein “normales” Programm (also kein Client-Server-System) ist welches die Queries selber auswertet.

Hierdurch fällt beim Aufsetzen der Datenbank eine ganze Menge an Konfigurationsarbeit weg: Welche Benutzer gibt es bzw. akzeptiert der Server? Welcher Benutzer bekommt welche Rechte? Über welche Verbindung wird auf den Server zugegriffen? Wie wird die Sicherheit dieser Verbindung sichergestellt? …

Während all dies bei SQLite (und damit auch Spatialite) wegfällt und die Einrichtung der Datenbank eigentlich nur “installieren und fertig” ist, muss auf der anderen Seite aber auch gesagt werden dass SQLite nicht gut für Szenarien geeignet ist, in welchen viele Benutzer gleichzeitig (insbesondere schreibenden) Zugriff auf die Datenbank benötigen.

Benötigte Software und ein Beispieldatensatz

Was wird für diesen Artikel an Software benötigt?

SQLite3 als Datenbank

libspatialite als “Geoplugin” für SQLite

spatialite-tools zum erstellen der Datenbank aus dem OpenStreetMaps (*.osm.pbf) Format

python3, die beiden GeoModule spatialite, folium und cartopy, sowie die Module pandas und matplotlib (letztere gehören im Bereich der Datenauswertung mit Python sowieso zum Standart). Für pandas gibt es noch die Erweiterung geopandas sowie eine praktisch unüberschaubare Anzahl weiterer geographischer Module aber bereits mit den genannten lassen sich eine Menge interessanter Dinge herausfinden.

– und natürlich einen Geodatensatz: Zum Beispiel sind aus dem OpenStreetMap-Projekt extrahierte Datensätze hier zu finden.

Es ist ratsam, sich hier erst einmal einen kleinen Datensatz herunterzuladen (wie zum Beispiel einen der Stadtstaaten Bremen, Hamburg oder Berlin). Zum einen dauert die Konvertierung des .osm.pbf-Formats in eine Spatialite-Datenbank bei größeren Datensätzen unter Umständen sehr lange, zum anderen ist die fertige Datenbank um ein vielfaches größer als die stark gepackte Originaldatei (für “nur” Deutschland ist die fertige Datenbank bereits ca. 30 GB groß und man lässt die Konvertierung (zumindest am eigenen Laptop) am besten über Nacht laufen – willkommen im Bereich “BigData”).

Erstellen eine Geodatenbank aus OpenStreetMap-Daten

Nach dem Herunterladen eines Datensatzes der Wahl im *.osm.pbf-Format kann hieraus recht einfach mit folgendem Befehl aus dem Paket spatialite-tools die Datenbank erstellt werden:

Erkunden der erstellten Geodatenbank

Nach Ausführen des obigen Befehls sollte nun eine Datei mit dem gewählten Namen (im Beispiel bremen-latest.sqlite) im aktuellen Ordner vorhanden sein – dies ist bereits die fertige Datenbank. Zunächst sollte man mit dieser Datenbank erst einmal dasselbe machen, wie mit jeder anderen Datenbank auch: Sich erst einmal eine Weile hinsetzen und schauen was alles an Daten in der Datenbank vorhanden und vor allem wo diese Daten in der erstellten Tabellenstruktur zu finden sind. Auch wenn dieses Umschauen prinzipiell auch vollständig über die Shell oder in Python möglich ist, sind hier Programme mit graphischer Benutzeroberfläche (z. B. spatialite-gui oder QGIS) sehr hilfreich und sparen nicht nur eine Menge Zeit sondern vor allem auch Tipparbeit. Wer dies tut, wird feststellen, dass sich in der generierten Datenbank einige dutzend Tabellen mit Namen wie pt_addresses, ln_highway und pg_boundary befinden.

Die Benennung der Tabellen folgt dem Prinzip, dass pt_*-Tabellen Punkte im Geokoordinatensystem wie z. B. Adressen, Shops, Bäckereien und ähnliches enthalten. ln_*-Tabellen enthalten hingegen geographische Entitäten, welche sich als Linien darstellen lassen, wie beispielsweise Straßen, Hochspannungsleitungen, Schienen, ect. Zuletzt gibt es die pg_*-Tabellen welche Polygone – also Flächen einer bestimmten Form enthalten. Dazu zählen Landesgrenzen, Bundesländer, Inseln, Postleitzahlengebiete, Landnutzung, aber auch Gebäude, da auch diese jeweils eine Grundfläche besitzen. In dem genannten Datensatz sind die Grundflächen von Gebäuden – zumindest in Europa – nahezu vollständig. Aber auch der Rest der Welt ist für ein “Wikipedia der Kartographie” insbesondere in halbwegs besiedelten Gebieten bemerkenswert gut erfasst, auch wenn nicht unbedingt davon ausgegangen werden kann, dass abgelegenere Gegenden (z. B. irgendwo auf dem Land in Südamerika) jedes Gebäude eingezeichnet ist.

Verwenden der Erstellten Datenbank

Auf diese Datenbank kann nun entweder direkt aus der Shell über den Befehl

zugegriffen werden oder man nutzt das gleichnamige Python-Paket:

Nach Eingabe der obigen Befehle in eine Python-Konsole, ein Jupyter-Notebook oder ein anderes Programm, welches die Anbindung an den Python-Interpreter ermöglicht, können die von der Datenbank ausgegebenen Ergebnisse nun direkt in ein Pandas Data Frame hineingeladen und verwendet/ausgewertet/analysiert werden.

Im Grunde wird hierfür “normales SQL” verwendet, wie in anderen Datenbanken auch. Der folgende Beispiel gibt einfach die fünf ersten von der Datenbank gefundenen Adressen aus der Tabelle pt_addresses aus:

Link zur Ausgabe

Es wird dem Leser sicherlich aufgefallen sein, dass die Spalte “Geometry” (zumindest für das menschliche Auge) nicht besonders ansprechend sowie auch nicht informativ aussieht: Der Grund hierfür ist, dass diese Spalte die entsprechende Position im geographischen Koordinatensystem aus Gründen wie dem deutlich kleineren Speicherplatzbedarf sowie der damit einhergehenden Optimierung der Geschwindigkeit der Datenbank selber, in binärer Form gespeichert und ohne weitere Verarbeitung auch als solche ausgegeben wird.

Glücklicherweise stellt spatialite eine ganze Reihe von Funktionen zur Verarbeitung dieser geographischen Informationen bereit, von denen im folgenden einige beispielsweise vorgestellt werden:

Für einzelne Punkte im Koordinatensystem gibt es beispielsweise die Funktionen X(geometry) und Y(geometry), welche aus diesem “binären Wirrwarr” den Längen- bzw. Breitengrad des jeweiligen Punktes als lesbare Zahlen ausgibt.

Ändert man also das obige Query nun entsprechend ab, erhält man als Ausgabe folgendes Ergebnis in welchem die Geometry-Spalte der ausgegebenen Adressen in den zwei neuen Spalten Longitude und Latitude in lesbarer Form zu finden ist:

Link zur Tabelle

Eine weitere häufig verwendete Funktion von Spatialite ist die Distance-Funktion, welche die Distanz zwischen zwei Orten berechnet.

Das folgende Beispiel sucht in der Datenbank die 10 nächstgelegenen Bäckereien zu einer frei wählbaren Position aus der Datenbank und listet diese nach zunehmender Entfernung auf (Achtung – die frei wählbare Position im Beispiel liegt in München, wer die selbe Position z. B. mit dem Bremen-Datensatz verwendet, wird vermutlich etwas weiter laufen müssen…):

Link zur Ausgabe

Ein Anwendungsfall für eine solche Liste können zum Beispiel Programme/Apps wie maps.me oder Google-Maps sein, in denen User nach Bäckereien, Geldautomaten, Supermärkten oder Apotheken “in der Nähe” suchen können sollen.

Diese Liste enthält nun alle Informationen die grundsätzlich gebraucht werden, ist soweit auch informativ und wird in den meißten Fällen der Datenauswertung auch genau so gebraucht, jedoch ist diese für das Auge nicht besonders ansprechend.

Viel besser wäre es doch, die gefundenen Positionen auf einer interaktiven Karte einzuzeichnen:

Was kann man sonst interessantes mit der erstellten Datenbank und etwas Python machen? Wer in Deutschland ein wenig herumgekommen ist, dem ist eventuell aufgefallen, dass sich die Endungen von Ortsnamen stark unterscheiden: Um München gibt es Stadteile und Dörfer namens Garching, Freising, Aubing, ect., rund um Stuttgart enden alle möglichen Namen auf “ingen” (Plieningen, Vaihningen, Echterdingen …) und in Berlin gibt es Orte wie Pankow, Virchow sowie eine bunte Auswahl weiterer *ow’s.

Das folgende Query spuckt gibt alle “village’s”, “town’s” und “city’s” aus der Tabelle pt_place, also Dörfer und Städte, aus:

Link zur Ausgabe

Graphisch mit matplotlib und cartopy in ein Koordinatensystem eingetragen sieht diese Verteilung folgendermassen aus:

Die Grafik zeigt, dass stark unterschiedliche Vorkommen der verschiedenen Ortsendungen in Deutschland (Clustering). Über das genaue Zustandekommen dieser Verteilung kann ich hier nur spekulieren, jedoch wird diese vermutlich ähnlichen Prozessen unterliegen wie beispielsweise die Entwicklung von Dialekten.

Wer sich die Karte etwas genauer anschaut wird merken, dass die eingezeichneten Landesgrenzen und Küstenlinien nicht besonders genau sind. Hieran wird ein interessanter Effekt von häufig verwendeten geographischen Entitäten, nämlich Linien und Polygonen deutlich. Im Beispiel werden durch die beiden Zeilen

die bereits im Modul cartopy hinterlegten Daten verwendet. Genaue Verläufe von Küstenlinien und Landesgrenzen benötigen mit wachsender Genauigkeit hingegen sehr viel Speicherplatz, da mehr und mehr zu speichernde Punkte benötigt werden (genaueres siehe hier).

Schlussfolgerung

Man kann also bereits mit einigen Grundmodulen und öffentlich verfügbaren Datensätzen eine ganze Menge im Bereich der Geodaten erkunden und entdecken. Gleichzeitig steht, insbesondere für spezielle Probleme, eine große Bandbreite weiterer Software zur Verfügung, für welche dieser Artikel zwar einen Grundsätzlichen Einstieg geben kann, die jedoch den Rahmen dieses Artikels sprengen würden.

Data Leader Days: Die Spitzenmanager der Datenwirtschaft live und direkt

Am 13./14. November 2019 finden in Berlin die fünften Data Leader Days statt. Kommen Sie direkt mit den Spitzenkräften der Datenwirtschaft in Kontakt und freuen Sie sich auf die besten Use-Cases, Live-Demos und Panels rund um Data und AI.

Die Data Leader Days sind das erste Management-Forum für die Datenwirtschaft im deutschsprachigen Raum und senden regelmäßig wichtige Praxisimpulse aus. Eine der Besonderheiten liegt in der besonderen Auswahl der Speaker und der familiären Atmosphäre. Die Referenten gehören zu den führenden Data-Managern von Konzernen und bekannten Start-Ups, die die Digitalisierung maßgeblich prägen. Im Fokus stehen dabei Use Cases, Live Demos, Panels, Interviews und Erfahrungsberichte zu Data Science, Künstliche Intelligenz, Data Engineering & Architecture, Data Visualization sowie auch Agile Development, Blockchain und Data Security.

#Private Stream: Einzigartiges Know-How-Sharing im engen Kreis

In einem zusätzlichen Private Stream können sich die Teilnehmer zudem erstmals im engeren Kreis mit den Speakern austauschen, um Partner zu finden und individuelle Impulse für eigene Dateninitiativen aus erster Hand zu gewinnen.

Nicht die Masse an Vorträgen, sondern die Pole Position der Speaker und die Vielzahl an Take Aways stehen bei den Data Leader Days im Vordergrund. Mit diesem Konzept ist das Event seit Gründung im Jahr 2016 permanent gewachsen und findet mittlerweile an zwei Tagen mit unterschiedlichen Schwerpunkten statt:

  1. November 2019: Retail & Finance Data
  2. November 2019: Automotive & Machine Data

#Aufbruchstimmung im Berliner Spreespeicher

Die Data Leader Days stehen unter dem Zeichen von Aufbruch und familiärer Atmosphäre fernab des betrieblichen Alltags. Passend dazu wurde der Spreespeicher mit seinem alten Mauerwerk und großzügigen Loft-Fenster mit einem einen bezaubernden Blick auf die Spree angemietet.

#Programmvorschau

Mit dabei sind die Chief Data Officer, SVP, Geschäftsführer und Heads of Digital Transformation von Deutsche Bank, Claas, EnBW, eventim, L’Oréal, Lidl, HRS, Signify und viele mehr.

#Data Leader Days App

Zahlreiche Features unserer Data Leader Days App für Smartphones und Tablets (iOS od. Android) sorgen für eine wegweisende Conference Experience:

  • Matchmaking
  • In-App Chatfunktion
  • Bildergalerie und Videos
  • Event Voting
  • Live Fragenstellen
  • Sternebewertung
  • Wall of ideas
  • Digitale Visitenkarte

Die Anmeldung nehmen Sie bitte direkt unter der Konferenzseite www.dataleaderdays.com vor.

MeetUp: Classifying Text Data with Embeddings // How to become a data scientist

Welcome to our 3rd DATANOMIQ Data Science MeetUp, in Berlin!

April 3rd: 6 pm until 8 pm.

Click the link to participate:
https://www.meetup.com/de-DE/DATANOMIQ-Data-Science-Berlin/events/257098910/

Today’s topic is all about Classifying Text Data with Embeddings, presented by Artur Zeitler. Artur is a data scientist at DATANOMIQ.
Make sure to come early to grab a voucher for a free drink.

Agenda:
doors open at 6 pm (drinks)

PART ONE (6:30 pm):
– The advantages of word embeddings compared to Bag-of-Words
– The differences between the popular embeddings word2vec and GloVe
– How doc2vec can numerically represent whole documents
– How to apply doc2vec in Tensorflow to classify documents
– open questions (7pm)
———————————————————————-
15 min break
———————————————————————-

PART TWO (7:15 pm):
– How to start a career as a data scientist
(presented by Benjamin Aunkofer. Benjamin is Chief Data Scientist at DATANOMIQ.)
– Open questions

FREE ENTRY

Click the link to participate:
https://www.meetup.com/de-DE/DATANOMIQ-Data-Science-Berlin/events/257098910/

 

Next MeetUp:
May 8: Imbalanced datasets: Dealing with the minority class
https://www.meetup.com/de-DE/DATANOMIQ-Data-Science-Berlin/events/259723993/

Veröffentlichung der Data Leader Days 2018 Vorträge auf YouTube

Für alle Interessenten, die es im vergangenen Jahr leider nicht geschafft haben, persönlich an den Data Leader Days 2018 teilzunehmen, gibt es direkt zu Beginn des Jahres 2019 erfreuliche Nachrichten: die Vorträge sind ab heute als Videoaufnahmen auf unserem Youtube-Kanal verfügbar:

 

Besuchen Sie unseren Youtube-Kanal, um sich alle Video Beiträge anzusehen:

https://www.youtube.com/channel/UCXRUMGr6MZPMC5WAKiBLdVg/videos

Die Data Leader Days freuen sich auch im nächsten Jahr wieder auf zahlreiche Teilnehmer. Das Event findet am 13. und 14. November 2019 wieder in Berlin statt.

Data Leader Days 2018 – Review

Das Who’s Who der Datenwirtschaft auf den Data Leader Days 2018

Berlin, Dezember 2018: Die Data Leader Days am 14./15. November 2018 im Berliner Spreespeicher haben erneut die Entscheider aus der Business- und Digitalwelt versammelt und wichtige Impulse ausgesendet. Die in diesem Jahr zum dritten Mal stattfindende Veranstaltung verzeichnete mit knapp 300 Teilnehmern einen enormen Besucherzuwachs. Organisiert wurde die Konferenz von DATANOMIQ und dem Connected Industry.

Der Auftakttag stand ganz unter dem Zeichen von Commercial und Finance Data: Besondere Highlights waren hier die Vorträge von Dr. Joachim Schmalzl, Vorstandsmitglied des Dt. Sparkassen- und Giroverbands, der auf die Fortschritte der Sparkassen bei der Umsetzung von digitalen Innovationen einging sowie Marcus Hartmann, Chief Data Officer der ProSieben Sat. 1 Media mit seiner Keynote. Im Fokus des zweiten Tages standen Industrial und Automotive Data. Hier konnten Digitalmanager von BASF, Heidelberger Druckmaschinen, E.ON, Wittenstein, Vodafone, Schaeffler und Airbus anhand von Live Demos und Use Cases die Themen Data Science & Machine Learning, Data Engineering sowie Data Visualization vorstellen.

Die Data Leader Days freuen sich auch im nächsten Jahr wieder auf eine große Resonanz. Das Event findet wieder in Berlin am 13./14. November 2019 statt.

Data Leader Days Sponsors and Audience

Location at Data Hacker Days announced

We are happy to announce your our venue for the Data Hacker Days: Kühlhaus Berlin.

Data Hacker Days will take place from 28th to 30st May 2019 in Berlin.

The industrial look of Kühlhaus Berlin is a perfect place to challenge hackers to work and solve the hackathon. The backyard will be a chill area and to take a break or networking with other people.  

More information about Data Hacker you can find on the website: https://datahackerdays.com/

Like our facebook website: https://www.facebook.com/Data-Hacker-Days-278017336397423/

Freier Eintritt für Young Professionals zu den Data Leader Days 2018

Jetzt bewerben und kostenfrei beim Spitzenevent der Datenwirtschaft am 14. oder 15. November in Berlin dabei sein!
Die Data Leader Days senden regelmäßig wichtige Impulse in die Big Data und KI-Welt aus und sind ein führendes Forum für Wissens-, Ideen- und Informationsaustausch. Die Spitzen von Anwenderunternehmen zeigen exklusiv in einem innovativen Programm mit Keynote, Präsentationen sowie Use & Business Cases auf, wie Digitalisierung und Künstliche Intelligenz umgesetzt und zum neuen Wettbewerbsvorteil werden.

Zu den Speakern gehören die Data Leader von E.ON, Pro7Sat1, Deutscher Sparkassen- und Giroverband, Airbus, Wittenstein, BASF, Merck, Heidelberger Druckmaschinen, Vodafone, FTI und von weiteren Unternehmen.

Bewerbe Dich bis zum 02.11.2018 mit einem kurzen Statement, warum Du dabei sein möchtest! Schicke mir Dein Statement an linhchi.nguyen@datanomiq.de und überzeuge uns.
Ist dein Statement aussagekräftig und überzeugend, laden wir Dich kostenlos zu einem der beiden Veranstaltungstage ein.

My Desk for Data Science

In my last post I anounced a blog parade about what a data scientist’s workplace might look like.

Here are some photos of my desk and my answers to the questions:

How many monitors do you use (or wish to have)?

I am mostly working at my desk in my office with a tower PC and three monitors.
I definitely need at least three monitors to work productively as a data scientist. Who does not know this: On the left monitor the data model is displayed, on the right monitor the data mapping and in the middle I do my work: programming the analysis scripts.

What hardware do you use? Apple? Dell? Lenovo? Others?

I am note an Apple guy. When I need to work mobile, I like to use ThinkPad notebooks. The ThinkPads are (in my experience) very robust and are therefore particularly good for mobile work. Besides, those notebooks look conservative and so I’m not sad if there comes a scratch on the notebook. However, I do not solve particularly challenging analysis tasks on a notebook, because I need my monitors for that.

Which OS do you use (or prefer)? MacOS, Linux, Windows? Virtual Machines?

As a data scientist, I have to be able to communicate well with my clients and they usually use Microsoft Windows as their operating system. I also use Windows as my main operating system. Of course, all our servers run on Linux Debian, but most of my tasks are done directly on Windows.
For some notebooks, I have set up a dual boot, because sometimes I need to start native Linux, for all other cases I work with virtual machines (Linux Ubuntu or Linux Mint).

What are your favorite databases, programming languages and tools?

I prefer the Microsoft SQL Server (T-SQL), C# and Python (pandas, numpy, scikit-learn). This is my world. But my customers are kings, therefore I am working with Postgre SQL, MongoDB, Neo4J, Tableau, Qlik Sense, Celonis and a lot more. I like to get used to new tools and technologies again and again. This is one of the benefits of being a data scientist.

Which data dou you analyze on your local hardware? Which in server clusters or clouds?

There have been few cases yet, where I analyzed really big data. In cases of analyzing big data we use horizontally scalable systems like Hadoop and Spark. But we also have customers analyzing middle-sized data (more than 10 TB but less than 100 TB) on one big server which is vertically scalable. Most of my customers just want to gather data to answer questions on not so big amounts of data. Everything less than 10TB we can do on a highend workstation.

If you use clouds, do you prefer Azure, AWS, Google oder others?

Microsoft Azure! I am used to tools provided by Microsoft and I think Azure is a well preconfigured cloud solution.

Where do you make your notes/memos/sketches. On paper or digital?

My calender is managed digital, because I just need to know everywhere what appointments I have. But my I prefer to wirte down my thoughts on paper and that´s why I have several paper-notebooks.

Now it is your turn: Join our Blog Parade!

So what does your workplace look like? Show your desk on your blog until 31/12/2017 and we will show a short introduction of your post here on the Data Science Blog!

 

Success Criteria Process Mining

Process Mining is much more than the automatic drawing of process models.

Process mining is on the rise. By using Process mining, organizations can see how their processes really operate [1]. The results are amazing new insights about these processes that cannot be obtained in any other way. However, there are a few things that can go wrong. In this article, Frank van Geffen and Anne Rozinat give you tips about the pitfalls and advice that will help you to make your first process mining project as successful as it can be. Read more