Entfernungen mit Geo-Datenbank Deutschland

Vorüberlegung zu einer Geo-Datenbank Deutschland in Access:

Wollten Sie schon mal die Berechnung von Entfernungen von z. B. deutschen Städten in eine Datenbank-Anwendung integrieren? Ideen und Anwendungsbeispiele hierfür gibt es viele, hier mal eine von einem unserer Kunden kürzlich:

Für eine Versicherung ist es wichtig zu wissen, welche Mitarbeiter nah genug / am nähsten an einem Schadensort eingesetzt werden können. Irgendwo ‚brennt es‘ oder hat es ‚gebrannt‘, jetzt muss der Schaden aufgenommen und abgewickelt werden. Der Kunde möchte schließlich zügig sein Geld bekommen. Für eine effektive Planung  möchte unser Kunde eine Lösung, in der er zunächst die PLZ des Schadens oder den Ortsnamen eingeben und dann. Danach erhält er als Ergebnis idealerweise eine Liste von allen Mitarbeitern mit aufsteigender Entfernung von deren Wohnort zum Schadensort.

Im Netz finde ich einige VBA-Codings mit Einbeziehung von Google-API und Browser, um an Entfernungsdaten zu gelangen. Solche Programmierungen können anfällig werden, schon allein durch zukünftige Änderungen seitens Google. Andererseits sind einige Anforderungen zusätzlich zu erfüllen in Form von Bibliotheken und/oder Zusatz-Programmen. Mit solchen Techniken ist ein universeller Einsatz somit schwierig, gut möglich, dass das Programm auf einem Rechner läuft aber auf einem anderen nicht. Außerdem muss es nicht in unseren Interesse liegen, Google für unsere Zwecke zu nutzen und dafür unsere Daten abzugeben.

Eine autarke Lösung für eine Geo-Datenbank Deutschland ist gefragt:

Unser Kunde möchte eine autarke und beständige Lösung. Außerdem können wir in diesem Fall gut damit leben, die Entfernungen auf Basis der Fluglinie zu berechnen. Unser Kunde kann damit perfekt einschätzen, welche Mitarbeiter eingesetzt werden können. Somit realiseren wir die Entfernungsberechnung über die Entfernung von Koordinaten. Diese ist unabhängig von späteren Veränderungen. Von Zeit zu Zeit können recht einfach die Daten aktualisiert werden.

Nun sind folgende Schritte notwendig:

  • Koordinaten-Daten besorgen
  • eine Routine zur Berechnung des Abstands zwischen zwei Koordinatenstandorten

Die Datenquelle für die Geo-Datenbank Deutschland:

Nach einigen Recherchen bietet sich folgende Datenquelle an, dort sind sql-Dateien und tab-Dateien für unterschiedliche Regionen gespeichert. Für Access genügen uns die Tab-Dateien, diese laden wir runter als Datei. Im nächsten Schritt importieren wir die Tab-Datei DE.tab als Text-Datei in eine (leere) Access-Datenbank, die dann z.B. als DE.accdb die Geo-Datenbank Deutschland darstellt.

Beim Import wichtig: Die richtigen Einstellungen

Damit Sie Sonderzeichen vermeiden und Umlaute richtig dargestellt bekommen, stellen Sie auf UTF-8 um. Die Lattidute und Longitude-Angaben brauchen als Dezimalzeichen den Punkt.

Als weitere Einstellung beachten!

Für die Felder lat und lon ist es notwendig, den Felddatentyp auf Double einzustellen. Nicht vergessen: Ggfs die Importeinstellungen als Vorlage speichern für weitere Länder.

Das VBA-Coding und eine kleine Anwendung für die Geo-Datenbank Deutschland:

Auch hier finden wir einige Programme im Internet, am Ende hat sich ein Coding als praktikabel und robust erwiesen: Auf der Seite dbwiki.net fanden wir unsere Lösung mit folgenden Link.

Mit dem Aufruf CalcDistance(8.68333, 50.1167, 9.994583, 53.554423) wird die Entfernung der Luftlinie zwischen Frankfurt und Hamburg berechnet.

Nicht alle Datensätze aus der Quell-Tabelle DE verfügen über die notwendigen Koordinaten in den Feldern lon und lat, somit stellen wir nur die benötigten Datensätze über eine Abfrage mit dem SQL-Code

SELECT DE.*
FROM DE
WHERE (((DE.lat) Is Not Null) AND ((DE.lon) Is Not Null));

zur Verfügung.

Für eine schnellere Lösung  erzeugen Sie einfach eine weitere Tabelle, auf die später die Berechnung aufgebaut wird.

Jetzt verbinden Sie Ihre Mitarbeiterliste mit deren PLZ-Angaben mit der Abfrage bzw. neuen Tabelle. Bei dieser Lösung müssen Sie beachten, dass Sie die Ausgabeliste noch auf die Mitarbeiter-ID verdichten. Dann erscheinen die Mitarbeiter nur einmal trotz mehrfacher PLZ in der DE-Tabelle.

Alternativ erweitern Sie die Mitarbeiter-Tabelle um die Double-Felder lon und lat und füllen diese beiden Felder aus der DE-Tabelle. Dies hat den Vorteil, dass man gleich sieht, welche Mitarbeiter nicht über die PLZ abgedeckt werden können, diese können Sie dann einfach z.B. über den Ort befüllen.

Nun können Sie die Anwendungsoberflächen gestalten – hierzu liefern wir demnächst gerne ein kleines Beispiel …

Haben Sie Interesse an einer eigenen Lösung oder an der Erweiterung Ihrer bestehenden Lösung? Erfahren Sie hier mehr!