sql server 空间数据(geometry类型)创建、查询、空间分析和计算
1、SQL语言实现空间对象的创建、插入、删除、查询。
1.1直接创建空间对象
查找SQLServer的帮助文档,查找到不需要建立表也能直接创建空间对象,运用DECLARE和SET STGeomFromText()的方法声明空间对象,并赋值,代码如下。
执行创建空间对象的代码,可以看到表结果和空间结果如下图所示。
1.2创建存储空间对象的表结构以存储空间对象。
创建空间对象的表,运用geometry的数据类型的代码如下。
执行创建表的代码后,可以看到创建空间对象的存储表的字段如下图所示。
1.3空间对象得插入。
运用insert values()结构和空间对象的STGeomFromText()方法创建点,线,面的代码如下所示。
插入五条数据后,可以看到表中新增了五条空间对象的记录。直接显示为他们的空间对象文本形式和转为文本的形式。
1.4空间对象的查询。
1.4.1 查找表中的满足Where条件的对象
书写SQL的查询语句,同时显示为十六进制形式和open gis的WKT文本形式的代码如下。
执行后的表结果和空间结果如下图所示,可以看到一条折线段和一个面状几何形状。
1.4.2查询表中与id为2的面相交的空间对象
查询与面相交需要用到空间函数Crosses,其查询的SQLServer代码如下。
可以看到查出的与面相交的空间对象为如图所示的折线段。
1.4.3查询获取面对象和线对象相交部分的空间对象
声名空间对象的变量,并把表中已有的空间数据赋值给空间数据变量,然后调用STIntersection()的空间方法代码如下。
执行代码后,可以看到如下图所示的空间结果和表结果,和上次查相交的对象相比较,这次查询的与两个对象相交的部分,由两个顶点的坐标表示。
1.4.4查空间对象的并集
声名并赋值两个空间对象,然后运用Union空间方法直接查询出并集的代码如下。
执行代码后,可以看到空间对象执行后查询到的并集对象的表结果和空间结果如下。
1.5空间对象的删除。
运用关系型数据库的删除语句,删除表中的行,即可以删除空间对象,代码如下。
删除后可以看到原来的空间数据表少了一行,即为删除了第五行空间数据。
2利用扩展的geometry方法实现简单的空间计算、空间分析。
2.1空间计算
2.1.1计算长度
运用Length()的空间方法计算空间对象的长度,其代码如下。
计算空间对象的长度结果如下所示。
2.1.2计算面积
运用area()空间方法计算空间对象的面积,其代码如下图所示。
计算表中空间对象的面积的表结果如下。
2.2缓冲区分析
声名并赋值一个三角形的空间对象,其代码如下。
创建的空间对象在生成缓冲区前的表结果和空间结果如下。
更改查询的条件,调用buffer()方法,获取缓冲区对象的代码如下。
获取的缓冲区对象的表结果和控件结果如下图所示。
微软sql server帮助文档参考:https://docs.microsoft.com/zh-cn/sql/t-sql/spatial-geometry/spatial-types-geometry-transact-sql?view=sql-server-ver15