QGIS基本功 | 11 使用SQL Server数据库管理空间数据

Microsoft SQL Server是由美国微软公司所推出的关系数据库解决方案,适用于中小企业的数据库管理,由于其秉承Windows系统一贯的简洁操作方式而受到用户青睐,最新的版本是SQL Server 2019,于2019年11月3日发布。

SQL Server依功能的不同,分成企业版(Enterprise)、标准版(Standard )、工作组版(Workgroup )、Web版和Express版,其中Express为 免费版本,适用于小型应用程序或是单机型应用程序,但在功能上有设限,如只能使用一颗处理器,以及最大数据库大小为4GB等。

 01 下载和安装MSSQL

为方便演示,本文选择安装免费且体积较小的 SQL Server Express。打开网址:https://www.microsoft.com/en-us/sql-server/sql-server-downloads,点击【Download now】,将安装文件保存到本地。

下载SQL Server管理工具SSMS。打开网址:https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017,点击【下载SQL Server Management Studio(SSMS)】。

双击下载到的安装包进行安装,SQL Server和管理工具安装的过程很简单,不再赘述。

 02 配置SQL Server

  • 配置端口和身份验证

默认情况下,SQL Server的TCP/IP端口处于禁用状态,需要手动启用并配置正确的端口ID。从开始菜单找到安装好的Microsoft SQL Server 2019,展开后点击【SQL Server 2019配置管理器】。

点击左侧的【SQL Server网络配置】->【SQLEXPRESS的协议】节点,默认情况下,“TCP/IP”协议处于“已禁用”状态,右键点击启用它。

再次右键点击“TCP/IP”协议,打开属性对话框,切换到【IP地址】标签页。在下方列出了多个IP地址,找到你当前使用的IP地址,将【TCP动态端口】后面的“0”删除,在【TCP端口】后面填入“1433”,【已启用】选择“是”。点击【确定】完成TCP/IP属性设置。

根据提示,重启SQL Server服务。

注意,如果电脑安装了防火墙,则需要配置防火墙放行1433端口。

从开始菜单找到【Microsoft SQL Server Tool 18】->【Microsoft SQL Server Management Studio 18】(简称SSMS),点击打开。

在弹出的【连接到数据库】对话框中,选择服务器名称和身份验证方式,点击【连接】。

在SSMS主窗口可以看到所连接的数据库列表。由于SQL Server默认的身份验证为“Windows 身份验证”,这种身份验证模式无法与QGIS建立连接,需要改为“SQL Server和Windows身份验证模式”。

右键点击根节点,打开属性对话框,切换到【安全性】标签页,在右边选择“SQL Server和Windows身份验证模式”,点击【确定】按钮关闭属性对话框。

为QGIS准备登录名。展开根节点->【安全性】->【登录名】,右键点击“sa”节点,打开属性对话框。

在弹出的登陆属性对话框中,修改sa的密码。

切换到【状态】标签页,查看是否已经启用该登录名,如果在“禁用”状态,则启用它。点击【确定】按钮完成设置。

  • 创建数据库

在Microsoft SQL Server Management Studio 18(简称SSMS)中,右键点击【DESKTOP-IE96CVF\SQLEXPRESS】->【数据库】,选择【新建数据库…】,在打开的对话框中为数据库指定一个名称,如:“test”,其他参数保持默认,点击【确定】创建数据库。

返回到SSMS主窗口,可以看到【数据库】节点下增加了一个新的数据库“test”。

至此,SQL Server的配置工作准备完毕。可以用QGIS连接SQL Server进行数据管理了。

 03 QGIS建立MSSQL连接

打开QGIS,在【浏览】面板中右键点击【MSSQL】,选择【新建连接…】,打开新建连接对话框。(如果找不到浏览面板,请参考:QGIS 小技巧 | 工具栏或者面板不见了,去哪里找回来?

在【创建一个新的MSSQL连接】对话框中,连接名称可以任意输入,如“my_sqlserver”。主机要与自己的数据库名称一致,如本例为:“DESKTOP-IE96CVF\SQLEXPRESS”。取消勾选【受信任的连接】,输入“sa”的用户名和密码。点击右侧的【列出数据库】按钮,可以查看可用的数据库。选择“test”数据库,点击【OK】完成连接设置。

返回到QGIS的【浏览】面板,在【MSSQL】根节点下,增加了一个【my_sqlserver】子节点,包含两个数据库“dbo”和“guest”。

 04 MSSQL存储空间数据

在QGIS【浏览】面板中,将其他节点的图层直接拖拽到【my_sqlserver】,即可实现图层拷贝入库。

拖拽拷贝时,如果数据量较大,下方的状态栏将会显示拷贝进度条。拷贝完成后弹出对话框:

打开源AANP图层的属性表,与拷贝到SQL Server后的属性表对比,发现SQL Server的属性表增加了两个字段“qgis_fid”和“geom”。显然,“geom”字段中存储了空间数据。

此时,切换到SSMS,右键点击“test”数据库,选择【刷新】。展开“test”数据库,可以看到数据库中增加了三个表:“dbo.AANP”、“dbo.geometry_columns”和“dbo.spatial_ref_sys”。

在SSMS中右键点击导入的数据表“dbo.AANP”,点【选择前1000行】查看样本数据情况。

在右边查询结果中,切换到【空间结果】标签页,可以预览当前查询结果记录所包含的几何图形。

“dbo.geometry_columns”表是元数据表,存储空间表的基本信息,如“f_table_catalog”表示所属数据库,“f_table_schema”表示所属用户,“f_table_name”表示表的名称,“f_geometry_column”表示存储空间信息的字段、“srid”表示坐标系编号等。

“dbo.spatial_ref_sys”存储了空间数据的坐标参照系信息,其中,“srid”为唯一编码,“srtext”为文本描述,“proj4text”为proj4格式的文本,还有组织名称“auth name”和坐标系的唯一标识“auth srid”。

将图层数据拷贝到SQL Server后,就可以在QGIS中像操作其他数据源的一样对其进行添加、删除等编辑操作了。


版权声明

本文欢迎转载,转载时请注明出处。

猜你喜欢

转载自blog.csdn.net/QGISClass/article/details/109207524