Freigeben über


Räumliche Typen - geography

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz

Der Räumlichkeitsdatentyp geography wird in SQL Server als .NET-CLR-Datentyp (Common Language Runtime) implementiert. Dieser Typ stellt Daten in einem Erdkugel-Koordinatensystem dar. Der -Datentyp SQL Server geography speichert elliptische Daten (Globusmodell) wie GPS-Koordinaten in Längen- und Breitengraden.

SQL Server unterstützt eine Reihe von Methoden für den räumlichen geography-Datentyp. Dazu gehören Methoden für geography, die im OGC-Standard (Open Geospatial Consortium) sowie in einer Gruppe von Microsoft-Erweiterungen dieses Standards definiert sind.

Die Fehlertoleranz für die geography-Methoden kann bis zu 1,0e-7 * Erweiterungen groß sein. Die Erweiterungen verweisen auf den ungefähren maximalen Abstand zwischen Punkten des geography-Objekts.

Registrieren des geography-Datentyps

Der geography -Typ ist vordefiniert und in jeder Datenbank verfügbar. Sie können Tabellenspalten des geography -Typs in der gleichen Weise erstellen und geography -Daten in der gleichen Weise verwenden wie andere vom System bereitgestellte Typen. Kann in persistierten und nicht persistierten berechneten Spalten verwendet werden.

Beispiele

A. Darstellung des Hinzufügens und Abfragens von Geografiedaten

Die folgenden Beispiele zeigen, wie Geografiedaten hinzugefügt und abgefragt werden. Im ersten Beispiel wird eine Tabelle mit einer Identitätsspalte und der geography-Spalte GeogCol1 erstellt. Eine dritte Spalte rendert die geography -Spalte als Darstellung im Open Geospatial Consortium (OGC) WKT-Format und verwendet die STAsText() -Methode. Dann werden zwei Zeilen eingefügt: Eine Zeile enthält eine LineString -Instanz des Typs geographyund die andere eine Polygon -Instanz.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
    DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable   
    ( id int IDENTITY (1,1),  
    GeogCol1 geography,   
    GeogCol2 AS GeogCol1.STAsText() );  
GO  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656 )', 4326));  
  
INSERT INTO SpatialTable (GeogCol1)  
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));  
GO  

B. Zurückgeben der Schnittmenge von zwei geography-Instanzen

Im folgenden Beispiel werden mithilfe der STIntersection()-Methode die Punkte zurückgegeben, an denen die beiden zuvor eingegebenen geography-Instanzen sich schneiden.

DECLARE @geog1 geography;  
DECLARE @geog2 geography;  
DECLARE @result geography;  
  
SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;  
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;  
SELECT @result = @geog1.STIntersection(@geog2);  
SELECT @result.STAsText();  

C. Verwenden des geography-Typs in einer berechneten Spalte

Im folgenden Beispiel wird eine Tabelle mit einer persistierten berechneten Spalte mit einem geography-Typ erstellt.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL   
    DROP TABLE dbo.SpatialTable;  
GO  
  
CREATE TABLE SpatialTable  
(  
    locationId int IDENTITY(1,1),  
    location geography,  
    deliveryArea as location.STBuffer(10) persisted  
);  

Weitere Informationen

Räumliche Daten (SQL Server)