CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Ermittlung der Geokoordinaten aus Adressdaten für die Standortanalyse

Seit der Version DeltaMaster 5.4.6 gibt es das Analyseverfahren Standortanalyse. Hier wird GoogleMaps in DeltaMaster integriert. Adressen von Filialen, Kunden u. Ä. werden auf einer Karte markiert. Die Anwendung des Verfahrens ist in den DeltaMaster deltas! 5.4.6 ausführlich beschrieben.

Um das Verfahren nutzen zu können, müssen die Adressen in Längen- und Breitengraden vorliegen. Wenn die Geokoordinaten vorhanden sind, dann werden diese, wie z.B. hier in der Chair auf Kundenebene, als Attribut im Modell angelegt.

Chair Kundenebene

Um die Adressdaten überhaupt in dieser Form zu erhalten gibt es eine Prozedur, die zu den Adressen Längen- und Breitengrade ermittelt. Diese Prozedur verwendet dazu eine Funktion und ein Assembly.

Die Prozedur GoogleMapsGeocoder_Für_Kunden.sql erstellt die Datenbank GoogleAdressGeocodierung_Vorlage. Die Prozedur muss vor dem Ausführen noch an drei Stellen bearbeitet werden.
Nach dem Kopieren der Datei GoogleMapsGeocoder.dll in ein beliebiges lokales Verzeichnis wird der Dateipfad in Zeile 57 und Zeile 76 eingetragen. Standardmäßig lautet der Pfad C:\GoogleMapsGeocoder.dll.
Des Weiteren muss in Zeile 139 der API-Key eingetragen werden. Dieser ist in der Registry eingetragen und wird für die Anfrage an Google benötigt.

In der erzeugten Datenbank befindet sich eine Tabelle T_Adressen mit folgender Struktur:

CREATE TABLE [dbo].[T_Adressen](

        [Adress_ID] [int] IDENTITY(1,1) NOT NULL,
        [Strasse] [nvarchar](255) NULL,
        [Nr] [nvarchar](255) NULL,
        [PLZ] [nvarchar](255) NULL,
        [Stadt] [nvarchar](255) NULL,
        [Land] [nvarchar](255) NULL,
        [GGeoStatusCode] [int] NULL,
        [GGeoAddressAccuracy] [int] NULL,
        [GGeoAddressLatitude] [float] NULL,
        [GGeoAddressLongitude] [float] NULL,
        [GGeoAddressMD5] [varbinary](16) NULL,
        [GGeoDate] [DATETIME] NULL)

Außerdem wird eine Prozedur P_Update_GoogleGeo, die Funktion GoogleMapsGeocoderMethod, das Assembly GoogleMapsGeocoder und der User SQLCLRGoogleLogin in dieser Datenbank angelegt.

Die Prozedur P_Update_GoogleGeo fragt die Längen- und Breitengrade zu den in der TabelleT_Adressen eingetragenen Adressen ab. Dazu wird die Funktion benötigt, die wiederum das Assembly verwendet.

In der Spalte GGeoDate ist das Änderungsdatum eingetragen. Änderungen können dann mithilfe dieser Angabe und der MD5-Prüfsumme nachvollzogen werden.

Die Datei GoogleMapsGeocoder.dll übernimmt die Abfrage der Geokoordinaten über eine GoogleMaps-Abfrage im Internet. Vergleichbar ist der Vorgang mit dem direkten Aufruf der Daten unseres Nürnberger Büros im Browser unter dem Link: Nordring 98, 90409 Nürnberg

Die Prozedur P_Update_GoogleGeo ermittelt dann aus diesen Angaben die Geokoordinaten und trägt sie in die Tabelle ein.

Werden die Adressen regelmäßig aktualisiert, empfiehlt sich eine automatisierte Berechnung der Koordinaten. Das kann über den Aufruf eines SSIS-Pakets oder einer Prozedur in einem SQL-Server-Agent-Job geschehen.

SQL Server Agent Job

SQL Server Agent Job2

Dazu gibt es die Prozedur P_Create_Geokoordinaten, die am Beispiel der Chair aus der Kundendatenbank die Adressdaten ausliest und in die Adresstabelle T_Adressen in der DatenbankGoogleAdressGeocodierung_Vorlage einträgt. Danach werden die Geokoordinaten erstellt und zurück in die Kundentabelle geladen.