Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp13/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp13/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp13/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2013 - Datenvisualisierung - Orte

Migration der Orte, Bundesländer und Staaten

Petr Legkov

Die Query

Bei der Migration der locations, werden auch die federal_states und countries migriert, da alles gleichzeitig aus der Warehousetabelle DIM_HZBORTE ausgelesen werden kann.
In der nebenstehenden Query sieht man, dass pro Datensatz für einen Ort auch dessen Bundesland und Staat ausgelesen wird.
Im Anschluss geht man durch alle Datensätze durch, legt für jeden einen Ort an und verknüpft diesen mit den dazugehörigen Staat und Bundesland, welche ebenfalls angelegt werden, falls sie nicht vorhanden sind.
Die Eigenschaft data_warehouse_id wird gebraucht, damit man später beim Anlegen der Studenten den zugehörigen Ort schneller findet.
Vor dem Erstellen eines der drei Entities wird eine Anfrage an Google mit dem entsprechenden Namen gesendet, damit man an die Koordinaten kommt.

Aufbereiten der Einträge

Die Namen aus der Warehousedatenbank führen nach der Google-Anfrage nicht immer zu einem (richtigen) Resultat, weswegen sie noch aufbereitet werden müssen.

Links sind ein paar Beispiele für Namen aus der Datenbank aufgelistet.
Wie man sieht sind die Daten aus der Datenbank teilweise fehlerhaft eingetragen, nicht sauber oder mit Sonderzeichen versehen. Außerdem sind Leerzeichen als Füllzeichen angehängt, was man hier allerdings nicht darstellen kann.
Meistens ist der Hochschulzugangsberechtigungsort ein Kreis aber manchmal auch eine Stadt und die häufig auftretenden sonderbaren Bezeichnungen oder Zusätze, bereiten Google trotz seiner Fehlertoleranz relativ große Probleme.

Mit slice!(/\(.*/) wird alles ab einschließlich der ersten öffnenden Klammer entfernt, damit die Zusatzangaben wegfallen.
Anschließend werden mit .strip! Whitespaces entfernt, die vor oder nach dem String auftreten. Nachdem die Namen so aufbereitet sind, kann man sie an Google senden. Doch man stellt fest, dass immer noch nicht alles gefunden werden kann.
Die 16 deutschen Bundesländer sind kein Problem, doch für die Orte und Staaten wird jeweils ein Array angelegt, in dem alle Namen gespeichert werden, die nicht aufgefunden werden können. Für die Orte werden außerdem die zugehörigen Bundesländer gespeichert, damit man sie leichter finden kann.

Schließlich speichert der links dargestellte Code alle Einträge aus den vorher erwähnten Arrays in eine CSV-Datei und benachrichtigt den Anwender.
Dieser muss jetzt alle Fragezeichen durch Orts- oder Ländernamen ersetzen, die Google finden kann. Falls einmal ein Land nicht gefunden werden muss weil zum Beispiel "Unklar" dort steht, kann man vor den Namen ein "!" setzen, was dazu führt, dass der Name einfach übernommen und als Koordinate jeweils eine 0 eingetragen wird.

Geocoder

  • Google stellt nur 2500 queries pro Tag und Computer zur Verfügung
    • Führt dazu, dass man fehlerhafte commits pusht um sie bei anderen auszuprobieren


Page last modified on August 23, 2013, at 06:59 PM