Startseite > How To, LBS, Reporting Services > Geodaten in SQL Server Reporting Services – Teil 1: Geodaten erfassen und in den SQL Server einfügen

Geodaten in SQL Server Reporting Services – Teil 1: Geodaten erfassen und in den SQL Server einfügen

Miniserie zu Geodaten in SQL Server Reporting Services

  • Intro
  • Teil 1 befasst sich mit der Verarbeitung von Geodaten im Microsoft SQL Server 2008.
  • Teil 2 zeigt die Visualisierung dieser Daten auf Karten innerhalb der Reporting Services.

Woher kommen Geodaten und wie müssen diese aufbereitet werden, um sie in den SQL Server einzufügen? Beliebt ist der Satz: Sie alle benutzen doch schon Geodaten in Ihrer Datenbank nämlich in Form von Adressinformationen z.B. von Kunden. Adressdaten müssen bevor sie als Geodaten in der Datenbank noch in den einfachsten Geodatentyp – einen Punkt als Längengrad/Breitengrad umgewandelt werden. Diesen Vorgang nennt man Geocodierung. Er wird z.B. von den gängigen APIs der Onlinekartendienste Google oder Bing unterstützt.

Es gibt sowohl viele frei verfügbare als auch kommerzielle Geodaten im Internet. Viele Beispiele verwenden die ‚Mondial‘ Datenbank der Uni Göttingen, von der auch SQL Skripte für den MS SQL Server existieren.

In diesem Beispiel möchten wir die Geodaten allerdings selber erzeugen – auch um zu demonstrieren, wie sich eigene Geodaten verarbeiten lassen. Es existieren unzählige mobile Anwendungen auf allen gängigen Plattformen, um die eigene Position mittels GPS aufzuzeichnen. Ein gängiges Austauschformat für Geodaten ist das XML basierte .gpx Format. Auf der Routenwebseite für Sportler http://connect.garmin.com beispielsweise lassen sich GPS Strecken als .gpx Datei herunterladen.
Der Inhalt einer solchen Datei enthält folgende XML Elemente, die uns interessieren:

<trk>

<name>Kloster Lluc</name>
<
trkseg>
<
trkpt lon=3.1172070745378733lat=39.808602472767234>

<ele>36.400001525878906</ele>
<
time>2011-10-27T08:03:15.000Z</time>

</trkpt>
<
trkpt lon=3.11720154248178lat=39.80860289186239>

<ele>36.400001525878906</ele>
<
time>2011-10-27T08:03:16.000Z</time>

</trkpt>


Leicht lässt sich hier die hierarchische Datenstruktur erkennen: Ein Track (<trk>) enthält einen Namen (<name>) und Tracksegmente (<trkseg>). Ein Tracksegment enthält mehrere Trackpunkte (<trkpt>) und ein Trackpunkt besitzt die Eigenschaften longitude und latitude (lon,lat) sowie die Elemente Elevation (<ele>) und Time (<time>).

Ein kleines Windows Forms Programm liest eine gegebene .gpx Datei ein und erzeugt daraus die SQL Kommandos, welche dann auf der Datenbank ausgeführt werden und diese mit den entsprechenden ‚geography‘ Werten befüllt. Interessenten stellen wir das Programm incl. Code gerne auf Anfrage zur Verfügung.

Der erzeugte SQL Code sieht folgendermaßen aus:

INSERT INTO [intuiGeoDB].[dbo].[trackpoints([trackID],[ptID],[trkpt],[ele],[time])
VALUES(1,0, geography::STGeomFromText( ‚POINT(3.1172070745378733 39.808602472767234)‘, 4326), 36.400001525878906, ‚2011-10-27T08:03:15.000Z‘)

Die Tabelle ‘trackpoints’ der Datenbank ‘intuiGeoDB’ enthält eine Spalte ‘trkpt’ vom Geodatentyp geography:

Der obige SQL Befehl füllt die Werte trackID und ptID des GPS Punktes sowie die eigentliche Koordinate mittels der Funktion geography::STGeomFromText()in die Datenbank. Die Werte für den Längen- und den Breitengrad werden im Textformat übergeben. Der numerische Wert ‚ele‘ entspricht der Höheninformation über dem Meeresspiegel und kommt wie auch der Zeitstempel ‚time‘ aus den XML Elementen.

Nachdem nun die Geodaten im SQL Server gespeichert sind, zeigen wir im zweiten Teil, wie diese Daten mittels der SQL Server Reporting Services grafisch auf einer Karte angezeigt werden können.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: