答疑 | 如何将图层导入MySQL数据库并用QGIS打开
01
工具软件
QGIS:3.16.6
MySQL:8.0.25.0
GDAL:3.3.0
02
准备MySQL
MySQL安装包下载地址:
选择全部
今天要回答一个问题:如何把shape文件导入到MySQL,并用QGIS打开显示到地图窗口中。 01 工具软件 QGIS:3.16.6 MySQL:8.0.25.0 GDAL:3.3.0 02 准备MySQL MySQL安装包下载地址: 选择全部安装,按照提示完成即可。 从开始菜单找到MySQL Workbench 8.0,打开: 建立用于导入数据的一个用户,比如“newuser”,参数设置如下: Authentication Type:standard; Limit to Hosts Matching:% ; 设置和确认密码; 点击【Apply】应用以建立用户。 新建用于存储数据的数据库。工具栏点击 按钮,设置name为:“qgistest”,点击【Apply】按钮,创建数据库。 03 准备GDAL GDAL 3.3.0下载地址:。 将下载到的zip压缩包解压,进入”…\ release-1928-x64-gdal-3-3-0-mapserver-7-6-3\”目录,双击“SDKShell.bat”运行GDAL命令行,在提示符后输入如下命令检查GDAL版本以查看是否运行正常: ogr2ogr –version 如果正常输出GDAL的版本,无报错,说明GDAL安装完成。 04 导入shape数据到MySQL 将需要导入到MySQL的shape文件存储在一个无中文字符和空格的路径中,比如本文使用的路径:“D:\data\world.shp”,在GDAL命令行中运行如下命令: ogr2ogr MySQL:qgistest,host=localhost,user=newuser,password=123456 D:\data\world.shp -nln world -update -overwrite 命令行各部分说明如下: ogr2ogr:GDAL数据转换命令; MySQL:qgistest:连接MySQL下的qgistest 数据库; Host:数据库主机,如果MySQL安装在本机,用localhost即可,如果在网络上,则需要输入主机的IP地址; User:登陆数据库的用户名; Password:登陆数据库密码; D:\data\world.shp:要导入的Shape文件绝对路径,根据自己的文件路径修改,不要含空格或者中文字符; -nln world:新建图层名称为world,图层名称可根据需要自己拟定; -update:以update模式打开数据源; -overwrite:删除已有同名图层,重新创建。 如果在运行上述命令时,出现“ERROR 1: MySQL connect failed for: test,host=localhost,user=newuser,password=XXXXXXXXXXXXX denied for user 'newuser'@'%' to database 'test'”错误,如下图: 打开MySQL Workbench 8.0->Users and Privileges,选“newuser”,在右边切换到“Scheme privileges”,点击“Add Entry”按钮,添加Scheme权限,然后点击下方的“Select ALL”按钮,点“Apply”给用户赋予全部权限: 05 QGIS打开数据 打开QGIS,在工具栏点击 数据源管理器按钮,切换到【矢量】->【数据库】->【连接】->【新建】,设置连接参数如下: 类型:MySQL; 名称:任意字符; 主机:localhost; 数据库:qgistest; 认证->基本->用户名/密码:newuser/123456,并勾选【存储】复选框; 具体如下图: 点击【OK】,在点击下方的【添加】按钮,关闭数据源管理器返回QGIS主窗口。此时,图层面板已经出现“qgistest world”图层,但是地图窗口仍然不显示图形。右键点击“qgistest world”图层->【属性】->【源】->【查询构建器】,在查询构建对话框中输入如下表达式: select * from world; 点击两次【OK】按钮后,应该就可以看到地图窗口显示出世界行政区划图了。 06 写在最后 由于受到资金、精力各方面限制,QGIS团队目前对MySQL数据库的开发几乎处于停滞状态。使用本文的方法mssql数据库导入,可以实现数据的导入、显示,但不能直接对图层进行编辑和修改操作。所以,在需要用QGIS编辑数据的情况下,建议采用其他数据库来存储。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |