点密度图(Dot Density Map)是专题地图的一种,是用一定大小的、形状相同的点表示分散分布现象的分布范围、数量特征和分布密度的制图方法,又叫点值法或者点法,广泛应用于表示人口、农业、畜牧业等专题图上。点密度地图上,点的疏密即可看出现象的集中或分散程度,点的个数越多越密集,反映数据所表示的事物或现象在该区域的密度或浓度越大。
本文使用QGIS演示点密度地图的制作过程,最终效果如下:
01 下载示范数据并加载
本文的示范数据为江苏省行政区划,来源于网络,下载地址如下:
链接:https://pan.baidu.com/s/1qhkzmCgzrScTC_ubeYlLCA
提取码:v19m
启动QGIS,点击工具栏的按钮,打开数据源管理器对话框。
在数据源管理器对话框中,依次点击【矢量】->【文件】单选按钮->矢量数据集右侧的【…】按钮,找到下载的jiangsu.gpkg文件,点击下方的【添加】按钮,在弹出的对话框中,选中“区县-面”、“市级-面”、“省级-面”,点击【OK】,将三个图层添加到地图窗口。
返回QGIS主窗口,可以看到打开的三个面图层:“区县-面”、“市级-面”和“省级-面”。先取消勾选“市级-面”和“省级-面”暂时关闭这两个图层。
选中“区县-面”图层,点击图层面板上方的按钮,在窗口右侧打开图层样式面板,选中“简单填充”,设置如下参数:
填充颜色:白色;
填充方式:实线;
描边颜色:#8f8989。
至此,我们将示范数据加载到QGIS,并做了基本的符号化设置,为后续点密度地图的制作做好了准备。
02 生成点密度图层
右键点击“区县-面”->【打开属性表】,打开属性表窗口。观察区县的属性,可以看到“pop_wan”字段,表示模拟的、以万人为单位的人口数量,该字段为生成点密度图的核心数据。(注意,此数据为测试数据,与官方发布的人口统计数据无关。)
关闭属性表窗口,点击菜单【矢量】->【研究工具】->【多边形内的随机点】,打开参数设置对话框。
说明:
【多边形内的随机点】算法对输入图层中的每个多边形生成指定数量的点,例如,指定输入图层为江苏省的区县面,区县内点的数量指定由其人口数确定,则算法将根据人口数量多少在每个区县内生成随机点,这些点随机分布于多边形内,设置点之间距离参数可以控制其最小相距距离。
在“多边形内的随机点”参数对话框内,输入多边形:“区县-面”,点击“每个要素的点数目”右侧的按钮,从下拉菜单选择【编辑】,打开表达式对话框,设置表达式控制每个区县内生成的点数。
在弹出的“表达式字符串构建器”对话框中,展开函数区域的【字段和值】节点,双击“pop_wan”字段,将它添加到表达式区域,表示地图上每一个点代表10000人。点击【OK】按钮返回。
设置“多边形内的随机点”其他参数:
点之间的最小距离:100米。该参数表示如果当前面要素的100米距离范围内已经有一个点,则不会在添加点。
点之间全局最小距离:50米。该参数表示全局范围内点与点之间的最小距离为50米。
说明:
“点之间的最小距离”和“点之间全局最小距离”两个参数之间的区别在于:前者仅考虑同一个多边形内的点,后者考虑所有已经生成的点。如果将“点之间全局的最小距离”设置为等于或大于(局部)“点之间的最小距离”,则后者无效。
点击【运行】按钮,QGIS根据设置的参数生成随机点。根据生成点的总数量不同,算法所需要的时间也不同。
算法运行结束后,可以在QGIS的图层面板看到新生成临时图层:“多边形内的随机点”,该图层自动显示到地图窗口中。
03 点密度图层符号化
接下来我们对生成的随机点做一些样式设置,以达到开篇所显示的地图效果。
首先,把存储于内存的临时图层永久化保存到硬盘。右键点击“多边形内的随机点”->【永久化】,在弹出的对话框中设置保存的路径,图层名:“人口密度(1点=1万人)”。点击【OK】完成临时点图层的永久化。
然后,开始设置点的样式。选择“人口密度(1点=1万人)”图层,在图层样式面板中,选中“简单标记”,设置如下参数:
大小:0.45毫米;
填充颜色:#820000;
描边颜色:任意颜色;
描边样式:不显示画笔;
符号:圆形。
得到符号化效果如下:
接下来,设置行政区划背景图层的样式。
在图层面板取消勾选“区县-面”使其隐藏,勾选“市级-面”,将市级图层显示出来。
右键点击“区县-面”->【样式】->【复制样式】->【所有样式类别】,将“区县-面”图层的样式复制到剪贴板。
类似步骤,右键点击“市级-面”->【样式】->【粘贴样式】->【所有样式类别】,将“县级-面”图层的样式复制到“市级-面”图层。
保持“市级-面”图层的选中状态,点击图层样式面板的标签,切换到标注设置页面。设置参数如下:
-
标注方式:单一标注;
-
值:NAME;
-
在文本 页面设置字体和颜色如下:
-
字体:选择一个合适的字体,比如本文选择“华光超粗黑_CNKI”;
-
颜色:#5c5c5c;
-
在轮廓 页面设置文本的缓冲区:
-
勾选“绘制文本缓冲区”;
-
颜色:#d4d4d4;
以上设置完成后,得到的市级行政区划标注效果如下:
为了突出省级界线,设置省级行政区划背景。拖动“省级-面”图层将其置于“市级-面”图层之上,并勾选显示该图层。
在图层面板选中“省级-面”图层,右侧的图层样式面板设置如下:
渲染方式:反转多边形;
填充的子渲染方式:形状渐层填满;
渐变色:双色;
颜色1:#6b6b6b;
颜色2:#ffffff,透明度:50%;
阴影样式:选择“设置距离”,距离保持默认的5毫米。
完成省级边界设置后,效果如下:
最后,从互联网地图中选择一个合适的底图,例如本文选用MapTiler:确保安装MapTiler插件,从浏览器面板展开MapTiler节点,双击“Basic”将其添加到地图窗口。关闭MapTiler不需要的图层后,最终的效果如下:
04 常见点密度地图实现的讨论
在ArcGIS、超图的iDeskpro等其他GIS中,点密度图的实现是通过符号化系统,因此点密度图作为图层数据的符号表达,以图层属性的形式与数据关联。
与此不同的是,QGIS直接根据数据采用随机点算法生成点图层(物理存在的数据),然后对点图层进行符号化表达,所以在制作方式上显得略微繁琐。另外,有些GIS软件提供了均匀布点的选项,比如超图的iDeskpro,但QGIS针对多边形范围目前暂时仅提供生成随机布点算法,所以具有一定的局限性。
推荐阅读:
版权声明
本文欢迎转载,转载时请注明出处。