SQL SERVER中的geometry型別
阿新 • • 發佈:2021-07-15
轉載於SQL Server中的geometry型別 - koubeisi - 部落格園 (cnblogs.com)
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型別的插入和查詢的方法了吧。