SQL Server中的geometry類型


SQL Server中的geometry類型

最近在工作中用到了SQL Server數據庫保存點的坐標,然后研究了該類型。

關於該類型的資料主要來源官方。如果想了解更多資料訪問SQL Server官方

1. 什么是geometry類型?

官方說法

平面空間數據類型 geometry 在 SQL Server 中作為公共語言運行時 (CLR) 數據類型實現。 此類型表示歐幾里得(平面)坐標系中的數據。

SQL Server 支持 geometry 空間數據類型的一組方法。 這些方法包括開放地理空間信息聯盟 (OGC) 標准和對該標准的一組 Microsoft 擴展所定義的 geometry 方法。

通俗的說

geometry是平面空間數據類型,也就是說通過該類型可以保存平面坐標系(學過是x、y軸坐標系都應該明白什么是平面坐標系)上的多邊形

2. 從示例說起

2.1 關於插入

我們創建一個表,該表中只有兩個字段:

-- 創建一個表
create table T_Geometry(
id int not null primary key,
geo geometry not null
);

1. 插入一個點(POINT)

-- 插入一個點
insert into T_Geometry(id,geo) values(1,geometry::STGeomFromText('POINT (20 180)', 0));

2. 插入一條線(LINESTRING)

-- 插入一條線
insert into T_Geometry(id,geo) values(2,geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

3. 插入一個多邊形(POLYGON)

-- 插入一個多邊形
insert into T_Geometry(id,geo) values(3,geometry::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 0));

查詢結果:

select * from T_Geometry;

我們看到,直接查詢出來的結果是二進制數據,以十六進制顯示的,行2和行3的數據沒有顯示完……

我們想要查看出來的數據和添加進去時一樣直觀,顯然,這不是我們要的結果。

2.2 關於查詢

SQL Server給我們提供了一些函數,方便我們更加直觀的顯示查詢結果。我將列出幾個常用的函數,方面認識和學習,更多函數請查閱官方文檔。

1. 查詢轉換字符串

使用STAsText(),返回類型:nvarchar(max)

-- 查詢轉換字符串
select id,geo.STAsText() AS geo from T_Geometry;

或者用另外一個函數ToString(),返回類型:nvarchar(max)

select id,geo.ToString() AS geo from T_Geometry;

2. 查詢轉換面積

使用STArea(),返回類型:float

-- 查詢轉換面積,非多邊形查詢結果為0
select geo.STArea() from T_Geometry;

3. 結束

相信應該很清楚的明白了SQL Server geometry類型的插入和查詢的方法了吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM