Udostępnij przez


Getting Started with the geography Data Type

Geografia dane przestrzenne typ, geography, jest implementowane jako .NET typowych języków plików wykonywalnych (CLR) typ danych w SQL Server. Ten typ reprezentuje dane w układzie współrzędnych do round ziemi.The SQL Servergeography data type stores ellipsoidal (round-earth) data, such as GPS latitude and longitude coordinates.

Rejestrowanie Geografia typ

The geography type is predefined and available in each database.Można utworzyć typu kolumny w tabela geography i działają na geography dane w taki sam sposób, jak można użyć innego typu dostarczanych przez system.

Przykłady

Następujące przykłady przedstawiają sposób dodawania oraz danych Geografia kwerendy.W pierwszym przykładzie utworzona zostanie tabela z kolumną identyfikacji i geography kolumna GeogCol1. Trzecia kolumna renderuje geography kolumny do jej reprezentacji OGC (Otwieranie lokalizacji geograficznych Consortium) Well-Known tekstu (WKT) i zastosowań STAsText() Metoda. Następnie dodaje dwa wiersze: zawiera jeden wierszLineString wystąpienie geography, a zawiera jeden wiersz Polygon wystąpienie.

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

W drugim przykładzie użyto STIntersection() Metoda zwraca punkty, w której dwie wcześniej umieszczone geography część wspólna wystąpień.

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