Erstellen, Aufbauen und Abfragen von geography-Instanzen
Der räumliche geography-Datentyp stellt Daten in einem Erdkugel-Koordinatensystem dar. Dieser Datentyp wird in SQL Server als .NET CLR-Datentyp (Common Language Runtime) implementiert. +Der geography-Datentyp in SQL Server speichert ellipsenförmige (Erdkugel-)Daten, wie z. B. GPS-Breiten- und Längenkoordinaten.
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.
In diesem Thema
Erstellen einer neuen geography-Instanz
Erstellen einer neuen geography-Instanz anhand einer vorhandenen Instanz
Erstellen einer geography-Instanz anhand einer WKT-Eingabe (Well-Known Text)
Erstellen einer geography-Instanz aus einer WKB-Eingabe (Well-Known Binary)
Erstellen einer geography-Instanz anhand einer GML-Texteingabe
Zurückgeben von WKT (Well-Known Text) oder WKB (Well-Known Binary) von einer geography-Instanz
Abfragen von Eigenschaften und Verhalten von geography-Instanzen
Gültigkeit, Instanztyp und GeometryCollection-Informationen
Anzahl von Punkten
Dimension
Leer
Abgeschlossenheit
SRID (Spatial Reference ID)
Bestimmen von Beziehungen zwischen geography-Instanzen
geography-Instanzen müssen unterstützte SRIDs verwenden
Beispiele
[NACH OBEN]
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 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 (geography-Datentyp)STGeomCollFromWKB (geography-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-Instanz 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 geography-Instanzen verfügen über eine Reihe von Eigenschaften, die mit von SQL Server bereitgestellten 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 (geography-Datentyp)STGeometryN (geography-Datentyp)
Anzahl von Punkten
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 bereit zum Abfragen der Punkte einer Instanz.
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 geography-Instanz kann null-, ein- oder zweidimensional sein. Nulldimensionale geography -Instanzen, z. B. Point und MultiPoint, verfügen weder über eine Länge noch über eine Fläche. Eindimensionale Objekte (z. B. LineString, CircularString, CompoundCurve und MultiLineString) weisen eine Länge auf. Zweidimensionale Instanzen (z. B. Polygon, CurvePolygon und MultiPolygon) weisen eine Fläche und eine Länge auf. Für leere Instanzen wird als Dimension -1 ausgegeben, und für eine GeometryCollection-Auflistung wird die maximale Dimension der darin enthaltenen Elemente zurückgegeben.
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)
Leer
Eine leere geography-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)
Abgeschlossenheit
Eine geschlossene geography-Instanz ist eine Abbildung, deren Ausgangs- und Endpunkte identisch sind. Alle Polygon-Instanzen gelten als geschlossen. Alle Point-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)
Der 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 geography-Instanzen verwendet werden. Der SRID muss mit einem 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 ein bestimmter SRID zugeordnet wird.
In SQL Server wird beim Einsatz von Methoden für geography-Instanzen standardmäßig der SRID 4326 verwendet, der 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.
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
Im zweiten 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();