geometri (Transact-sql)

Düzlemsel kayma veri türü, geometry, ortak dil çalışma zamanı (clr) veri türü olarak uygulanan SQL Server. Bu tür bir Öklid (düz) koordinat sistemi verileri temsil eder.

SQL Serveryöntemler kümesini destekler geometrykayma veri türü. Bu yöntemleri yöntemleri dahil geometry, Aç Geospatial Consortium (ogc) standart ve kümesi tarafından tanımlanan Microsoftstandart uzantıları.

Daha fazla bilgi için geometrybkz: kayma veri türü yöntemleri, geometrisi veri türü yöntemi başvurusu.

Türü geometrisi kaydediliyor

geometryTürü önceden tanımlanmış ve kullanılabilir her veritabanında. Tablo sütun türü oluşturabilirsiniz geometryve üzerinde işlem geometryverileri, aynı şekilde diğer clr türleri kullanırsınız. Hesaplanan sütunlar kalıcı ve kalıcı olmayan kullanılabilir.

Örnekler

A.Nasıl eklemek ve geometrisi veri sorgulama

Aşağıdaki iki örnek nasıl ekleneceği ve geometri verileri gösterir. İlk örnek kimlik sütunu bir tablo oluşturur ve bir geometrysütununda GeomCol1. Üçüncü sütun işler geometrykullanır ve Aç Geospatial Consortium (ogc) tanınmış metin (wkt) gösterimi sütuna STAsText()yöntemi. İki satır sonra eklenir: bir satır içerir bir LineStringörneğini geometry, ve bir satır içeren bir Polygonörneği.

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

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeomCol1 geometry, 
    GeomCol2 AS GeomCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO

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

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeomCol1 geometry, 
    GeomCol2 AS GeomCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO

B.Iki geometrisi örnekleri kesişim döndürme

İkinci örnek kullanır STIntersection()yöntemi burada iki önceden eklenmiş noktalarını dönmek için geometrykesiştiği.

DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();

DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();

C.Geometri kullanarak hesaplanmış bir sütun

Aşağıdaki örnek, bir kalıcı hesaplanmış bir sütun kullanarak bir tablo oluşturur bir geometrytürü.

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

CREATE TABLE SpatialTable
(
    locationId int IDENTITY(1,1),
    location geometry,
    deliveryArea as location.STBuffer(10) persisted
)

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

CREATE TABLE SpatialTable
(
    locationId int IDENTITY(1,1),
    location geometry,
    deliveryArea as location.STBuffer(10) persisted
)

Ayrıca bkz.

Kavramlar

geometrisi veri türü yöntemi başvurusu

Mekansal veri (SQL Server)