SQLServr2019空间数据库应用系列12页

上传人:z**** 文档编号:125301198 上传时间:2022-07-26 格式:DOC 页数:14 大小:104KB
返回 下载 相关 举报
SQLServr2019空间数据库应用系列12页_第1页
第1页 / 共14页
SQLServr2019空间数据库应用系列12页_第2页
第2页 / 共14页
SQLServr2019空间数据库应用系列12页_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
SQL Servr 2019空间数据应用系列一:空间信息基础Microsoft SQL Server 2019 提供了全面性的空间支持,可让组织通过具空间功能的应用程序 来无缝地取用、使用及扩展以位置为基础的数据,最后可协助用户做出更好的决策。空间分 析是一项非常复杂的工作,包含一系列学术内容:地理、数学、天文、图形等。虽然在使用 SQL Server 2019 的空间特性中不必要深入研究关于地理、数学、天文以及图形等学科,但 如果你想在学习或者是正式的项目开发中能够很好的使用空间特性,适当和有效的掌握一些 关于空间信息方面的理论概念可谓理所当然。一、什么是空间数据空间数据是指用来表示空间实体的位置、形状、大小及其分布特征诸多方面信息的数据, 它可以用来描述来自现实世界的目标,它具有定位、定性、时间和空间关系等特性。定位是 指在已知的坐标系里空间目标都具有唯一的空间位置;定性是指有关空间目标的自然属性, 它伴随着目标的地理位置;时间是指空间目标是随时间的变化而变化;空间关系通常一般 用拓扑关系表示。空间数据是一种用点、线、面以及实体等基本空间数据结构来表示人们赖 以生存的自然世界的数据。来自百度百科的定义:用于描述有关空间实体的位置、形状和相互关系的数据,以坐标 和拓扑关系的形式存储。地理服务的普遍性,和用户使用数据所采用的混合度的提高意味着这个空间信息只是合 成到解决方案中的另一个组件,并且是作出更好决策和提供更高的价值服务的一个基础。 SQL Server 2019 通过引入新的空间数据类型提供了对地理数据的支持,你可以使用它来存 储和操纵基于位置的信息,QL server 2019中的空间支持可以帮助用户通过分析基于地理的 位置数据来作出更好的决策。二、地图上的空间数据 空间数据提供了可以在不同领域的广泛使用的信息,比如地图、地图分析、空间分析、GPS 定位、车辆监控等多行业领域。这里不分别详细介绍空间数据到各个行业领域的应用, 主要介绍空间数据在地图上的应用为主。实际上地图上的空间对象是很复杂且不规则的对 象,通常表现为一些复杂、不规则的几何图形,使用空间数据来解释就是:“近似他们实际 的形状和位置的简单、或复杂的几何形状”。SQL Server 2019 主要支持三种类型的空间数据,用来表示空间信息的几何图形,分别 为:点(Point)、线(LineString)和面(Polygon)。1、点(Point):点是几何的基本类型,用来表示空间上的一个位置。2、线(LineString):线条描述了空间上的两个点之间的距离,有两个端点,分别为:起 止点(StartPoint)和终止点(EndPoint)。3、面(Polygon):面用来表示空间上的一块几何区域,可以是三角形、四边形等,也 可以是不规则的任意几何图形块。在地图上的面(Polygon )通常可以在空间数据中用来表示群岛、湖泊、工厂、学校、 政府、司法管理区域等一块地市区域,如下重庆市区县分布图所示:三、坐标系统(Coordinate System)常用的坐标系为地理坐标系(Geograpic Coordinate System,简称GCS)和投影坐标系(Projected Coordinate System,简称 PCS)。地理坐标系统(GCS)用一个三维的球面来确定地物在地球上的位置,地面点的地理坐 标有经度、纬度、高程构成。地理坐标系统与选择的地球椭球体和大地基准面有关。椭球体 定义了地球的形状,而大地基准面确定了椭球体的中心。地理空间中可以使用两个坐标值定 义在地球表面上的任何位置,既地理经度和地理纬度,经度和纬度共同组成一个地理坐标点(Point),既:Point(latitude,longitude)。投影坐标系统(PCS)是根据某种映射关系,将地理坐标系统中由经纬度确定的三维球 面坐标投影到二维的平面上所使用的坐标系统。在该坐标系统中,点的位置是由(x,y,z)坐标 来确定的。由于投影坐标是将球面展会在平面上,因此不可避免会产生变形。这些变形包括 3种:长度变形、角度变形以及面积变形。通常情况下投影转换都是在保证某种特性不变的 情况下牺牲其他属性。根据变形的性质可分为等角投影、等面积投影等。 四、空间参考系统上面分别介绍了基于角坐标经度和纬度的地理坐标系统(GCS),以及使用X和Y的笛 卡尔坐标的投影坐标系统(PCS)。无论是基于何种坐标系统,一组坐标始终只能表示坐标 系统中的一个位置点,要想了解关于地球上的坐标系统的应用更多的知识,我们需要研究空 间参考系统,既地球椭球体、基准、本初子午线、计量单位、投影等其他知识点。地球椭球体(EHipsoid):即等角横切椭圆柱投影。假想用一个圆柱横切于地球椭球体 的某一经线上,这条与圆柱面相切的经线,称中央经线。以中央经线为投影的对称轴,将东 西各3或1 30的两条子午线所夹经差6或3的带状地区按数学法则、投影法则投影 到圆柱面上,再展开成平面,即高斯-克吕格投影,简称高斯投影。这个狭长的带状的经纬 线网叫做高斯-克吕格投影带。基准(Datum):大地基站设计用为最密合部分或全部大地水准面的数据模式。它由椭 球体本身及椭球体和地表上一点视为原点之间关系来定义。此关系能以6个量来定义,既: 经度、纬度、原点高度、原点垂线偏差之两分量及原点至某点的大地方位角。本初子午线(Prime Meriaian): 0经线,是计算东西经度的起点。1884年国际会议决 定用通过英国格林威治(Greenwich)天文台子午仪中心的经线为本初子午线。1957年后, 格林尼治天文台迁移台址。1968年国际上以国际协议原点(CIO)作为地极原点,经度起点 实际上不变。计量单位(Unit):各种物理量都有它们的量度单位,并以选定的物质在规定条件显示 的数量作为基本量度单位的标准,在不同时期和不同的学科中,基本量的选择何以不同。如 物理学上以时间、长度、质量、温度、电流强度、发光强度、物质的量这7个物理单位为基 本量,它们的单位依次为:秒、米 (单位)、千克、开尔文、安培、坎德拉、摩尔。投影(Projection):从初中数学的角度来说,一般地,用光线照射物体,在某个平面(地 面、墙壁等)上得到的影子叫做物体的投影(projection),照射光线叫做投影线,投影所在 的平面叫做投影面。有时光线是一组互相平行的射线,例如太阳光或探照灯光的一束光中的 光线。由平行光线形成的投影是平行投影(parallel projection).由同一点(点光源发出的光线) 形成的投影叫做中心投影(center projection)o投影线垂直于投影面产生的投影叫做正投影。 投影线不平行于投影面产生的投影叫做斜投影。物体正投影的形状、大小与它相对于投影面 的位置和角度有关。投影分很多种,最为常见的则为墨卡托投影,百度地图、Google Maps、微软Bing Maps 都是基于墨卡托投影架构的。SQL Servr 2019空间数据应用系列二:空间索引(Spatiallndex)基础 在前一篇博文中我们学习到了一些关于地理信息的基础知识,也学习了空间参照系 统,既地球椭球体、基准、本初子午线、计量单位、投影等相关理论知识,我们可以使用这 些空间参照系统组件来定义一系列应用于地球空间上的几何图像来表示地理空间中的特定 功能,表示着地球上一个一个特定的位置点。本篇主要介绍地理空间索引的概念以及微软 SQL Server 2019 R2中的空间索引的应用。一、空间索引 空间索引是指依据空间对象的位置和形状或空间对象之间的某种空间关系按一定 的顺序排列的一种数据结构,其中包含空间对象的概要信息。作为一种辅助性的空间数据结 构,空间索引介于空间操作算法和空间对象之间,它通过筛选作用,大量与特定空间操作无 关的空间对象被排除,从而提高空间操作的速度和效率。来至百科的定义:为便于空间目标的定位及各种空间数据操作,按要素或目标的位 置和形状或空间对象之间的某种空间关系来组织和存储数据的结构。关于更多空间索引的知识点需要深入了解EPSG和SRID,本文主要介绍基于微软 SQL Server 2019 的空间数据特性实现介绍,故不详细介绍这些基础理论知识点,有兴趣的 可以访问文末的推荐资料链接,了解更多关于EPSG核SRID的相关知识。二、SQL Server 2019的空间参考系统微软 SQL Server 2019 的空间系统表 ( 实际上是一个系统视 图)sys.spatial_reference_systems中存储了详细的支持所有大地测量空间参考系统标准,该 表中的每一行数据对应于一个唯一的空间参考系统,可以基于这些空间参考系统在 SQL Server 2019 中来定义任何形式的空间数据。select * from sys.spatial_reference_systems系统表“sys.spatial_reference_systems”中实际上仅仅只是存储了应用于SQL Server 2019 中地理参照坐标的参考系统,除了空间参考系统可以使用这张表中列出的参考系统标准,也 可以基于这些标准来定义基于任何地理投影的空间数据。三、空间参照文本格式(WKT)Well-Known Text (WKT) Representation of Spatial Reference Systems 顾名思义用众 所周知的文字形式来描述看见坐标参考系统,它与EPSG(2019年已经换名)的坐标文字表 述模型一致。WKT字符串应用于确定空间参考系统的组成部分的描述,其定义主要包含以 下10项内容:1、一个总体的坐标系名2、一个地理图形坐标系统名3、一个基准面定义4、一个椭球体的名字。长半轴(semi-major axis)和反扁率(inverse flattening)5、本初子午线(prime meridian)名和其与格林威治子午线的偏移值6、投影方法类型(如横轴莫卡托)7、投影参数列表(如中央经线等)8、一个单位的名称和其到米和弧度单位的转换参数9、轴线的名称和顺序10、在预定义的权威坐标系中的编码(如EPSG)select well_known_textfrom sys.spatial_reference_systemswhere authorized_spatial_reference_id=4326and authority_name=EPSG基于sys.spatial_reference_systems表定义了多种不同的空间参照系统的WKT描述, 如上SQL语句查询出的是我们平时在地图应用开发中使用最多的EPSG:4326空间参照系统 标准,则对于的WKT如下:GEOGCSWGS 84,DATUMWorld Geodetic System 1984,ELLIPSOIDWGS 84, 6378137, 298.257223563, PRIMEMGreenwich, 0,UNITDegree, 以上KWT字符串确定了 EPSG:4326空间参照系统的组成部分元素描述,其主要使用了四种空间配置,分别为:基准(Datum)、椭圆(Ellipsoid)、本初子午线(Primem)和 Unit (计量单位)。关于这些空间参考系统参数在上一篇文中中介绍过,这里就不在做重复 介绍,以上KWT字符串表述的意思大致是这样的:“WGS 84坐标系,采用1984年订立的 世界地理坐标系统标准,地理标准半径为:6378137”。四、SQL Server 2019的空间索引SQL Server 2019 引入了对空间数据和空间索引的支持。“空间索引”是一种扩展索 引,允许您对空间列编制索引。空间列是包含空间数据类型(如 geometry 或 geography) 数据的表列。本节中的主题介绍了空间索引。在SQL Server 2019中,空间索弓1(存储在:sys.spatial_indexes表中)使用B树构建 而成,也就是说,这些索引必须按 B 树的线性顺序表示二维空间数据。因此,将数据读入 空间索引之前,SQL Server 2019先实现对空间的分层均匀分解。索引创建过程会将空间分 解成一个四级“网格层次结构”。这些级别指的是“第 1 级”(顶级)、“第 2 级”、“第 3 级” 和“第 4 级”。每个后续级别都会进一步分解其上一级,因此上一级别的每个单元都包含下一级别 的整个网格。在给定级别上,所有网格沿两个轴都有相同数目的单元(例如4x4或8x8), 并且单元的大小都相同。下图显示了网格层次结构每个级别的右上角单元被分解成 4x4 网 格的情况。事实上,所有单元都是以这种方式分解的。因此,以此为例,将一个空间分解成 四个级别的 4x4 网格际上会总共产生 65,536 个第四级单元。针对空间索引进行的空间分 解与应用程序数据使用的度量单位无关。网格层次结构的单元是利用多种 Hilbert 空间填充曲线以线性方式编号的。然而,出 于演示目的,这里使用的是简单的按行编号,而不是由Hilbert曲线实际产生的编号。在下 图中,几个表示建筑物的多边形和表示街道的线已经放进了一个 4x4 的 1 级网格中。第 1 级单元的编号为 1 到 16,编号从左上角的单元开始。沿网格轴的单元数目确定了网格的“密度”:单元数目越大,网格的密度越大。例如, 8x8 网格(产生 64 个单元)的密度就大于 4x4 网格(产生 16 个单元)的密度。网格密 度是以每个级别为基础定义的。网格配置单元数目低:4X4=16,中8X8 = 64,高16X16 =256,默认设置所有级别都为中。您可以通过指定非默认的网格密度控制分解过程。例如,在不同级别指定不同网格 密度对于基于索引空间的大小和空间列中的对象来优化索引可能非常有用。空间索引的网格 密度显示在 sys.spatial_index_tessellations 目录视图的 level_1_grid、level_2_grid、 level_3_grid 和 level_4_grid 列中。将索引空间分解成网格层次结构后,空间索引将逐行读取空间列中的数据。读取空 间对象(或实例)的数据后,空间索引将为该对象执行“分割过程”。分割过程通过将对象 与其接触的网格单元集(“接触单元”)相关联使该对象适合网格层次结构。从网格层次结构 的第 1 级开始,分割过程以“广度优先”方式对整个级别进行处理。在可能的情况下,此 过程可以连续处理所有四个级别,一次处理一个级别。注:以上内容截取SQL Server 2019帮助文档,详细请查看联机帮助文档。SQL Servr 2019空间数据应用系列三:SQL Server 2019空间数据类型SQL Server 2019为大地测量空间数据提供了 geography数据类型,为平面空间数据提 供了 geometry数据类型。这两个都是Microsoft Framework通用语言运行时(CLR)类型,并 且可以用来存储不同种类的地理元素,例如点、线和多边形。这两个数据类型都提供了你可 以用来执行空间操作的属性和方法,例如计算位置间的距离和找出两者间交叉的地理特性 (例如一条河流经一个城镇)。本篇以SQL Server 2019的数据类型为核心内容,介绍其数据 类型的支持以及新的空间数据类型的相关特性及基本应用。一、SQL Server 2019通用数据类型在 SQL Server 2019 中的每个变量,参数都会被定义为一个特定的数据类型,这些 特定的数据类型主要用于排序、存储等,在SQL Server 2019中的通用数据类型和SQL Server 2019一样,主要的几个通用数据类型为下表所示:二、SQL Server 2019空间数据类型SQL Server 2019中出了兼容低版本的SQL数据库的通用数据类型和其他基础数 据类型(比如:),新推出了两个用于支持空间数据存储的空间数据类型,分别为:大地向量 空间类型(geography)和几何平面向量空间类型(geometry)。1、geography数据类型官方定义:geography数据类型为空间数据提供了一个由经度和纬度联合定义的存 储结构。使用这种数据的典型用法包括定义道路、建筑、或者地理特性如可以覆盖到一个光 栅图上的向量数据,它考虑了地球的弯曲性,或者计算真实的圆弧距离和空中传播轨道,而 这些在一个平面模型中所存在的固有失真引起的错误程度是不可接受的。2、geometry数据类型官方定义:geometry数据类型为空间数据提供了一个存储结构,它是由任意平面上 的坐标定义的。这种数据通常是用在区域匹配系统中的,例如由美国政府制定的州平面系统, 或者是不需要考虑地球弯曲性的地图和内层布置图。 geometry 数据类型提供了与开放地理 空间联盟(OGC)Simple Features Specification for SQL标准结合的属性和方法,使得你可以对 geometry数据执行操作以产生行业标准的行为。虽然这两个数据类型都可以用于存储空间数据,在针对不同的空间数据的时候还是有 所异同。如果我们需要自己基于SQL Server 2019来做空间数据定义,就需要根据不同的数 据在这两种空间数据类型中作出正确的决策了,这点在以后的博文中会进行介绍,这里飘过。 此两种空间类型是完美符合空间参照系统标准制定的,包括测距计量单位、空间引用索引、 授权标准以及 WKT 等规范,如下 SQL 可查看对于空间数据类型所对于的空间引用索引标 准中制定的地理空间测距计量单位:SELECTunit_of_measureFROMsys.spatial_reference_systemsWHEREauthority_name = EPSGANDauthorized_spatial_reference_id = 4326执行结果:metre三、空间数据的存储方式SQL Server 2019中的两种空间数据:大地向量空间类型(geography)和几何平面 向量空间类型(geometry)都是可变长度的数据类型,这意味着它们相对于比如int或者 datetime等固定长度的数据类型,其存储的数据占用空间根据所存储数据的复杂程度、数据 描述文字等不同可自适应数据类型的长度变化。空间数据类型字段的数据存储以8 个字节的二进制格式存储,每条记录的数据的头 部分就被定义好了空间数据的类型(点、线、面等类型),以及所使用的空间参考系统和地 理坐标(经度、纬度)等值。通常情况下二进制数据内容越长所占用的空间数据存储空间就 越大。四、空间数据可视化在SQL Server 2019中Microsoft引入具有两个新的内置数据类型、几何图形和 地理空间数据支持。尽管您可能“ 看到” 数据空间列的二进制数据存储但还是不能直 观的反应出空间数据的预览效果,SQL Server 2019的SQL Server Management Studio中提 供了一个空间结果选项卡,专门用于可视化预览空间数据结果。比如当前执行查询重庆大区边界的空间数据,那么对应于重庆大区边界数据库表可 以执行以下SQL:SELECT ID ,CODE ,ELEV ,NAME,geomFROM BingMapsDB.dbo.CQ_Area_region得到相应的SQL查询记录结果和空间可视化结果为下图所示:SQL Servr 2019空间数据应用系列四:基础空间对象与函数应用SQL Server 2019中支持的7种基础空间对象实例,分别为:点(Point)、点集合 (MultiPoint )、线(LineString)、线集合(MultiLineString)、多边形(Polygon )、多边形 集合(MultiPolygon)和空间集合(GeometryCollection)。本篇意在为大家介绍SQL Server 2019 空间数据库系统组成部分中的基础空间对象以及系统内置的相关函数API,并就这些开发 API进行介绍基于SQL Server 2019空间数据库系统的开发与应用。一、点(Point)在SQL Server空间数据中,Point是表示单个位置的零维对象,可能包含Z (仰 角)和M (度量)值。可以通过下面SQL创建一个点的示例,默认该点的SRID (空间引 用标识)为0。DECLARE p geometry;SET p = geometry:Parse(POINT(30.6666587469201 104.062021177233); select p.STX AS X;select p.STY AS Y;如下SQL命令这创建了包含Z (仰角)和M (度量)值的点(Point)实例,其中 Z (仰角)和M (度量)值可以显示的指定为“null”DECLARE g geometry;SET g = geometry:Parse(POINT(30.6666587469201 104.062021177233 15 3.5); -SET g = geometry:Parse(POINT(30.6666587469201 104.062021177233 null null); select g.STX AS X select g.STY AS Y select g.Z as Z select g.M as M二、点集合(MultiPoint )MultiPoint是零个点或更多个点的集合。MultiPoint实例的边界为空。其实需要使 用函数STGeomFromText()来格式化被定义的数据按照OGC标准输出WKT格式的空间数据 结果,也可使用函数STMPointFromText()代替STGeomFromText()的使用,通过如下SQL命 令可定义一个点集合对象实例,并使用函数STGeometryN ()输出空间数据结果:-创建点集合实例DECLARE cd geometry;SET cd = geometry:STGeomFromText(MULTIPOINT(30.6666587469201104.062021177233),(29.5076372217973 106.489384971208),4326);-SETcd = geometry:STMPointFromText(MULTIPOINT(30.6666587469201104.062021177233),(29.5076372217973 106.489384971208),4326);select cd.STGeometryN(1).STAsText() as 重庆;select cd.STGeometryN(2).STAsText() as 成都;执行输出结果:重庆POINT (30.6666587469201 104.062021177233)成都POINT (29.5076372217973 106.489384971208)三、线(LineString)LineString 是一个一维对象,表示一系列点和连接这些点的线段。一个 LineString 实例必须由至少两个非重复点组成,也可以为空。线条描述了空间上的两个或多个点之间的 距离,必须有两个端点,分别为:起止点(StartPoint)和终止点(EndPoint)。如下SQL命 令实现了定义重庆到成都两点之间的线条:DECLARE cdline geometry;SET cdline = geometry:STGeomFromText(LINESTRING(30.6666 104.06202, 29.50763 106.48938), 4326);select cdline.STAsText() as 重庆_成都重庆_成都LINESTRING (30.6666 104.06202, 29.50763 106.48938)在 SQL Server 2019的空间结果中所呈现的效果如下图所示:注:线条有多种外观呈现方式,有非闭合线条、闭合线条以及图形复杂的线条等多种情 况出现。如上(右)图示。四、线集合(MultiLineString)MultiLineString 是零个或更多 geometry 或 geography LineString 实例的集合。为 使 MultiLineString 实例有效,该实例必须满足以下条件:1、构成 MultiLineString 实例的所有实例必须都是有效的 LineString 实例。2、在构成 MultiLineString 实例的 LineString 实例中,不能有两个实例在某一段 间隔上重叠。 LineString 实例只能与自身相交或接触,或者在有限数目的点上与其他 LineString 实例相交或接触。通过如下SQL代码片段演示MultiLineString的具体使用:DECLARE ml geometry;-SET ml = geometry:Parse(MULTILINESTRING(30.6666 104.06202, 29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914);SET ml = geometry:STGeomFromText(MULTILINESTRING(30.6666 104.06202, 29.50763 106.48938),(30.6666 104.06202,33.78142 105.97914),4326);-SET ml.STSrid = 4326;select ml;select ml.STIsValid();-验证ml对象是否为正确的空间对象五、多边形(Polygon )Polygon 是存储为一系列点的二维表面,这些点定义一个外部边界环和零个或多 个内部环。可以从至少具有三个不同点的环中构建一个Polygon实例。以下SQL命令演示 了如何创建多边形以及求多边形的面积函数的应用。-创建多边形DECLARE pg geometry;SET pg = geometry:STPolyFromText(POLYGON(0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1), 10);select pg;select pg.STArea(); -求得多边形的面积六、多边形集合(MultiPolygon)多边形集合(MultiPolygon )实例是零个或更多个Polygon实例的集合。下面的 SQL命令演示了定义一个多边形集合对象并返回第一个对象的WKT。-创建多边形集合,并返回第一个多边形的WKTDECLARE mpg geometry;SET mpg = geometry:Parse(MULTIPOLYGON(1 1, 1 2, 2 1, 1 1), (9 9, 9 10, 10 9, 9 9);SELECT mpg.STGeometryN(1).STAsText();执行输出结果:POLYGON (1 1, 1 2, 2 1, 1 1)七、空间对象集合(GeometryCollection )GeometryCollection 是零个或更多个 geometry 或 geography 实例的集合。 GeometryCollection可以为空。以下SQL演示了定义一个带有一个点(Point)实例和一个 多边形(Polygon)实例的空间对象集合对象。-空间集合DECLARE ggc geometry;SET ggc= geometry:STGeomCollFromText(GEOMETRYCOLLECTION(POINT(3 3 1),POLYGON(0 0 2, 1 10 3, 1 0 4, 0 0 2), 1);select ggc;select ggc.STAsText();输出 WKT 文本(不带 Z,M 值)select ggc.ToString();-输出对象原字符串(带Z,M值)执行输出结果:GEOMETRYCOLLECTION (POINT (3 3), POLYGON (0 0, 1 10, 1 0, 0 0) GEOMETRYCOLLECTION (POINT (3 3 1), POLYGON (0 0 2, 1 10 3, 1 0 4, 0 0 2)八、SQL Server 2019函数应用SQL Server 2019中针对地理空间数据、对象、实例提供了非常丰富的内置函数, 使用这些函数可以快速的完成一系列的空间数据分析。关于这些函数的具体使用这里就不逐 一介绍,本文中也相应的使用了几个常用的OGC静态几何图形方法,以后的博文使用中会 根据使用情况再做介绍,详细请大家查阅MSDN,本文末也提供了相关参考资料的链接。 下面代码演示了测距重庆到成都两点之间坐标的距离(单位:米)。DECLAREchongqinggeography=geography:Point(30.6666587469201,104.062021177233, 4326)DECLARE chengdu geography =geography:Point(29.5076372217973,106.489384971208, 4326)SELECT chongqing.STDistance(chengdu)执行结果为:266943.740244237SQL Servr 2019空间数据应用系列五:数据表中使用空间数据类型通过前面几篇文章介绍了关于SQL Server 2019中空间数据类型相关的知识点,了解到 了什么是空间数据,什么是空间数据类型,如何在SQL中变成定义基础的空间对象实例, 这些知识点主要是为了后续学习空间数据应用和做地理空间分析做准备。本篇将继续介绍 SQL Server 2019中空间数据类型的应用知识点,主要介绍如何在数据表中使用空间数据类 型列,如何存储空间数据到空间数据类型,以及如何查询、预览空间数据等相关知识点。选择使用空间数据类型,意味着必须在 SQL 数据表中添加空间数据类型列以存储 空间数据。通常有两种情况:1、创建一张带有空间数据类型的新表。2、向已有数据表中添加空间数据类型列字段。一、创建空间数据类型新表 创建一个带有空间数据类型的新表和创建普通的表基本没有区别,唯一的不同就是使用了空间数据类型字段。以下SQL演示了创建带有空间数据类型的数据表:CREATE TABLE Cities (ID int IDENTITY(1,1) NOT NULL, CityName varchar(255) NOT NULL, CityLocation geometry NOT NULLGO二、添加空间数据类型到已有表 向已有表中添加空间数据类型列和普通表添加新的列是一样的,同样使用 altertable xxx add yyy datatype 命令完成。下面代码演示了向刚创建的新表添加一空间数据 类型字段:-向已有表中添加空间数据类型字段ALTER TABLE CitiesADD geo geographyGO三、为空间数据类型列制定空间引用标识(SRID)任何空间数据类型字段都可以向其指派相应的空间引用标识(SRID),部分空间数 据类型字段还是必须制定SRID的。实现对空间数据类型列指派SRID也非常简单,SQL提 供了指派命令来完成,下面的 SQL 命令演示了给上面新添加的空间数据类型指派 SRID 的 实现。-指派空间数据类型列的SRIDALTER TABLE CitiesADD CONSTRAINT enforce_srid_geographycolumnCHECK (geo.STSrid = 4326)GO四、插入空间数据到空间数据类型字段插入数据导表格中同样使用“ insert into table.”语法实现,不同的是插入空间数 据的时候需要对数据进行格式化处理才能被成功的插入到空间数据类型列。针对于两种 (geography和geometry)空间数据类型,系统提供了专门的空间格式化语法来处理,比如 通过将 WKT文本插入到空间数据列,可以使用geometry:STGeomFromText()或者 geography:STGeomFromText()函数来对WKT文本进行空间数据类型格式转化。insert into Cities(CityName,CityLocation)values(chongqing,geometry:STGeomFromText(POLYGON (107.04352 28.870554, 107.043891 28.873231),4326);注:上面 SQL 代码块实现了将重庆市区区域 WKT 格式的空间数据插入到 Cities 表的CityLocation字段中,由于WKT内用太长,代码段中对其进行了截取。四、查询空间数据类型数据 查询空间数据和普通的数据查询几乎没有区别,同样使用“ select xxx from tablewhere x=y”的方式实现数据查询。下面SQL命令演示了查询刚刚插入的数据记录: select * from Cities;同样可以使用系统函数将查询出的空间结果转化为 WKT 文本格式输出,下面的 SQL命令详细演示了改功能函数的使用:-转换空间数据为WKT文本DECLARE chongqing geometry;select chongqing = CityLocation from Cities where ID=1;select chongqing as 重庆市;select chongqing.ToString() as 重庆市;select chongqing.STAsText() as 重庆市;-WKT友情提示,您阅读本篇博文的先决条件如下:1、本文示例基于 Microsoft SQL Server 2019 R2 调测。2、具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验。3、熟悉或了解Microsoft SQL Server 2019中的空间数据类型。4、具备相应(比如OGC规范、KML规范)的GIS专业理论知识。5、其他相关知识。geography和geometry数据类型包括以用于在OGC中所定义的地理数据的已知文本(Well Known Text,WKT)和已知二进制(Well Known Bin ary,WKB)格式导入和导出数据 的方法,还包括普遍使用的地理标示语言(Geographic Markup Language,GML)格式,这 使得很容易从支持这些格式的数据源导入地理数据。地理数据很容易从一些政府和商业数据源获 得,并且可以相对容易地从许多现有的GIS应用程序和GPS系统中导出。Microsoft保持与一 些第三方GIS供应商和地理数据解决方案供应商的紧密关系,这帮助确保SQL server 2019 和广泛的行业标准工具间的强大兼容能力,以用于导入、导出和操纵空间数据。通常我们开发一个GIS应用,基于GIS做数据分布呈现、统计汇总、搜索等等的功能,几 乎都离不开地图数据的支持,一方面是作为地图呈现需要,其次是为了方便做空间分析等诸多功能。而对于空间数据的需求,通常不需要自己去建立空间数据,市面上有许多非常成熟的地图数第10页据可以直接被采购使用,并以此为基础直接建立基于地图空间数据的GIS应用。另外网上也提供了比较多的空间数据免费下载资源,可以轻松的获取到空间数据。本篇将使用SQL空间工具 (SqISpatialTools)介绍 ESRI 地图空间数据(shpfile)导入至U SQL Server 2019 的实现。一、SQL空间数据导入工具(Shape2SQL)SharpGIS发布了一个专门用来导入ESRI地图空间数据(shpfile)的工具,可以非常简 单的实现将shpfile的地图数据文件中的空间数据导入到SQL Server 2019中,可以通过如下 地址下载该工具。SQL空间工具下载地址:. net/page/SQL-Server-2008-Spatial-Tools.aspx该工具的运行环境需要微软Framewrok 3.5和Microsoft SQL Server System CLRTypeso使用该工具通过简单的可视化界面即可连接上SQL Server 2019的数据库服务器, 目前该工具仅仅只支持几种常用的主流空间类型数据,包括:Point、MultiPoint、 (Multi)Polygon 和(Multi)LineStrings。详细可访问: .n et/page/Shape2SQL.aspx二、SQL 空间数据查询工具(SqlSpatialQueryTool )SQL Server 2019空间数据查询工具可以直接连接到SQL Server 2019数据库服务器, 实现空间数据的查询,可视化界面呈现。详细可访问: .n et/page/SqlSpatial-Query-Tool.aspx三、导入Shpfile地图空间数据如本文篇前的截图,使用SQL空间导入工具实现将ESRI的shpfile地图空间数据导入SQL Server 2019其实非常简单,在导入的时候注意表名和SRID就可以了,其他的可以不用管。 如下图演示了将重庆市的大区边界地图数据导入到SQL Server 2019中。四、查询空间数据实现可以查询可以在SQL Server Management Studio中执行对表(CQ_Region)的 的全表查询,于空间结果选项中可以看到如下图所示的空间呈现效果。另外还可以使用空间查询工具实现SQL Server 2019中的空间数据查询,Spatial Query Tools查询出的空间输入结果如下所示。五、空间计算支持数据库里面有了空间数据,就可以给予数据展开空间计算、统计、分析等给力的功能实现, 与GIS客户端结合来完成各种简单、负责的空间计算、分析。如下SQL演示了计算上面导入的 重庆大界区的地图的地理面积计算。selectgeom.STArea()from CQ RegionWHEREID=1;selectgeom.STArea()from CQ RegionWHEREID=2selectgeom.STArea()from CQ RegionWHEREID=3;selectgeom.STArea()from CQ RegionWHEREID=4;selectSUM(geom.STArea() from CQ Region;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!