Creare, costruire ed eseguire query di istanze geografiche

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

Il tipo di dati spaziali geografici, geography, rappresenta i dati in un sistema di coordinate terrestri. Questo tipo è implementato come tipo di dati CLR (Common Language Runtime) .NET in SQL Server. Il tipo di dati geography di SQL Server consente di archiviare dati ellissoidali (terra rotonda), ad esempio coordinate di latitudine e longitudine GPS.

Il tipo geography è predefinito e disponibile in ogni database. È possibile creare colonne di tabella di tipo geography e usare dati geography nello stesso modo in cui vengono usati gli altri tipi forniti dal sistema.

Creazione o costruzione di una nuova istanza geografica

Creazione di una nuova istanza geografica da un'istanza esistente

Il tipo di dati geography offre molti metodi predefiniti che è possibile usare per creare nuove istanze di geography in base a quelle esistenti.

Per creare un buffer relativo a una geografia
STBuffer (tipo di dati geography)

Per creare un buffer relativo a una geografia, consentendo una certa tolleranza
BufferWithTolerance (tipo di dati geography)

Per creare una geografia dall'intersezione di due istanze di geografia
STIntersection (tipo di dati geography)

Per creare una geografia dall'unione di due istanze di geografia
STUnion (tipo di dati geography)

Per creare una geografia partendo dai punti in cui una non si sovrappone all'altra
STDifference (tipo di dati geography)

Costruzione di un'istanza geografica dall'input WKT (well-known text)

Il tipo di dati geography fornisce molti metodi predefiniti che generano una geometria dalla rappresentazione WKT OGC (Open Geospatial Consortium). Lo standard WKT è una stringa di testo che consente ai dati geografici di essere scambiati in formato testuale.

Per costruire qualsiasi tipo di istanza geografica dall'input WKT
STGeomFromText (tipo di dati geography)

Parse (tipo di dati geography)

Per costruire un'istanza geografica Point dall'input WKT
STPointFromText (tipo di dati geography)

Per costruire un'istanza geografica MultiPoint dall'input WKT
STMPointFromText (tipo di dati geography)

Per costruire un'istanza geografica LineString dall'input WKT
STLineFromText (tipo di dati geography)

Per costruire un'istanza geografica MultiLineString dall'input WKT
STMLineFromText (tipo di dati geography)

Per costruire un'istanza geografica Polygon dall'input WKT
STPolyFromText (tipo di dati geography)

Per costruire un'istanza geografica MultiPolygon dall'input WKT
STMPolyFromText (tipo di dati geography)

Per costruire un'istanza geografica GeometryCollection dall'input WKT
STPGeomCollFromText (tipo di dati geography)

Costruzione di un'istanza geografica dall'input WKB (well-known binary)

WKB è un formato binario definito da OGC che consente lo scambio di dati Geography tra un'applicazione client e un database SQL. Le seguenti funzioni accettano l'input WKB per costruire le istanze geografiche:

Per costruire qualsiasi tipo di istanza geografica dall'input WKB
STGeomFromWKB (tipo di dati geography)

Per costruire un'istanza geografica Point dall'input WKB
STPointFromWKB (tipo di dati geography)

Per costruire un'istanza geografica MultiPoint dall'input WKB
STMPointFromWKB (tipo di dati geography)

Per costruire un'istanza geografica LineString dall'input WKB
STLineFromWKB (tipo di dati geography)

Per costruire un'istanza geografica MultiLineString dall'input WKB
STMLineFromWKB (tipo di dati geography)

Per costruire un'istanza geografica Polygon dall'input WKB
STPolyFromWKB (tipo di dati geography)

Per costruire un'istanza geografica MultiPolygon dall'input WKB
STMPolyFromWKB (tipo di dati geography)

Per costruire un'istanza geografica GeometryCollection dall'input WKB
STGeomCollFromWKB (tipo di dati geografici) STGeomCollFromWKB (tipo di dati geografici)

Costruzione di un'istanza geografica dall'input di testo GML

Il tipo di dati geography include un metodo che genera un'istanza geography da GML, una rappresentazione XML di un'istanza geography . SQL Server supporta un sottoinsieme di GML.

Per altre informazioni su Geography Markup Language (GML), vedere la specifica OGC OGC Specifications, Geography Markup Language(Specifiche OGC, Geography Markup Language).

Per costruire qualsiasi tipo di istanza geografica dall'input GML
GeomFromGML (tipo di dati geography)

Restituzione di WKT e WKB da un'istanza geografica

È possibile usare i metodi seguenti per restituire il formato WKT o WKB di un'istanza geography :

Per restituire la rappresentazione WKT di un'istanza di geografia
STAsText (tipo di dati geography)

ToString (tipo di dati geography)

Per restituire la rappresentazione WKT di un'istanza di geografia, con qualsiasi valore Z e M.
AsTextZM (tipo di dati geography)

Per restituire la rappresentazione WKB di un'istanza geografica
STAsBinary (tipo di dati geography)

Per restituire la rappresentazione GML di un'istanza geografica
AsGml (tipo di dati geography)

Esecuzione di query sulle proprietà e i comportamenti delle istanze geografiche

A tutte le istanze geografia sono associate svariate proprietà che possono essere recuperate tramite metodi forniti da SQL Server. Negli argomenti seguenti vengono definite le proprietà e i comportamenti dei tipi di geografia, nonché i metodi per l'esecuzione di query per ognuno di essi.

Informazioni sulla validità, sul tipo di istanza e su GeometryCollection

Dopo aver costruito un'istanza geography , è possibile usare i metodi seguenti per restituire il tipo di istanza o, se si tratta di un'istanza GeometryCollection , per restituire un'istanza geography .

Per restituire il tipo di istanza di una geografia
STGeometryType (tipo di dati geography)

Per determinare se una geografia è un tipo di istanza specificato
InstanceOf (tipo di dati geography)

Per determinare se il formato di un'istanza di geografia è corretto per il tipo di istanza
STNumGeometries (tipo di dati geography)

Per restituire una specifica geografia in un'istanza GeometryCollection
STGeometryN (tipo di dati geografici) STGeometryN (tipo di dati geografici)

Numero di punti

Tutte le istanze geography non vuote sono costituite da punti. Questi punti rappresentano le coordinate di latitudine e longitudine terrestri sulle quali vengono tracciate le istanze geography . Il tipo di dati geography offre numerosi metodi predefiniti per l'esecuzione di query sui punti di un'istanza.

Per restituire il numero di punti che comprendono un'istanza
STNumPoints (tipo di dati geography)

Per restituire un punto specifico in un'istanza
STPointN (tipo di dati geometry)

Per restituire il punto di inizio di un'istanza
STStartPoint (tipo di dati geography)

Per restituire il punto di fine di un'istanza
STEndpoint (tipo di dati geography)

Dimensione

Un'istanza geography non vuota può essere a 0, 1 o 2 dimensioni. Le istanze geography senza dimensioni, come Point e MultiPoint, non hanno lunghezza o area. Gli oggetti unidimensionali come LineString, CircularString, CompoundCurvee MultiLineStringhanno una lunghezza. Le istanze bidimensionali come Polygon, CurvePolygone MultiPolygon. Le istanze vuote indicano una dimensione pari a -1 e GeometryCollection indica le dimensioni massime del contenuto.

Per restituire la dimensione di un'istanza
STDimension (tipo di dati geography)

Per restituire la lunghezza di un'istanza
STLength (tipo di dati geography)

Per restituire l'area di un'istanza
STArea (tipo di dati geography)

Vuoto

Un'istanza vuota di tipo geography non contiene punti. La lunghezza delle istanze LineString, CircularString, CompoundCurvee MultiLineString vuote è pari a 0. L'area delle istanze Polygon, CurvePolygon e MultiPolygon vuote è pari a 0.

Per determinare se un'istanza è vuota
STIsEmpty (tipo di dati geography)

Chiusura

Un'istanza geographychiusa è una figura i cui punti di inizio e di fine corrispondono. Le istanzePolygon sono considerate chiuse. Le istanzePoint non sono considerate chiuse.

Un anello è un'istanza LineString semplice chiusa.

Per determinare se un'istanza è chiusa
STIsClosed (tipo di dati geography)

Per restituire il numero di anelli in un'istanza Polygon
NumRings (tipo di dati geography)

Per restituire un anello specificato di un'istanza di geografia
RingN (tipo di dati geography)

Identificatore SRID

L'identificatore SRID specifica in quale sistema di coordinate ellissoidale è rappresentata l'istanza geography . Non è possibile confrontare due istanze geography con identificatori SRID diversi.

Per impostare o restituire l'identificatore SRID di un'istanza
STSrid (tipo di dati geography)

Questa proprietà può essere modificata.

Determinazione delle relazioni esistenti tra istanze geografiche

Il tipo di dati geography offre molti metodi predefiniti che è possibile usare per determinare relazioni tra due istanze geography .

Per determinare se due istanze includono lo stesso punto impostato
STEquals (tipo di dati geometry)

Per determinare se due istanze sono disgiunte
STDisjoint (tipo di dati geometry)

Per determinare se due istanze si intersecano
STIntersects (tipo di dati geometry)

Per determinare il punto o i punti in cui due istanze si intersecano
STIntersection (tipo di dati geography)

Per determinare la distanza più breve tra punti in due istanze di geografia
STDistance (tipo di dati geometry)

Per determinare la differenza in termini di punti tra due istanze di geografia
STDifference (tipo di dati geography)

Per dedurre la differenza simmetrica o i punti univoci di un'istanza geografica a confronto con un'altra
STSymDifference (tipo di dati geography)

Le istanze geografiche devono utilizzare l'identificatore SRID supportato

SQL Server supporta SRID basati sugli standard EPSG. Quando si eseguono calcoli o si usano metodi con dati spaziali geografici, è necessario usare uno SRID supportato da SQL Server per istanze geografia. L'identificatore SRID deve corrispondere a uno di quelli visualizzati nella vista del catalogo sys.spatial_reference_systems Come indicato in precedenza, quando si eseguono i calcoli sui dati spaziali usando il tipo di dati geography i risultati dipenderanno dal tipo di ellissoide usato nella creazione dei dati perché a ogni ellissoide è assegnato un identificatore SRID specifico.

SQL Server usa lo SRID predefinito 4326, che esegue il mapping al sistema di riferimento spaziale WGS 84 quando si usano metodi nelle istanze geografia. Se si utilizzano dati da un sistema di riferimento spaziale diverso da WGS 84 (o SRID 4326), sarà necessario determinare lo specifico identificatore SRID per i dati spaziali geografici.

Esempi

Negli esempi seguenti viene illustrato come aggiungere ed eseguire query su dati geography.

Esempio A.

In questo esempio viene creata una tabella con una colonna di identità e una colonna geographyGeogCol1. Una terza colonna effettua il rendering della colonna geography nella rappresentazione Well-Known Text (WKT) OGC (Open Geospatial Consortium) e utilizza il metodo STAsText() . Vengono quindi inserite due righe: in una riga è contenuta un'istanza LineString di geographye in una seconda è contenuta un'istanza Polygon .

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  

Esempio B.

In questo esempio viene usato il metodo STIntersection() per restituire i punti in cui le due istanze geography inserite in precedenza si intersecano.

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

Vedi anche

Dati spaziali (SQL Server)