一、QGIS点到线的最短距离
1.使用距离矩阵工具:依次点击“矢量”→“分析工具”→“距离矩阵”。在弹出的窗口中,“输入点图层”选择要计算的点图层,“目标点图层”选择线图层。设置好“输入唯一ID字段”和“目标唯一ID字段”,“输出矩阵的类型”选择“线性(N*kx3)距离矩阵”,可勾选“仅使用最近目标点”。点击“运行”,完成后会生成一个距离矩阵临时图层,打开其属性表,其中“Distance”字段即为点到线的最近距离。
2.使用NNJoin插件:先安装并启用NNJoin插件。然后选择“矢量”→“NNJoin”,在弹出的对话框中,“Input vector layer”选择点图层,“Join vector layer”选择线图层。设置好其他参数后点击“OK”,计算完成后会生成一个新的矢量图层,其属性表中的“distance”字段就是点到线的最近距离。
二、QGIS里的VLOOKUP
使用连接功能:首先将需要操作的两个图层加载到QGIS中,确保它们有一个共同字段。然后右键单击目标图层(即要添加数据的图层),选择“属性”。在弹出的对话框中,选择“连接”选项卡,点击加号按钮添加新连接。在“连接图层”下拉菜单中,选择源图层(即包含要导入数据的图层)。分别在“连接字段”和“目标字段”中,选择两个图层中的共同字段,勾选“已连接字段”,并选择要从源图层复制到目标图层的字段,可设置自定义前缀以便识别导入的数据,最后点击“确定” 。
三、矢量图层按字段分割导出
1. 将需要分割的矢量图层加载到QGIS画布中。
2. 打开“处理工具箱”,搜索“分割矢量图层”工具,双击打开。
3. 在“分割矢量图层”窗口中,“输入图层”选择要分割的矢量图层。
4. 选择用于分割的“唯一ID字段”,QGIS将根据该字段的唯一值来生成新图层。
5. 选择“输出文件类型”,QGIS支持多种文件格式,如SHP、GeoJSON等。
6. 指定“输出目录”,用于存放分割后生成的新文件。
7. 点击“运行”,完成后会在指定目录生成一系列新文件,每个文件对应唯一ID字段中的一个唯一值。
四、沿线的点之间最短路径提取
使用“要素之间最短线”工具:若只需计算点与点之间不考虑沿线情况的最短线,可先将点数据加载到QGIS中,支持CSV等格式,可通过“图层”→“添加分隔文本图层”来添加。然后在“处理工具箱”中找到“矢量分析”→“要素之间最短线”工具,运行该工具,即可得到点之间的最短线图层和最短距离信息。
使用Road Graph插件:该插件可计算折线图层上两点间的最短路径。先从相关网站下载插件并复制到QGIS插件文件夹,在QGIS中启用该插件。激活后,在QGIS主窗口左侧会出现插件面板,选择要分析的折线图层,指定起点和终点,可选择按长度或时间等标准优化,点击“calculate”按钮计算最短路径,点击“export”可将结果导出为新的矢量图层。
五、几何图形表达式
在QGIS中,几何图形表达式可通过 $geometry 函数结合其他几何操作函数,对图层要素的几何属性进行计算和处理,常用于字段计算器、标签表达式等场景。以下是常见的几何图形表达式及用法:
1、基础几何属性获取
获取几何类型
geometry_type($geometry)
示例:返回 Point (点)、 LineString (线)、 Polygon (面)等类型。
获取几何维度
dimension($geometry)
示例:点返回 0 ,线返回 1 ,面返回 2 。
获取几何边界
boundary($geometry)
示例:面要素返回其边界线,线要素返回其端点(点集合)。
2、坐标与距离计算
获取中心点坐标
centroid($geometry)
示例:返回面要素的几何中心点。
获取长度或面积
线/面长度: length($geometry)
面面积: area($geometry)
示例:计算线段长度或多边形面积(需确保图层坐标系为投影坐标系,否则结果无实际单位意义)。
点到线/面的距离
distance($geometry, <目标几何对象>)
示例:计算当前点到另一图层某线要素的最短距离:
distance($geometry, geometry(get_feature('线图层', 'ID', 1)))
3、几何转换与操作
缓冲区(Buffer)
buffer($geometry, <距离>, <段数>)
示例:为点要素生成半径10米的缓冲区: buffer($geometry, 10, 32) 。
简化几何(Simplify)
simplify($geometry, <容差值>)
示例:按0.5米容差简化线要素: simplify($geometry, 0.5) 。
融合邻几何(Union)
union($geometry, <其他几何对象>)
示例:融合当前面与另一图层的面: union($geometry, geometry(get_feature('面图层', 'NAME', '区域A'))) 。
4、空间关系判断
包含关系
contains($geometry, <目标几何>)
示例:判断面是否包含点: contains($geometry, point(116.4, 39.9)) 。
相交关系
intersects($geometry, <目标几何>)
示例:判断线是否与面相交: intersects($geometry, geometry(get_feature('面图层', 'ID', 5))) 。
是否重叠
overlaps($geometry, <目标几何>)
示例:判断两个面是否重叠。
5、高级应用:结合字段与函数
按属性动态计算缓冲区
例如,根据“半径”字段值生成缓冲区: buffer($geometry, "半径", 32) 。
多几何对象批量操作
结合 aggregate() 函数对图层内所有要素进行几何计算:
aggregate('点图层', 'sum', area(buffer($geometry, 5)))
(计算所有点的5米缓冲区面积总和)。
六、扇区图层的制作
1. 安装插件:点击“插件”菜单,选择“管理并安装插件”,在搜索框中输入“Shape Tools”,找到后点击安装。
2. 准备数据:制作包含扇区相关信息的CSV文件,需包含经纬度、扇区主方向角度、覆盖半径等核心字段。其中扇区主方向角度可通过方位角 -30°计算,若为负数则+360°,室分扇区通常设置为起始角度0°、结束角度359°。
3. 添加文本数据图层:点击“图层”→“数据源管理器”,选择“文本数据源”,找到之前制作的CSV文件。设置“分隔符”为“逗号”,“X字段”为经度,“Y字段”为纬度,点击“添加”,生成基站点位图层。
4. 生成扇区图层:点击顶部菜单栏“矢量”→“Shape Tools”→“创建形状”→“扇区”。在弹出的窗口中,“输入图层”选择导入的基站点位图层,“半径字段”选择“覆盖半径”列,“起始角度字段”和“结束角度字段”分别选择对应的角度列,“输出文件”指定扇区图层的保存路径,建议保存为Shapefile或GeoJSON格式,点击“运行”即可生成扇区图层。
5. 样式调整:扇区图层生成后会自动加载到地图中,可右键点击扇区图层,选择“属性”→“符号化”,调整颜色、透明度等样式。