Erstellen, Aufbauen und Abfragen von geography-Instanzen
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Der Datentyp für räumliche Geografiedaten, geography, stellt Daten in einem Erdkugel-Koordinatensystem dar. Dieser Datentyp wird als .NET-CLR-Datentyp (Common Language Runtime) in SQL Server implementiert. Der -Datentyp SQL Server geography speichert elliptische Daten (Globusmodell) wie GPS-Koordinaten in Längen- und Breitengraden.
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.
Erstellen einer neuen geography-Instanz
Erstellen einer neuen geography-Instanz anhand einer vorhandenen Instanz
Der geography -Datentyp stellt viele integrierte Methoden zur Verfügung, mit denen neue geography -Instanzen auf der Grundlage vorhandener Instanzen erstellt werden können.
So erstellen Sie einen Puffer um eine geography
STBuffer (geography-Datentyp)
So erstellen Sie einen Puffer um eine Geografie mit einer Toleranz
BufferWithTolerance (geography-Datentyp)
So erstellen Sie eine geography-Instanz aus der Schnittmenge von zwei geography-Instanzen
STIntersection (geography-Datentyp)
So erstellen Sie eine geography-Instanz aus der Vereinigung von zwei geography-Instanzen
STUnion (geography-Datentyp)
So erstellen Sie eine Geografie aus Punkten ohne überlappende Geografien
STDifference (geography-Datentyp)
Erstellen einer geography-Instanz anhand einer WKT-Eingabe (Well-Known Text)
Der geography -Datentyp bietet mehrere integrierte Methoden zur Erstellung einer Geografie anhand der WKT-Darstellung des Open Geospatial Consortium (OGC). Der WKT-Standard ist eine Textzeichenfolge, die den Austausch von Geografiedaten in Textform ermöglicht.
So erstellen Sie einen beliebigen geography-Instanztyp anhand einer WKT-Eingabe
STGeomFromText (geography-Datentyp)
So erstellen Sie eine Point-geography-Instanz anhand einer WKT-Eingabe
STPointFromText (geography-Datentyp)
So erstellen Sie eine MultiPoint-geography-Instanz anhand einer WKT-Eingabe
STMPointFromText (geography-Datentyp)
So erstellen Sie eine LineString-geography-Instanz anhand einer WKT-Eingabe
STLineFromText (geography-Datentyp)
So erstellen Sie eine MultiLineString-geography-Instanz anhand einer WKT-Eingabe
STMLineFromText (geography-Datentyp)
So erstellen Sie eine Polygon-geography-Instanz anhand einer WKT-Eingabe
STPolyFromText (geography-Datentyp)
So erstellen Sie eine MultiPolygon-geography-Instanz anhand einer WKT-Eingabe
STMPolyFromText (geography-Datentyp)
So erstellen Sie eine GeometryCollection-geography-Instanz anhand einer WKT-Eingabe
STGeomCollFromText (geography-Datentyp)
Erstellen einer geography-Instanz aus einer WKB-Eingabe (Well-Known Binary)
WKB ist ein vom OGC spezifiziertes Binärformat, das den Austausch von Geography -Daten zwischen einer Clientanwendung und einer SQL-Datenbank ermöglicht. Die folgenden Funktionen akzeptieren die WKB-Eingabe zum Zweck der Erstellung von geography-Instanzen:
So erstellen Sie einen beliebigen geography-Instanztyp anhand einer WKB-Eingabe
STGeomFromWKB (geography-Datentyp)
So erstellen Sie eine Point-geography-Instanz anhand einer WKB-Eingabe
STPointFromWKB (geography-Datentyp)
So erstellen Sie eine MultiPoint-geography-Instanz anhand einer WKB-Eingabe
STMPointFromWKB (geography-Datentyp)
So erstellen Sie eine LineString-geography-Instanz anhand einer WKB-Eingabe
STLineFromWKB (geography-Datentyp)
So erstellen Sie eine MultiLineString-geography-Instanz anhand einer WKB-Eingabe
STMLineFromWKB (geography-Datentyp)
So erstellen Sie eine Polygon-geography-Instanz anhand einer WKB-Eingabe
STPolyFromWKB (geography-Datentyp)
So erstellen Sie eine MultiPolygon-geography-Instanz anhand einer WKB-Eingabe
STMPolyFromWKB (geography-Datentyp)
So erstellen Sie eine GeometryCollection-geography-Instanz anhand einer WKB-Eingabe
STGeomCollFromWKB (Geografie-Datentyp) STGeomCollFromWKB (Geografie-Datentyp)
Erstellen einer geography-Instanz anhand einer GML-Texteingabe
Der geography -Datentyp stellt eine Methode zum Erstellen von geography -Instanzen anhand von GML bereit, einer XML-Darstellung einer geography -Instanz. SQL Server unterstützt eine Teilmenge von GML.
Weitere Informationen über Geography Markup Language finden Sie in der OGC-Spezifikation: OGC Specifications, Geography Markup Language.
So erstellen Sie einen beliebigen geography-Instanztyp anhand einer GML-Eingabe
GeomFromGML (geography-Datentyp)
Zurückgeben von WKT (Well-Known Text) oder WKB (Well-Known Binary) von einer geography-Instanz
Anhand der folgenden Methoden können Sie entweder das WKT- oder das WKB-Format einer geography zurückgeben:
So geben Sie die WKT-Darstellung einer geography-Instanz zurück
STAsText (geography-Datentyp)
So geben Sie eine WKT-Darstellung einer geography-Instanz einschließlich Z- und M-Werten zurück
AsTextZM (geography-Datentyp)
So geben Sie die WKB-Darstellung einer geography-Instanz zurück
STAsBinary (geography-Datentyp)
So geben Sie eine GML-Darstellung einer geography-Instanz zurück
AsGml (geography-Datentyp)
Abfragen von Eigenschaften und Verhalten von geography-Instanzen
Alle Geografie-Instanzen verfügen über eine Reihe von Eigenschaften, die über durch SQL Server bereitgestellte Methoden abgerufen werden können. In den folgenden Themen werden die Eigenschaften und Verhalten von geography-Typen und die Methoden zum Abrufen der einzelnen Eigenschaften und Verhalten beschrieben.
Gültigkeit, Instanztyp und GeometryCollection-Informationen
Nachdem eine geography -Instanz erstellt wurde, können Sie anhand der folgenden Methoden den Instanztyp zurückgeben. Wenn es sich um eine GeometryCollection -Instanz handelt, können Sie eine bestimmte geography -Instanz zurückgeben.
So geben Sie den Instanztyp einer Geografie zurück
STGeometryType (geography-Datentyp)
So bestimmen Sie, ob eine Geografie einen gegebenen Instanztyp aufweist
InstanceOf (geography-Datentyp)
So bestimmen Sie, ob eine geography-Instanz für ihren Instanztyp wohlgeformt ist
STNumGeometries (geography-Datentyp)
So geben Sie eine bestimmte Geografie in einer GeometryCollection-Instanz zurück
STGeometryN (Geografie-Datentyp) STGeometryN (Geografie-Datentyp)
Number of Points (Anzahl der Punkte)
Alle nicht leeren geography -Instanzen bestehen aus Punkten. Diese Punkte stellen den Längengrad und den Breitengrad der Erde dar, auf die die geography -Instanzen gezeichnet werden. Der Datentyp geography stellt zahlreiche integrierte Methoden zum Abfragen der Punkte einer Instanz bereit.
So geben Sie die Anzahl von Punkten zurück, aus denen eine Instanz besteht
STNumPoints (geography-Datentyp)
So geben Sie einen bestimmten Punkt einer Instanz zurück
STPointN (geometry-Datentyp)
So geben Sie den Ausgangspunkt einer Instanz zurück
STStartPoint (geography-Datentyp)
So geben Sie den Endpunkt einer Instanz zurück
STEndpoint (geography-Datentyp)
Dimension
Eine nicht leere geographyy -Instanz kann null-, ein- oder zweidimensional sein. Nulldimensionale geography -Instanzen, wie z.B. Point und MultiPoint, haben weder Länge noch Fläche. Eindimensionale Objekte, wie z.B. LineString, CircularString, CompoundCurveund MultiLineString, haben Länge. Zweidimensionale Instanzen, wie z.B. Polygon, CurvePolygonund MultiPolygon, haben Fläche und Länge. Für leere Instanzen wird als Dimension -1 ausgegeben, und eine GeometryCollection gibt die maximale Dimension der darin enthaltenen Elemente zurück.
So geben Sie die Dimension einer Instanz zurück
STDimension (geography-Datentyp)
So geben Sie die Länge einer Instanz zurück
STLength (geography-Datentyp)
So geben Sie die Fläche einer Instanz zurück
STArea (geography-Datentyp)
Empty
Eine emptygeography -Instanz besitzt keine Punkte. Die Länge von leeren LineString, CircularString-, CompoundCurve- und MultiLineString -Instanzen ist 0 (null). Die Fläche von leeren Polygon, CurvePolygon - und MultiPolygon -Instanzen ist 0 (null).
So bestimmen Sie, ob eine Instanz leer ist
STIsEmpty (geography-Datentyp)
Abschluss
Eine geschlossenegeography-Instanz ist eine Abbildung, deren Ausgangs- und Endpunkt identisch ist. AllePolygon -Instanzen gelten als geschlossen. AllePoint -Instanzen gelten als nicht geschlossen.
Ein Ring ist eine einfache, geschlossene LineString -Instanz.
So bestimmen Sie, ob eine Instanz abgeschlossen ist
STIsClosed (geography-Datentyp)
So geben Sie die Anzahl von Ringen in einer Polygoninstanz zurück
NumRings (geography-Datentyp)
So geben Sie einen gegebenen Ring einer geography-Instanz zurück
RingN (geography-Datentyp)
SRID (Spatial Reference ID)
Die SRID (Spatial Reference ID) ist ein Bezeichner, der das ellipsenförmige Koordinatensystem angibt, in dem die geography -Instanz dargestellt wird. Zwei geography -Instanzen mit unterschiedlichen SRIDs können nicht verglichen werden.
So können Sie die SRID einer Instanz festlegen oder zurückgeben
STSrid (geography-Datentyp)
Diese Eigenschaft kann geändert werden.
Bestimmen von Beziehungen zwischen geography-Instanzen
Der geography -Datentyp stellt viele integrierte Methoden zur Verfügung, mit denen die Beziehungen zwischen zwei geography -Instanzen bestimmt werden können.
So bestimmen Sie, ob zwei Instanzen die gleiche Punktmenge umfassen
STEquals (geometry-Datentyp)
So bestimmen Sie, ob zwei Instanzen disjunkt sind
STDisjoint (geometry-Datentyp)
So bestimmen Sie, ob sich zwei Instanzen überschneiden
STIntersects (geometry-Datentyp)
So bestimmen Sie den Punkt bzw. die Punkte, an dem bzw. denen sich zwei Instanzen überschneiden
STIntersection (geography-Datentyp)
So bestimmen Sie die kürzeste Entfernung zwischen Punkten in zwei geography-Instanzen
STDistance (geometry-Datentyp)
So bestimmen Sie zwischen zwei geography-Instanzen bestehende die Differenz in Punkten
STDifference (geography-Datentyp)
So leiten Sie die symmetrische Differenz oder eindeutigen Punkte einer geography-Instanz ab, die mit einer anderen Instanz verglichen wird
STSymDifference (geography-Datentyp)
geography-Instanzen müssen unterstützte SRIDs verwenden
SQL Server unterstützt SRIDs auf der Grundlage der EPSG-Standards. Wenn Berechnungen mit geografischen räumlichen Daten ausgeführt werden oder Methoden mit geografischen räumlichen Daten verwendet werden, müssen von SQL Server unterstützte SRIDs für Geografie-Instanzen verwendet werden. Die SRID muss mit einer der SRIDs übereinstimmen, die in der sys.spatial_reference_systems -Katalogsicht angezeigt werden. Wie bereits erwähnt, hängen die Ergebnisse von Berechnungen mit räumlichen Daten unter Verwendung des geography -Datentyps von der Ellipsenform ab, die zur Erstellung der Daten verwendet wurde, da jeder Ellipsenform eine bestimmte SRID zugeordnet wird.
SQL Server nutzt die Standard-SRID 4326, die beim Einsatz von Methoden für Geografie-Instanzen dem räumlichen Referenzsystem WGS 84 zugeordnet ist. Wenn Sie Daten aus einem anderen räumlichen Referenzsystem als WGS 84 (bzw. SRID 4326) verwenden, müssen Sie die SRID dieser geografischen räumlichen Daten bestimmen.
Beispiele
Die folgenden Beispiele zeigen, wie Geografiedaten hinzugefügt und abgefragt werden.
Beispiel A.
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 geography
und 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
Beispiel B.
Im zweiten Beispiel werden mithilfe der STIntersection()
-Methode die Punkte zurückgegeben, an denen die beiden zuvor eingegebenen geography
-Instanzen sich überschneiden.
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();