Geografische Instanzen erstellen, konstruieren und abfragen

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

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 oder Konstruieren einer neuen Geographie-Instanz

Erstellen einer neuen geography-Instanz aus 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.

Erstellen eines Puffers um eine Geografie
STBuffer (geography-Datentyp)

Einen Puffer um eine Geografie erstellen und dabei eine Toleranz berücksichtigen
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 aus einer Well-Known-Text-Eingabe

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 (Geografischer Datentyp)

Analysieren (Geografischer 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)

Erstellen einer Geografie-Polygoninstanz aus einer WKT-Eingabe
STPolyFromText (geography-Datentyp)

So erstellen Sie eine MultiPolygon-geography-Instanz anhand einer WKT-Eingabe
STMPolyFromText (geography-Datentyp)

Erstellen einer Geography-GeometryCollection-Instanz aus WKT-Eingabe
STGeomCollFromText (geography-Datentyp)

Konstruktion einer geography-Instanz aus Well-Known Binary-Eingaben (WKB)

WKB ist ein binärformat, das von der OGC angegeben wird, mit dem Geografiedaten zwischen einer Clientanwendung und einer SQL-Datenbank ausgetauscht werden können. 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 (Geografie-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 (Geografiedatentyp)

Erstellen einer Geography-Instanz vom Typ GeometryCollection aus einer WKB-Eingabe
STGeomCollFromWKB (Geografie-Datentyp) STGeomCollFromWKB (Geografie-Datentyp)

Erstellen einer Geografieinstanz aus der 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 zur Geographie-Markup-Sprache finden Sie in der OGC-Spezifikation: OGC-Spezifikationen, Geographie-Markup-Sprache.

So erstellen Sie einen beliebigen geography-Instanztyp anhand einer GML-Eingabe
GeomFromGML (Geography-Datentyp)

Zurückgeben von Well-Known Text und Well-Known Binary aus einer Geography-Instanz

Sie können mit den folgenden Methoden entweder das WKT- oder das WKB-Format einer geography-Instanz zurückgeben:

Zum Zurückgeben der WKT-Darstellung einer geography-Instanz
STAsText (geography-Datentyp)

ToString (geography-Datentyp)

Zur Rückgabe der WKT-Darstellung einer geography-Instanz einschließlich aller vorhandenen Z- und M-Werte
AsTextZM (Geografiedatentyp)

Die WKB-Darstellung einer Instanz von geography zurückgeben
STAsBinary (Geography-Datentyp)

So geben Sie eine GML-Darstellung einer geography-Instanz zurück
AsGml – Geografischer Datentyp

Abfragen der Eigenschaften und Verhaltensweisen von Geografieinstanzen

Alle Geografie-Instanzen verfügen über eine Reihe von Eigenschaften, die über durch SQL Server bereitgestellte Methoden abgerufen werden können. Die folgenden Themen beschreiben die Eigenschaften und das Verhalten von „Geography“-Typen sowie die Methoden zum Abfragen der einzelnen Typen.

Gültigkeits-, 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 (Geografie-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)

Anzahl der Punkte

Alle nicht leeren geography -Instanzen bestehen aus Punkten. Diese Punkte stellen die Breiten- und Längengradkoordinaten auf der Erde dar, an denen die geography-Instanzen dargestellt 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 (Geografischer 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. Leere Instanzen haben die Dimension -1, und eine GeometryCollection hat die maximale Dimension ihres Inhalts.

So geben Sie die Dimension einer Instanz zurück
STDimension (Geografiedatentyp)

So geben Sie die Länge einer Instanz zurück
STLength (geography-Datentyp)

So geben Sie die Fläche einer Instanz zurück
STArea (Geografie-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)

Closure

Eine geschlossenegeography-Instanz ist eine Abbildung, deren Ausgangs- und Endpunkt identisch ist. AllePolygon -Instanzen gelten als geschlossen. Point-Instanzen sind 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 der Ringe in einer Polygoninstanz zurück
NumRings (geografischer Datentyp)

Einen angegebenen Ring einer geography-Instanz zurückgeben
RingN (Geografie-Datentyp)

Räumliche Referenz-ID (SRID)

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 (Geografie-Datentyp)

Diese Eigenschaft kann geändert werden.

Ermitteln von Beziehungen zwischen geografischen 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 (Geometrie-Datentyp)

So bestimmen Sie, ob zwei Instanzen disjunkt sind
STDisjoint (Geometrie-Datentyp)

So bestimmen Sie, ob sich zwei Instanzen überschneiden
STIntersects (Geometrie-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)

Die Punktdifferenz zwischen zwei geography-Instanzen ermitteln
STDifference (geography-Datentyp)

Die symmetrische Differenz bzw. die einzigartigen Punkte einer geography-Instanz im Vergleich zu einer anderen Instanz bestimmen
STSymDifference (geography-Datentyp)

Geografieinstanzen müssen unterstützte SRID 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.

Remarks

Geometrie- und Geografietypen können nicht als Tabellenspalten im SQL-Analyseendpunkt in Microsoft Fabric oder Warehouse in Microsoft Fabric verwendet werden.

Examples

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 gibt die Spalte geography in ihrer Darstellung als Well-Known Text (WKT) des Open Geospatial Consortium (OGC) aus und verwendet die Methode STAsText(). 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  

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();