Typy przestrzenne – geografia

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w Microsoft Fabric

Typ danych przestrzennych geografii, lokalizacja geograficzna, jest implementowany jako typ danych środowiska uruchomieniowego języka wspólnego platformy .NET (CLR) w programie SQL Server. Ten typ reprezentuje dane w układzie współrzędnych okrągłych ziemi. Typ danych geography programu SQL Server przechowuje dane elipsoidalne (kuli ziemskiej), takie jak współrzędne szerokości i długości geograficznej GPS.

Note

W bazie danych SQL sieci szkieletowej kolumny typów przestrzennych mogą być używane, ale nie będą dublowane w usłudze Fabric OneLake.

Program SQL Server obsługuje zestaw metod dla typu danych przestrzennych geografii . Obejmuje to metody geografii zdefiniowane przez standard Open Geospatial Consortium (OGC) i zestaw rozszerzeń firmy Microsoft dla tego standardu.

Tolerancja błędów dla metod geograficznych może być tak duża, jak 1,0e-7 * zakresów. Zakresy odnoszą się do przybliżonej maksymalnej odległości między punktami obiektu geograficznego .

Zarejestruj typ geografii

Typ geografii jest wstępnie zdefiniowany i dostępny w każdej bazie danych. Możesz utworzyć kolumny tabeli typu geography i działać na danych geograficznych w taki sam sposób, jak w przypadku innych typów dostarczanych przez system. Typ ten może być używany zarówno w kolumnach trwałych, jak i nietrwałych.

Conversion

Przekształcenie z geografii na binarność, varbinary, char, varchar, nchar i nvarchar musi być wyraźne. Użyj CAST lub CONVERT.

Przekształcenie z binarnego, warbinarnego, char, varchar, nchar i nvarchar na geografię może być domyślne lub jawne.

Konwersja między geografią a wszystkimi innymi typami danych jest zabroniona. Obejmuje to konwersję geografii i geometrii. Aby przenosić dane między tymi dwoma typami, użyj metod Well-Known Binary (WKB) lub Well-Known Text (WKT), na przykład STAsBinary() z .STGeomFromWKB()

Przekształcenie z typu ciągu na geografię stosuje te same zasady co geography::Parse(). Ciąg musi być Well-Known tekstu. SRID tego wyniku to 4326.

Konwersja między geografią a binarną lub warbinarną wykorzystuje SQL Server natywny format serializacji geografii, a nie Well-Known binarny. Wartość binarna Well-Known powoduje błąd. Aby przeprowadzić konwersję do lub z Well-Known binarnym, użyj STAsBinary() i .STGeomFromWKB()

Jeśli docelowy ciąg lub typ binarny jest zbyt krótki względem wartości geograficznej , występuje błąd. Wartość nie jest obcięta.

Remarks

W bazie danych SQL w Microsoft Fabric obsługiwane są typy danych geograficzne i geometryczne, ale nie można ich lustrzanego odbicia do Fabric OneLake.

Examples

A. Pokaż, jak dodawać i zapytywać dane geograficzne

W poniższych przykładach pokazano, jak dodawać i wykonywać zapytania dotyczące danych geograficznych. Pierwszy przykład tworzy tabelę z kolumną tożsamości i kolumną geography . GeogCol1 Trzecia kolumna przekształca kolumnę geography do reprezentacji Open Geospatial Consortium (OGC) Well-Known Text (WKT) i używa metody STAsText(). Następnie wstawiane są dwa wiersze: jeden wiersz zawiera wystąpienie geography elementu LineString, a drugi wiersz zawiera wystąpienie 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

B. Zwróć przecięcie dwóch instancji geograficznych

W poniższym przykładzie STIntersection() użyto metody , aby zwrócić punkty, w których dwa wcześniej wstawione geography wystąpienia przecinają się.

DECLARE @geog1 AS geography;

DECLARE @geog2 AS geography;

DECLARE @result AS 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();

C. Użyj geografii w kolumnie obliczeniowej

Poniższy przykład tworzy tabelę z utrwałą kolumną obliczeniową przy użyciu typu geografii .

IF OBJECT_ID('dbo.SpatialTable', 'U') IS NOT NULL
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable
(
    locationId INT IDENTITY (1, 1),
    location geography,
    deliveryArea AS location.STBuffer(10) PERSISTED
);