Condividi tramite


Creare, Costruire e Istanze geografiche di Query

Il tipo di dati spaziali geografici, geography, rappresenta i dati in un sistema di coordinate terrestri. In SQL Server è implementato come tipo di dati CLR (Common Language Runtime) .NET. Il tipo di dati geography di SQL Server consente di archiviare dati ellissoidali (terra rotonda), come 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 utilizzare dati geography nello stesso modo in cui verrebbero utilizzati gli altri tipi forniti dal sistema.

Contenuto dell'argomento

  • Creazione o costruzione di una nuova istanza geografica

    • Creazione di una nuova istanza geografica da un'istanza esistente

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

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

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

  • Restituzione di WKT e WKB da un'istanza geografica

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

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

    • Numero di punti

    • Dimensione

    • Vuoto

    • Chiusura

    • Identificatore SRID

  • Determinazione delle relazioni esistenti tra istanze geografiche

  • Le istanze geografiche devono utilizzare l'identificatore SRID supportato

  • Esempi

[TORNA ALL'INIZIO]

Creazione o costruzione di una nuova istanza geografica

Creazione di una nuova istanza geografica da un'istanza esistente

Il tipo di dati geography fornisce diversi metodi predefiniti da utilizzare per creare nuove istanze geography in base a quelle esistenti.

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

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

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

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

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

Il tipo di dati geography fornisce un metodo che consente di generare un'istanza geography da GML. Si tratta di una rappresentazione in formato XML di un'istanza geography. In SQL Server è supportato un subset di GML.

Per ulteriori informazioni su Geography Markup Language (GML), vedere la specifica OGC OGC Specifications, Geography Markup Language (informazioni in lingua inglese).

Restituzione di WKT e WKB da un'istanza geografica

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

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

A tutte le istanze geography sono associate diverse 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 utilizzare i seguenti metodi per restituire il tipo di istanza oppure, se si tratta di un'istanza GeometryCollection, restituire un'istanza geography specifica.

Numero di punti

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

Dimensione

Un'istanza geography non vuota può essere a 1 o 2 dimensioni o senza dimensioni. Le istanze geography senza dimensioni, ad esempio Point e MultiPoint non dispongono di lunghezza o area. Gli oggetti unidimensionali, ad esempio LineString, CircularString, CompoundCurve e MultiLineString, dispongono della lunghezza. Le istanze bidimensionali, ad esempio Polygon, CurvePolygon e MultiPolygon, dispongono di area e lunghezza. Le istanze vuote indicano una dimensione di -1 e GeometryCollection indica le dimensioni massime del contenuto.

Vuota

Un'istanza geography vuota non dispone di punti. La lunghezza delle istanze vuote LineString, CircularString, CompoundCurve e MultiLineString è 0. L'area delle istanze vuote Polygon, CurvePolygon and MultiPolygon è 0.

Chiusura

Un'istanza geography chiusa è una figura i cui punti di inizio e di fine sono identici. Le istanze Polygon sono considerate chiuse. Le istanze Point non sono considerate chiuse.

Un anello è un'istanza LineString semplice chiusa.

Identificatore SRID

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

Questa proprietà può essere modificata.

Determinazione delle relazioni esistenti tra istanze geografiche

Il tipo di dati geography fornisce numerosi metodi predefiniti da utilizzare per determinare le relazioni esistenti tra due istanze geography.

Le istanze geografiche devono utilizzare l'identificatore SRID supportato

In SQL Server sono supportati gli identificatori SRID basati sugli standard EPSG. È necessario utilizzare un identificatore SRID supportato SQL Server per le istanze geography se si eseguono calcoli o si utilizzano metodi con dati spaziali di 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 utilizzando il tipo di dati geography i risultati dipenderanno dal tipo di ellissoide utilizzato nella creazione dei dati, in quanto a ogni ellissoide è assegnato un identificatore SRID specifico.

SQL Server utilizza l'identificatore predefinito SRID di 4326., che esegue il mapping al sistema di riferimento spaziale WHS 84 in caso si utilizzino metodi nelle istanze geography. 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.

  • Nel primo esempio viene creata una tabella con una colonna di Identity e una colonna geographyGeogCol1. Una terza colonna effettua il rendering della colonna geography nella relativa 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 geography e 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
    
  • Nel secondo esempio viene utilizzato il metodo STIntersection() per restituire i punti dove si intersecano le due istanze geography inserite in precedenza.

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

Vedere anche

Concetti

Dati spaziali (SQL Server)