Aus der Praxis – Geodaten in SQL Server
avatar

Folgendes Problem: Es gibt eine Anwendung, die Gebäude verwaltet. Der Benutzer gibt eine Adresse ein und soll nun Gebäude angezeigt bekommen, die in der Nähe liegen.

Hier sind nun klar Geodaten erforderlich, diese können für Hamburg z.B. vom Landesbetrieb Geoinformation und Vermessung (LGV) kommen. Aber unabhängig davon: wie verwalten wir diese Daten, wie greifen wir darauf zu? Der Microsoft SQL Server bietet hier seit Version 2008 den Datentyp geography, in unserem Beispiel können wir hier die Koordinaten einer Adresse speichern.

CREATE TABLE dbo.T_GeoData
(
    StreetName nvarchar(255) NOT NULL,
    StreetNumber nvarchar(20) NOT NULL,
    Coordinates geography NOT NULL
) ON [PRIMARY]

Diese Tabelle ist natürlich stark vereinfacht, aber genügt für unser Beispiel. Um die zu Beginn beschriebene Abfrage durchzuführen, kann folgende Stored Procedure genutzt werden:

CREATE PROCEDURE SP_GetAddressesByDistance
    @StreetName nvarchar(255),
    @StreetNumber nvarchar(20)
AS
BEGIN
    DECLARE @location geography

    SELECT TOP 1 @location = Coordinates
        FROM T_GeoData
        WHERE StreetName = @StreetName AND StreetNumber = @StreetNumber

    SELECT TOP 50 StreetName, StreetNumber, Coordinates.STDistance(@location) as Distance
        FROM T_Geodata
        WHERE Coordinates.STDistance(@location) < 1000
        ORDER BY Coordinates.STDistance(@location) ASC
END

STDistance berechnet die Entfernung zwischen zwei Koordinaten in Metern. Diese Stored Procedure gibt also die 50 nächstliegenden Adressen mit maximal 1000 Meter Entfernung aus. Zusammen mit Straße und Hausnummer wird die Entfernung in Metern zurückgegeben.

2 Gedanken zu “Aus der Praxis – Geodaten in SQL Server
avatar

  1. Pingback: Aus der Praxis – Geodaten in SQL Server - SharePoint Blogs in German - Bamboo Nation

  2. Hallo HanseVision,
    es freut mich zu lesen, dass ihr euch auch mit dem Thema GeoDatentypen in SQL Server beschäftigt. Meiner Meinung nach steckt ein enormes Potential in dieser Technologie. Vielleicht interessiert euch in diesem Zusammenhang auch mein How-To Artikel zur Integration von Geodaten in SQL Server Reporting Services: http://intuisoft.wordpress.com/2012/02/13/sqlrsmaps/
    Der Ansatz lässt sich natürlich auch für eine SharePoint Integration verwenden. Beste Grüße aus Bonn,
    Wido Wirsam

Schreibe einen Kommentar