QGIS矢量数据处理:质心、提取、简化与泰森多边形实战指南
1. 先搞清楚这讲 QGIS 到底在解决什么问题
如果你正在处理矢量数据,比如行政区划、地块、道路网络或者点状设施,那么 QGIS 里“质心、提取、简化、泰森多边形”这几个工具,就是你绕不开的日常操作。这讲内容不是教你炫酷的新功能,而是解决几个非常实际的生产问题:如何快速定位一个面状区域的中心点、如何从一堆数据里精准筛出你要的那部分、如何让复杂边界在保持形状的前提下变得更“轻”、以及如何根据一组点公平地划分势力范围。
很多人学 QGIS 容易陷入两个误区:要么只盯着画图,要么被复杂的空间分析吓住。其实,像质心计算、属性选择提取、几何简化这些,才是连接数据整理和高级分析的关键桥梁。它们操作不复杂,但用对了地方,能极大提升数据处理效率和地图表达的专业性。比如,你要做设施服务范围分析,先得知道每个设施的“质心”位置;要做区域统计,得先“提取”出目标区域的数据;地图打印时边界太复杂卡顿,就需要“简化”;而“泰森多边形”则是分析竞争关系、划分责任区的利器。
这讲的核心价值在于,它把几个离散但高频的工具串起来了,让你明白在什么场景下该用哪个,以及用了之后下一步能干什么。下面我就按实际操作的顺序,带你过一遍每个工具的核心用法、参数怎么调、结果怎么验证,以及我最常遇到的坑点。
2. 环境与数据准备:别在第一步就卡住
开始操作前,确保你的环境是干净的。我建议直接用 QGIS 的长期发布版,比如 3.34 或更高版本,稳定性最好。从官网下载安装包就行,安装过程没什么特别的,注意安装路径不要有中文或空格。
注意:如果遇到启动时报“找不到指定模块”的错误,这通常不是 QGIS 本身的问题,而是系统缺少运行库。先去装个 Visual C++ Redistributable,或者用系统更新修复一下,比折腾 QGIS 安装包更有效。
数据方面,你需要准备一些矢量数据来练手。没有现成的数据也没关系,QGIS 自己就能造:
- 新建一个临时图层:在菜单栏选择“图层” -> “创建图层” -> “新建临时图层”。
- 创建点数据:在“临时图层”里,选择几何类型为“点”,随便画上十几个点,每个点给个不同的 ID 属性。这组点就是后面做“泰森多边形”和计算“质心”(对于多点集合)的基础。
- 创建面数据:同样方法,新建一个“面”类型的临时图层,画几个形状不规则的多边形。这是用来练习“质心”提取和“简化”操作的。
如果你有现成的数据,比如一个包含很多小多边形的行政区划 Shapefile 文件,那就更好了。把它加载进来,我们后面的操作都以它为例。
关键一步:设置好投影坐标系。这是很多新手会忽略,但会导致后续计算结果完全错误的一步。尤其是计算距离、面积相关的操作(如泰森多边形),必须在投影坐标系下进行。右键点击你的图层,选择“属性” -> “源”,查看“几何图形”下的“坐标系”。如果显示的是“EPSG:4326”(WGS84地理坐标系),你需要把它重投影。在菜单栏选择“处理” -> “工具箱”,搜索“重投影图层”,输入你的图层,目标坐标系选择一个适合你所在区域的投影,比如国内的“EPSG:4547”或“EPSG:3857”。处理完会生成一个新图层,后续操作都在这个新图层上进行。
3. 质心:找到面状图形的“中心点”
“质心”工具很简单,但理解它的输出结果比操作更重要。在 QGIS 中,计算质心有两种主要场景。
3.1 为单个多边形或多边形集合计算质心
这是最常用的功能。假设你有一个表示各个小区的面图层,你想知道每个小区的中心位置以便布置设施。
- 打开“处理工具箱”(快捷键 Ctrl+Alt+T)。
- 搜索“质心”。
- 你会看到“矢量几何”下的“质心”工具。双击打开。
- 输入图层:选择你的面图层。
- 参数通常保持默认,直接点击“运行”。
几秒钟后,你会得到一个新的点图层。每个点都对应原始面图层中一个多边形的质心。你可以打开新图层的属性表,会发现它继承了原始面图层的所有属性。
这里有个关键点:质心不一定在多边形内部。对于凹多边形(比如一个“C”字形区域),其质心可能会落在图形外部。这在逻辑上是正确的(物理重心),但如果你需要的是一个保证在图形内部的“代表点”,比如用于标签放置,那么“质心”可能不合适。这时你应该使用“多边形内部点”工具(在工具箱搜索“内部点”)。
3.2 为整个图层计算一个总质心
如果你想计算一个省所有县市区的“总中心点”,该怎么做?不是把每个县的质心算出来再平均,而是:
- 在工具箱搜索“聚合”。
- 使用“聚合”工具,将你的多个面要素“聚合”成一个单一要素。
- 然后对这个聚合后的单一要素使用“质心”工具。
验证结果:把生成的质心点图层和原始面图层叠在一起,肉眼观察质心点是否在面的合理中心位置。对于形状规则的面,质心应该在几何中心;对于不规则的面,理解它可能在外部的可能性。
4. 提取:按条件精准筛选数据
“提取”在 QGIS 里通常指“按属性提取”或“按位置提取”。这是数据清洗和准备的核心。
4.1 按属性提取:SQL查询是核心
假设你有一个全国城市的面图层,你只想提取出“GDP大于5000亿”的城市。
- 在工具箱搜索“按属性提取”。
- 选择工具“按属性提取”。
- 输入图层:选择你的城市图层。
- 选择要素:这里要写一个 SQL 表达式。点击右边的按钮打开表达式编辑器。
- 在“字段和值”里找到“GDP”字段,双击,然后输入
> 5000(假设单位是亿)。表达式看起来像"GDP" > 5000。如果你的 GDP 字段是文本类型,可能需要转换,比如to_real("GDP") > 5000。 - 点击“确定”,然后运行。
你会得到一个新图层,只包含满足条件的城市。这里最容易出错的就是字段类型和表达式语法。数字和文本的比较、空值的处理(用IS NULL或IS NOT NULL)都要小心。
4.2 按位置提取:空间关系的判断
更强大的功能是按空间关系提取。比如,你想提取“所有位于长江流域内的气象站”。
- 你需要两个图层:气象站点图层(点),和长江流域边界图层(面)。
- 在工具箱搜索“按位置提取”。
- 选择“按位置提取”工具。
- 提取自:选择气象站点图层。
- 比较要素来自:选择长江流域边界图层。
- 几何谓词:这是关键参数。选择“在内部”。意思是,提取那些“点”位于“面”内部的要素。
- 运行。
其他常用的几何谓词包括:“相交”(任何接触)、“包含”、“相接”(边界接触)、“不相交”等。这个功能在空间分析中极其常用。
验证提取结果:一定要检查输出图层的要素数量,并与你的预期对比。最好把提取前后的图层用不同颜色叠在一起,直观查看提取是否正确。
5. 简化:让复杂边界“瘦身”而不失真
简化多边形边界,主要目的是为了在小比例尺地图显示、网络传输或快速渲染时提升性能。但简化过度会导致形状严重失真,所以参数调节是门艺术。
在工具箱搜索“简化”,你会看到“简化”或“简化几何图形”工具。
- 输入图层:选择你要简化的面或线图层。
- 简化方法:最常用的是“道格拉斯-普克”算法。它通过移除对整体形状贡献小的顶点来简化。
- 容差:这是最重要的参数。单位与你的数据坐标系一致(如果是投影坐标系,通常是米)。容差值越大,简化越激进,图形越简单,但失真也可能越严重。
- 运行。
如何设置容差?没有标准答案,但有一个测试方法:
- 先设一个很小的值(比如1米),运行看看效果,对比原始图形,几乎没变化。
- 然后逐步增大(10米,50米,100米…),每改一次,就把结果图层和原始图层叠加对比。
- 你的目标是:在肉眼几乎看不出形状明显变化的前提下,使用尽可能大的容差值。你可以查看输出图层的属性表,比较简化前后要素的顶点数量,感受“瘦身”效果。
避坑点:
- 简化可能导致拓扑错误,比如本应相邻的多边形之间出现缝隙或重叠。如果后续分析对拓扑要求高,简化后需要用“检查有效性”工具排查。
- 对于非常复杂的边界(比如海岸线),简化是必须的,但要做好多级细节的预案,即针对不同显示比例尺准备不同简化程度的数据。
6. 泰森多边形:从点到面的势力划分
泰森多边形也叫 Voronoi 图,它的规则很简单:平面上的每个点都生成一个多边形,多边形内的任意位置到该点的距离都比到其他点更近。这非常适合做服务区划分、竞争分析、降雨量插值(蒂森多边形法)等。
在 QGIS 中生成泰森多边形非常直观:
- 确保你有一个点图层,并且已经设置了合适的投影坐标系(再次强调,距离计算必须在投影坐标系下)。
- 在工具箱搜索“泰森多边形”。
- 选择“泰森多边形”工具。
- 输入图层:选择你的点图层。
- 缓冲区域范围:这个参数定义了生成多边形的边界范围。通常可以留空,工具会自动计算一个包含所有点的矩形范围。如果你希望多边形限制在一个特定区域内(比如一个城市的边界内),可以在这里选择另一个面图层作为边界。
- 点击“运行”。
你会得到一个新的面图层,每个面都包裹着一个原始点。面的边界就是两点连线的垂直平分线。
结果验证与应用:
- 验证:确保每个多边形内包含且仅包含一个原始点。用“按位置选择”检查,应该每个点都“在内部”其对应的多边形。
- 应用:生成泰森多边形后,你可以将其与其它面图层进行“相交”分析。例如,用泰森多边形去“相交”人口普查区块,就可以估算每个点(比如便利店)所服务的潜在人口范围。
常见问题:
- 边缘效应:边界处的多边形会无限延伸到你指定的“缓冲区域范围”。如果范围设置得不好,这些多边形会变得非常畸形且巨大。解决方案:总是提供一个合理的边界范围图层,比如行政区划边界。
- 点分布不均:如果点聚集在某些区域而其他区域稀疏,生成的泰森多边形大小会差异悬殊。这是正常现象,它真实反映了点的“势力密度”。
7. 核心参数与结果深度检查清单
把工具用起来只是第一步,确保结果可靠、能用,才是关键。下面是我处理完这类数据后必做的检查项。
7.1 几何有效性检查
尤其是经过“简化”或手动编辑后的数据,几何错误是家常便饭。
- 在工具箱搜索“检查有效性”。
- 运行“检查有效性”工具,输入你处理后的图层。
- 工具会输出两个结果:一个是无效几何图形(及其错误类型,如自相交、环方向错误等),另一个是清理后的有效图形。
- 必须查看无效几何的报告,并根据错误类型决定是接受、手动修复还是用“修复几何”工具自动处理。
7.2 属性表完整性检查
“提取”操作后,务必检查属性表。
- 字段是否完整继承?有没有丢失?
- 要素数量是否符合预期?用
$count表达式或在图层属性里查看。 - 如果使用了复杂的 SQL 表达式提取,抽查几个边界值的要素,看是否被正确包含或排除。
7.3 空间关系逻辑检查
对于“泰森多边形”和“按位置提取”的结果,进行空间逻辑验证。
- 泰森多边形:随机选几个位置,用“测量线”工具手动测量到周围几个点的距离,验证该位置是否确实位于距离最近的点所对应的多边形内。
- 按位置提取:把提取出的要素和原始要素、参考要素图层一起打开,放大到几个样本区域,肉眼核对空间关系(如“在内部”、“相交”等)是否严格满足。
7.4 可视化与制图检查
最终数据是要用来看的。
- 简化效果:将原始图层(半透明填充)和简化后的图层(轮廓线)叠加,在不同缩放级别下查看,确认简化没有导致在常用比例尺下可见的变形。
- 质心位置:对于凹多边形,确认你是否能接受质心在外部。如果不能,换用“内部点”。
- 泰森多边形:着色显示,并标注上原始点的名称或ID,检查划分是否直观清晰。
8. 串联实战:一个完整的数据处理流程
现在我们把这几个工具串起来,模拟一个真实场景:为某个区域规划新的消防站选址,并初步划分其服务范围。
- 数据准备:加载“现有消防站”点图层和“建筑物”面图层。确保坐标系为投影坐标系。
- 提取重点区域:假设我们只关心市中心。用“按属性提取”或“按位置提取”,从“建筑物”图层中提取出“市中心”的建筑群。
- 计算建筑群中心:对提取出的“市中心建筑群”面图层,使用“质心”工具,生成一个代表市中心建筑分布中心的点。这个点可以作为新消防站选址的一个参考点。
- 生成候选点:将“现有消防站”和上一步生成的“市中心中心点”合并为一个新的点图层(使用“合并矢量图层”工具)。这些点代表了所有消防站(现有+规划候选)。
- 划分服务范围:以合并后的点图层为输入,运行“泰森多边形”工具。将“区域行政边界”作为“缓冲区域范围”输入,防止多边形无限外扩。生成的就是基于直线距离的、每个消防站的初步责任区。
- 评估与简化:得到的泰森多边形边界可能非常复杂曲折。为了用于规划汇报地图,使用“简化”工具,设置一个合适的容差(例如10米),使其边界平滑,但又不改变各消防站与服务建筑的归属关系。
- 最终检查:将简化后的泰森多边形、建筑面、消防站点三者叠加显示。检查是否有建筑位于不合理的多边形内(比如离A站更近却被划给B站),这可能是由于边缘效应或简化误差导致,需要微调。
这个流程体现了这几个基础工具如何协作,将原始数据转化为有意义的分析成果。关键在于每一步都清楚自己的目的,并做好结果验证。
9. 避坑经验与进阶提示
最后,分享几个我踩过坑才总结出的经验:
- 顺序很重要:先“提取”再“简化”,还是先“简化”再“提取”?通常,你应该先“提取”出你需要的数据子集,再对这个更小的数据集进行“简化”。这样可以减少不必要的计算量,也避免简化操作影响到你不需要的数据。
- 坐标系是万恶之源:95%的空间分析结果异常,首先怀疑坐标系问题。计算面积、长度、距离、生成泰森多边形,必须用投影坐标系。查看和制图可以用地理坐标系。
- “质心”不是“中点”:对于线图层,“质心”工具给出的是线的几何中心点(按长度)。如果你想要线的起点、终点或中间点,需要其他工具,如“提取顶点”或“几何表达式”。
- 简化容差因图而异:对于精细的宗地图,5米的容差可能都算大;对于省级行政区划图,500米的容差可能都看不出变化。永远通过叠加对比来定参数,不要记死数字。
- 泰森多边形是理想模型:它只考虑平面直线距离,忽略了地形、道路、障碍物。在实际的消防、物流分析中,这只是第一步,后续需要叠加路网进行网络分析,才能得到更真实的等时圈或服务区。
- 利用模型构建器:如果你需要频繁重复“提取->简化->质心”这套流程,可以在 QGIS 的“图形模型构建器”里把它做成一个模型。以后只需要输入原始数据,点一下就能跑出全部结果,极大提升批量处理效率。
把这些工具练熟,你会发现它们就像螺丝刀、扳手一样,是处理空间数据的基础必备品。组合起来,能解决大部分中低复杂度的数据准备和初步分析问题。真正的功夫,不在于记住菜单在哪,而在于根据任务目标,灵活、准确地选用和组合它们。