Längen- und Breitengrade in den Geography Datentyp umwandeln

Häufig verfügen Datenbanken mit Adressen über Längen- und Breitengrade. Um diese bspw. in einem Report darstellen zu können, ist es notwendig, dass diese in den Geography Datentyp, bspw. als Punkt umgewandelt werden. U.a. können diese dann super in einen Report mit dem MapControl eingefügt werden (ab 2008R2). Aus Performance Gründen empfehle ich, die Daten nicht bei jeder Abfrage dann umwandeln zu lassen, sondern entsprechend neben den Geo-Informationen zu speichern.

Bspw. können die Längen- und Breitengrade so ausgewertet werden:

-- Tabelle mit Geo- Informationen
CREATE TABLE dbo.Orte (
id int not null primary key identity(1,1),
ort varchar(255) not null,
breitengrad decimal(10,8),
laengengrad decimal(10,8));
GO
 
INSERT INTO dbo.Orte (ort, laengengrad, breitengrad)
VALUES
('Koblenz', '7.589907', '50.360025'),
('Hamburg', '9.9936818', '53.5510846'),
('Berlin', '13.4060912', '52.519171'),
('München', '11.5770851', '48.1366069');

Abfrage mit Umwandlung:

SELECT
ort
, GEOGRAPHY::STPointFromText('POINT(' + CONVERT(VARCHAR, laengengrad) + ' ' + CONVERT(VARCHAR, breitengrad) + ')',4326).STBuffer(20000)
FROM dbo.Orte

Ergebnis:

Schreibe einen Kommentar