首页 > 代码库 > 如何使用sqlserver 2012 空间查询(geometry及 geography)

如何使用sqlserver 2012 空间查询(geometry及 geography)

---恢复内容开始---

介绍

SQL Server 2008为大地测量空间数据提供了geography数据类型为平面空间数据提供了geometry数据类型。这两个都是Microsoft .NET Framework通用语言运行时(CLR)类型,并且可以用来存储不同种类的地理元素,例如点、线和多边形。这两个数据类型都提供了你可以用来执行空间操作的属性和方法,例如计算位置间的距离和找出两者间交叉的地理特性(例如一条河流经一个城镇。)

geography 数据类型

geography数据类型为空间数据提供了一个由经度和纬度联合定义的存储结构。使用这种数据的典型用法包括定义道路、建筑、或者地理特性如可以覆盖到一个光栅图上的向量数据,它考虑了地球的弯曲性,或者计算真实的圆弧距离和空中传播轨道,而这些在一个平面模型中所存在的固有失真引起的错误程度是不可接受的。

 

geometry数据类型

geometry数据类型为空间数据提供了一个存储结构,它是由任意平面上的坐标定义的。这种数据通常是用在区域匹配系统中的,例如由美国政府制定的州平面系统,或者是不需要考虑地球弯曲性的地图和内层布置图。

 

geometry 数据类型提供了与开放地理空间联盟(OGC)Simple Features Specification for SQL标准结合的属性和方法,使得你可以对geometry数据执行操作以产生行业标准的行为。

 

使用(sql语句)

geography 数据类型使用

将数据(wkt)直接转换geography 字段类型

DECLARE @bigGeo geography = geography::STPointFromText(‘POINT (120.280994531787670 36.193256972700624)‘,4326);

将数据(wkt)直接转换geometry字段类型

DECLARE @bigGeo geometry= geometry::STPointFromText(‘POINT (120.280994531787670 36.193256972700624)‘,4326);

进行空间查询

table1:表一

table2:表二

a.Geom 表一中geometry类型字段

b.location 表二中geometry类型字段

select * from table1 a,table2 b where a.Geom.STContains(b.location)=1

 

geography 类型相同

 

---恢复内容结束---

如何使用sqlserver 2012 空间查询(geometry及 geography)