1. 概述
现如今,各种利用根本都采纳了数据库来存储数据,明天咱们就来讲一下如何将数据库中的带地理坐标的数据表数据在地图上间接显示进去,不必进行数据转换哟,操作简略,个别人都能学会哈。
2. 实操办法
数据库个别分为一般关系型数据库、天文空间数据库。
一般关系型数据库,如 MySQL、PostgreSQL、SQL Server 等。
天文空间数据库,该数据库反对天文因素的存储,反对将天文空间因素(如点因素、线因素、面因素)间接作为一种类型存于数据库中,并反对空间运算操作。天文空间数据库个别是在一般关系型数据库的根底上退出空间扩大模块,如带空间扩大的 MySQL 数据库(Mysql Spatial extension)、带空间扩大的 Oracle 数据库(Oracle Spatial)、带空间扩大的 PostgreSQL 数据库(PostGIS)、带空间扩大的 sqlite(Spatialite)等,这种扩大后的空间数据库,就是在原有的关系型数据库根底上,加载扩大模块,而后就能反对天文因素的间接存储,并反对空间操作,如查问最近的因素、缓冲区剖析、最短路径分析等。
个别罕用的地理信息软件都反对读取天文空间数据库,能够将存储的天文数据,间接显示进去,这些软件如 ArcGIS、QGIS、超图等,这个就不介绍了。
然而,如何将一般关系型数据库中的地理坐标数据表数据在地图上展示进去,这个个别人还真不会,因而,本文着重介绍一般关系型数据库中存储的地理坐标数据,如何在地图上间接显示进去。
假如有一个带地理坐标数据的树木信息表,表名为 tree,字段有:id, x, y, tree_type,上面以罕用的 ArcGIS/QGIS 软件为例来阐明如何间接显示坐标数据。
2.1 ArcGIS 间接显示地理坐标数据表
ArcGIS 是一款功能强大的商用地理信息软件,软件失常装置后,须要购买受权能力应用,本文示例采纳 ArcGIS 10.2 版本。
点击菜单“File”,“Add Data”,“Add XY Data”,Look in 抉择“Database Connections”,点击“Add Database Connection”。进入数据库连贯对话框,可抉择不同的数据库 DB2/SQL Server/PostgreSQL 等,有点遗憾,不反对 MySQL。抉择要连贯的数据库类型,填写相应的参数,即可。不过,这种数据库连贯形式要求先装置相应数据库的客户端软件才能够。我这边本机没有装置这些数据库客户端软件,所以就不进行具体阐明了。以下采纳 Excel 中的坐标文件显示为例(可先将数据库中带坐标的表导出为 CSV 文件)。
点击菜单“File”,“Add Data”,“Add XY Data”,Look in 抉择“Folder Connections”,左边按钮“Connect to Folder”,抉择 CSV 所在的目录,抉择要显示的 CSV 文件“tree.csv”,XY 字段会自动检测并填入,若不正确能够手工抉择 XY 所在的字段。确定后,该数据表则作为矢量图层退出,能够像其它失常矢量图层一样显示、操作。
2.2 QGIS 间接显示地理坐标数据表
QGIS 是一款开源的地理信息软件,性能与 ArcGIS 靠近,在 Windows、Mac、Linux、BSD 和手机上均能装置应用,软件装置容易、使用方便。
在 QGIS 中显示天文数据的办法为:将数据库带地理坐标的表作为虚构图层展现,并在 SQL 中用 MakePoint 函数将坐标动静生成天文因素 geomettry。具体操作办法如下:
第一步:将带地理坐标的图层作为数据表退出到图层中。
点击菜单“layer”,“Data Source Manager”,右边抉择“Vector”,左边“Source Type”抉择“Database”,编码 Encoding 抉择“UTF-8”,数据库类型“Type”抉择“MySQL”,而后点击“New”按钮,新建一个 MySQL 连贯,输出名称 Name、主机 Host、数据库 Database、端口 Port、认证信息如用户名、明码等,点击数据库测试按钮“Test Connection”,若参数配置正确,则会连贯胜利,否则请查看数据库连贯参数。连贯胜利后,点击“Add”按钮,抉择要退出图层的表,在我这个例子中抉择“tree”,点击“Close”敞开数据源对话框。
此时,图层 Layers 中曾经有方才退出的数据表,该表还只是列表模式,无奈在地图上显示出坐标。
第二步:将数据表生成虚构矢量图层显示
点击菜单“layer”,“Add Layer”,“Add/Edit Virtual Layer”, 点击“Import”,抉择方才的这个数据库图层确认退出,此时该数据表会退出 Embeded Layers 的列表中,双击这一行中的 Local name,进入批改模式,将该名称批改为简略的名称如“tree_table”,便于下一步应用。
而后在 Query 面板中,输出相应的 SQL 语句,如 select id,make_point(x,y) as geometry, tree_type from tree_table,示意从下面的数据库中生成带天文因素 geometry 的虚构图层,该天文因素由数据库中的 x,y 列造成点天文因素。最初点击“Add”将该虚构图层退出 Layers 列表,此时该图层即可像失常的矢量图层显示出数据表中的坐标数据了,也可调整其符号显示等,与失常的矢量图层一样操作了。
对于不是间接辨别出的 X、Y 字段,能够采纳 SQL 函数进行拆散即可。
到这里,这个 MySQL 中的带地理坐标的数据图层,就失常在地图上显示进去了。依照这个解决流程,其它 MSSQL, PostgreSQL, Oracle 等图层的地理坐标也能够显示进去。
另外,这个过程相熟后,也能够略去第一步,间接从第二步退出图层,在 Embeded Layers 中手工编辑定义好数据源行,再在 Query 面板中定义好虚构图层,退出虚构图层。
矢量地图有了,但背景地图如何展现呢?如显示在线中国地图、离线中国地图,请听下回分解 :)