文章目录[隐藏]
缘起
其实上一篇的信息量已经够大了,但是还不完全够,后续又折腾出来一大堆坑,所以决定再来一篇文章讲一讲。会以短篇合集的形式一点一点更新。
思路
1、如果说十来个点,就一条线,甚至两三条。完全可以直接操作,就不需要繁琐的表格,直接两张表完成。第一张表是所有点的坐标,第二张是所有线段的具体信息。
2、如果说点位几百个,线条十多条,甚至图层有五百多个。这个时候就需要小心行事。因为在点位复杂的情况下,一个错误可能会引发连锁反应。而且在这个时候AI犯傻的情况会很多。也就是从文本到转折点的时候会有错漏的情况。这些我的建议是人工二次校验。先去把所有不同坐标的点导出来,丢到qgis里面看一眼。然后线段的转折点就对照自己的文本去看了。这个工作必须要做,等到真正把csv变成图层了,比如说点转线了,然后才意识到自己出问题,是不好的。理论上可以弄个系统,甚至用Excel的公式都能实现,但还是那句话,点位坐标搞错了后面就是错的,转折点遗漏也是。
3、qgis有时候挺反人类的,就是你去改属性表的时候有保存,然后你ctrls+s也有保存,这两个保存是不一样的,或者说互相独立,所以请记得全部点一下保存。
4、qgis有时候挪动标注问你主键,但是你选了后还是不能挪动,是bug,需要用代码把字段加上,当然你手动加上也行。("auxiliary_storage_labeling_positionx", QVariant.Double),("auxiliary_storage_labeling_positiony", QVariant.Double)这两个玩意控制了挪动标注的位置。而且是绝对位置。
5、实际上我操作中用的最多的是直接开属性表修改,有时候导入来导入去不如单独改,改完了让他自己渲染一下就行了,前期可以导入,后期建议微操。
6、遇事不决去问AI吧,有个gemini能解决大多数问题。
7、图层别太多,我应该是有七百多个吧,但是实际上渲染没这么多,太多建议别开实时渲染,就右下角的那个勾,我用13900K+4090(关了小核)和我的8745HS+780M都对比了一下发现该崩溃还是崩溃,我怀疑他自己本身也承受不了。所以建议没事多保存,然后最好不要留存临时图层,弄完就永久化。
8、qgis的字体缓存是开启关闭才能刷新,所以有新的字体建议安装到系统里面再说,然后安装字体选择给所有用户安装不然的话也出问题。
QGIS 批量处理工作流:从分割文本图层到标准化的 GeoPackage 图层
一、 最终目标
本工作流旨在将 QGIS 中多个临时的、不可编辑的“分割文本图层”或类似图层,通过自动化的 Python 脚本,批量转换为可编辑、字段完整、已设置好标注规则的标准化 GeoPackage 矢量图层。
二、 核心优势
- 自动化与效率:一键处理几十上百个图层,告别手动重复操作。
- 数据完整性:采用现代的 GeoPackage (
.gpkg
) 格式,完美保留所有字段信息,解决了 Shapefile 格式字段名长度不能超过10个字符的致命缺陷。 - 标准化:确保所有产出的图层都拥有一致的、完整的属性字段结构。
- 可复现性:流程清晰,代码可靠,任何人都可以按照本文档重现操作。
三、 工作流程与代码
整个流程分为三个核心步骤。请按顺序执行。
步骤一:批量将源图层转换为 GeoPackage (.gpkg) 文件
目的:这是所有工作的基础。此步骤将您项目中临时的、可能无法直接编辑的图层,转换为独立的、永久的、可完全编辑的 .gpkg
矢量文件。
操作指南:
- 在运行代码前,请确保所有需要处理的源图层都已加载到 QGIS 项目中。
- 打开 QGIS Python 控制台 (
插件 -> Python 控制台
)。 - 将下面的代码完整复制并粘贴到控制台中。
- 重要:请仔细检查代码中
layer_names_to_process
列表,确保里面的图层名称与您图层面板中的名称完全一致。 - 按回车键运行脚本。脚本会弹出一个窗口,让您选择一个文件夹用于存放所有新生成的
.gpkg
文件。
Python 代码 (步骤一):
import os
from qgis.core import (
QgsVectorFileWriter,
QgsVectorLayer,
QgsProject,
Qgis
)
from qgis.PyQt.QtWidgets import QFileDialog
# 1. 在此定义所有需要转换的图层的准确名称
layer_names_to_process = [
自己写
]
# 2. 弹出一个对话框让用户选择一个文件夹
output_dir = QFileDialog.getExistingDirectory(None, "请选择一个文件夹来保存所有转换后的图层")
if output_dir:
processed_count = 0
not_found_layers = []
for layer_name in layer_names_to_process:
found_layers = QgsProject.instance().mapLayersByName(layer_name)
if not found_layers:
iface.messageBar().pushMessage("未找到", f"没有找到名为 '{layer_name}' 的图层,已跳过。", Qgis.Warning, 4)
not_found_layers.append(layer_name)
continue
layer = found_layers[0]
new_layer_name = f"{layer.name()}"
output_path = os.path.join(output_dir, f"{new_layer_name}.gpkg")
options = QgsVectorFileWriter.SaveVectorOptions()
options.driverName = "GPKG" # 指定驱动为 GeoPackage
options.fileEncoding = "UTF-8"
error_code = QgsVectorFileWriter.writeAsVectorFormatV3(layer,
output_path,
QgsProject.instance().transformContext(),
options)
if error_code != QgsVectorFileWriter.NoError:
iface.messageBar().pushMessage("错误", f"保存图层 '{new_layer_name}' 失败。", Qgis.Critical, 5)
continue
new_layer = QgsVectorLayer(output_path, new_layer_name, "ogr")
if new_layer.isValid():
QgsProject.instance().addMapLayer(new_layer)
processed_count += 1
else:
iface.messageBar().pushMessage("错误", f"加载新图层 '{new_layer_name}' 失败!", Qgis.Critical, 5)
iface.messageBar().pushMessage("成功", f"步骤一完成!共 {processed_count} 个图层被成功转换为 GeoPackage 文件。", Qgis.Success, 7)
if not_found_layers:
iface.messageBar().pushMessage("注意", f"有 {len(not_found_layers)} 个图层未被找到: {', '.join(not_found_layers)}", Qgis.Warning, 10)
else:
iface.messageBar().pushMessage("操作取消", "您没有选择输出文件夹,操作已取消。", Qgis.Info, 5)
预期结果:
- 在您选择的文件夹中,会生成一批与源图层同名的
.gpkg
文件。 - 这些新的
.gpkg
图层会自动加载到您的 QGIS 项目中。
步骤二:批量检查并补全图层字段
目的:确保所有在步骤一中新生成的图层都含有统一、完整的属性字段,为后续的数据处理和标注打下基础。
操作指南:
- 在 QGIS 图层面板中,创建一个新的图层组,并将其命名为
new
。 - 将所有在步骤一中新生成的
.gpkg
图层拖拽到这个名为new
的图层组中。 - 将下面的代码完整复制并粘贴到 QGIS Python 控制台中。
- 按回车键运行脚本。脚本会自动检查
new
组里的所有图层,并为它们添加缺失的字段。
Python 代码 (步骤二):
from qgis.core import QgsProject, QgsField, Qgis
from qgis.PyQt.QtCore import QVariant
# 1. 定义期望的完整字段结构
required_fields = [
("fid", QVariant.LongLong),
("placemark_name", QVariant.String),
("longitude", QVariant.Double),
("latitude", QVariant.Double),
("show_label", QVariant.Int),
("stable_id", QVariant.Double),
("auxiliary_storage_labeling_positionx", QVariant.Double),
("auxiliary_storage_labeling_positiony", QVariant.Double)
]
# 2. 找到名为 "new" 的图层组
target_group_name = "new"
root = QgsProject.instance().layerTreeRoot()
target_group = root.findGroup(target_group_name)
if not target_group:
iface.messageBar().pushMessage("错误", f"找不到名为 '{target_group_name}' 的图层组。请先创建并放入图层。", Qgis.Critical, 5)
else:
iface.messageBar().pushMessage("开始处理", f"正在为 '{target_group_name}' 组中的图层检查并添加字段...", Qgis.Info, 3)
layers_in_group = [child.layer() for child in target_group.children()]
total_layers_modified = 0
for layer in layers_in_group:
# 直接尝试开启编辑模式
if layer.startEditing():
provider = layer.dataProvider()
existing_field_names = [field.name() for field in provider.fields()]
fields_to_add = []
for field_name, field_type in required_fields:
if field_name not in existing_field_names:
fields_to_add.append(QgsField(field_name, field_type))
if fields_to_add:
provider.addAttributes(fields_to_add)
added_field_names = [f.name() for f in fields_to_add]
iface.messageBar().pushMessage("更新图层", f"为 '{layer.name()}' 添加了字段: {', '.join(added_field_names)}", Qgis.Success, 5)
total_layers_modified += 1
# 提交更改并退出编辑模式
layer.commitChanges()
else:
iface.messageBar().pushMessage("错误", f"无法为图层 '{layer.name()}' 开启编辑模式,已跳过。", Qgis.Critical, 4)
iface.messageBar().pushMessage("处理完成", f"步骤二完成!共更新了 {total_layers_modified} 个图层的字段结构。", Qgis.Success, 7)
预期结果:
new
组中的所有图层现在都拥有了在代码中定义的8个标准字段。- QGIS 顶部的消息栏会显示每个图层的处理情况。
步骤三:批量设置数据定义的标注
目的:为所有处理好的图层应用统一的标注规则,即:仅当 show_label
字段的值为 1
时,才显示标注。
操作指南:
- 确保您的图层仍然位于名为
new
的图层组中。 - 将下面的代码完整复制并粘贴到 QGIS Python 控制台中。
- 按回车键运行脚本。
Python 代码 (步骤三):
from qgis.core import (
QgsProject,
QgsPalLayerSettings,
QgsVectorLayerSimpleLabeling,
QgsProperty,
Qgis
)
# 1. 找到名为 "new" 的图层组
target_group_name = "new"
root = QgsProject.instance().layerTreeRoot()
target_group = root.findGroup(target_group_name)
if not target_group:
iface.messageBar().pushMessage("错误", f"找不到名为 '{target_group_name}' 的图层组。", Qgis.Critical, 5)
else:
iface.messageBar().pushMessage("开始处理", f"正在为 '{target_group_name}' 组中的图层设置标注...", Qgis.Info, 3)
layers_in_group = [child.layer() for child in target_group.children()]
for layer in layers_in_group:
# 创建标注设置
label_settings = QgsPalLayerSettings()
label_settings.drawLabels = True
label_settings.fieldName = "placemark_name" # 使用 placemark_name 字段作为标注内容
# 核心:设置数据定义的 "显示" 属性
# 表达式为 "show_label" = 1
label_settings.dataDefined.setProperty(
QgsPalLayerSettings.Show,
QgsProperty.fromExpression('"show_label" = 1', True)
)
# 将设置应用到图层
labeling = QgsVectorLayerSimpleLabeling(label_settings)
layer.setLabeling(labeling)
layer.setLabelsEnabled(True) # 启用图层的标注
# 刷新地图画布以显示更新后的标注
iface.mapCanvas().refreshAllLayers()
iface.messageBar().pushMessage("成功", f"步骤三完成!已为 {len(layers_in_group)} 个图层设置了标注规则。", Qgis.Success, 5)
预期结果:
- 地图上所有
new
组内的图层,只有在其属性表中show_label
字段值为1
的要素才会显示标注。
四、 常见问题与关键概念 (FAQ)
Q: 为什么选择 GeoPackage (.gpkg) 而不是 Shapefile (.shp)?
A: Shapefile 是一个非常古老的格式,其字段名长度被限制在10个字符以内。像 auxiliary_storage_labeling_positionx
这样的长字段名会被截断,导致数据丢失。GeoPackage 是一个现代开放标准,没有这个限制,功能更强大,是 QGIS 官方推荐的格式。
Q: 为什么之前的代码会提示图层“不可编辑”?
A: QGIS 对加载的图层默认采用“只读”模式。要修改图层(如添加字段),必须先通过代码或手动点击铅笔图标来“开启编辑模式”。我们最终的代码通过 layer.startEditing()
命令强制开启编辑模式,从而解决了这个问题。
Q: 如果我的图层组不叫 "new" 怎么办?
A: 只需将步骤二和步骤三代码中的 target_group_name = "new"
这一行,改成您实际使用的图层组名称即可。
工作手册
QGIS DEM 地形起伏感制作指南
文档目的:本手册旨在为QGIS用户提供清晰的操作指引,通过利用数字高程模型(DEM)数据,在二维地图和三维视图中创造出逼真且具有起伏感的地形效果。
1. 核心概念
- DEM (Digital Elevation Model):数字高程模型,是描述地表高程信息的栅格数据,也是制作地形起伏效果的基础。
- 山体阴影 (Hillshade):通过模拟太阳光照产生的地形阴影效果,是增强二维地形起伏感的关键技术。
- 垂直夸大 (Vertical Exaggeration / Z Factor):通过按比例增加高程值,使地形的起伏在视觉上更加突出和明显。
2. 方法一:标准山体阴影与DEM彩色叠加(适用于二维地图制作)
这是最经典且高效的方法,用于制作信息丰富且具立体感的二维地形图。
操作步骤:
加载数据:
- 通过菜单栏
图层
>添加图层
>添加栅格图层
,将您的DEM数据加载到QGIS项目中。
- 通过菜单栏
创建山体阴影图层:
- 打开
处理工具箱
(菜单栏处理
>工具箱
)。 - 在工具箱中搜索并双击
山体阴影 (Hillshade)
工具。 - 在弹出的窗口中:
- 高程图层:选择已加载的DEM图层。
- Z因子:设置一个大于1的数值(如:2或3)来增强地形起伏感。数值越大,起伏越夸张。
- 其他参数(如光照方位角、高度角)可保持默认或根据需要调整。
- 点击
运行
,生成一个新的山体阴影图层。
- 打开
为DEM图层着色:
- 在图层面板中,右键点击原始的DEM图层,选择
属性
。 - 进入
符号系统
选项卡。 - 将
渲染类型
从单波段灰度
更改为单波段伪彩色
。 - 在
颜色渐变
选项中,选择一个适合表现地形的色带(如Topography
)。 - 点击
分类
按钮(如果需要),然后点击应用
。
- 在图层面板中,右键点击原始的DEM图层,选择
叠加图层并设置混合模式:
- 在图层面板中,确保着色后的DEM图层位于山体阴影图层的上方。
- 再次打开DEM图层的
属性
>符号系统
。 - 找到
图层渲染
选项,将其中的混合模式
设置为正片叠底 (Multiply)
。 - 可根据需要微调DEM图层的
不透明度
,以达到最佳视觉平衡。 - 点击
确定
完成设置。
3. 方法二:多方向山体阴影(适用于细节更丰富的二维地图)
此方法通过模拟多个方向的光源来渲染地形,可以展现更多地形细节,避免单一光源造成的细节丢失。
操作步骤:
加载数据:
- 加载您的DEM数据。
直接设置DEM符号系统:
- 右键点击DEM图层,选择
属性
。 - 在
符号系统
选项卡中,将渲染类型
直接设置为山体阴影
。 - 勾选
多方向
复选框以启用该功能。 - 调整
Z因子
以夸大地形起伏。 - 此方法将直接在原始DEM图层上渲染出效果更佳的山体阴影。
- 右键点击DEM图层,选择
4. 方法三:3D地图视图(适用于交互式三维可视化)
将DEM数据在三维环境中进行展示,提供最直观的地形起伏感受,支持任意角度的缩放、平移和旋转。
操作步骤:
打开3D地图视图:
- 通过菜单栏
视图
>新建3D地图视图
打开一个新的3D视图窗口。
- 通过菜单栏
配置3D地形:
- 在3D地图视图窗口中,点击
配置
按钮(扳手图标)。 - 在弹出的配置面板中,选择
地形
选项卡。 - 类型:设置为
DEM (栅格图层)
。 - 高程:选择您加载的DEM图层。
- 垂直比例:设置一个大于1的数值(如:1.5或2)来夸大Z方向的地形起伏,使其更加显著。
- 点击
确定
,即可在3D视图中看到立体地形。
- 在3D地图视图窗口中,点击
在3D地形上叠加图层:
- 若想在三维地形上叠加卫星影像或其他地图,只需在QGIS主窗口的图层面板中,将该图层拖拽到DEM图层上方即可。该图层会自动附着在3D地形表面。
提示:在3D视图中,按住Shift
键和鼠标左键可以方便地进行缩放和旋转操作。 您还可以利用3D视图的动画功能创建地形的飞行漫游视频。
工作手册:在 QGIS 中根据属性表坐标更新点要素的地理位置
1. 问题场景
当我们在 QGIS 的图层属性表中直接修改了记录经纬度(或X, Y坐标)的字段值后,地图画布上对应的点要素并不会自动移动到新的位置。
核心原因:在 QGIS 中,要素的 属性数据(存储在属性表中的描述性信息,如名称、经纬度字段)和其 几何图形数据(决定要素在地图上实际位置的空间信息)是分开存储和管理的。直接修改属性表,只改变了描述信息,并未更新其空间位置。
本手册旨在提供标准操作流程,以解决此问题。
2. 标准解决方案:使用“字段计算器”更新几何图形
此方法适用于更新单个或批量点要素的位置,是最高效、最准确的推荐方法。
操作步骤:
进入编辑模式:
- 在“图层”面板中,选中您需要操作的点图层。
- 点击工具栏上的“切换编辑模式”按钮(铅笔图标),或右键图层选择“切换编辑模式”。
打开属性表并选中目标要素:
- 右键图层,选择“打开属性表”。
- (关键步骤) 在属性表中,通过点击行号来选中您想要移动的一个或多个点要素(例如“四姑娘山”)。
- 提示:如果希望更新图层中的所有点,则无需进行选择。
启动字段计算器:
- 在属性表顶部的工具栏中,点击“打开字段计算器”按钮(算盘图标)。
配置字段计算器:
- 在弹出的窗口中,进行以下设置:
- 勾选顶部的 [√] 更新现有字段。
- 从旁边的下拉菜单中,选择
$geometry
。这代表我们的操作目标是要素的“几何图形”本身。 - 在下方的“表达式”编辑框中,输入以下函数:
make_point("lon", "lat")
- 注意:请将表达式中的
"lon"
和"lat"
替换为您属性表中实际存储 经度 (X坐标) 和 纬度 (Y坐标) 的字段名称。
- 在弹出的窗口中,进行以下设置:
执行并保存更改:
- 点击“确定”按钮。字段计算器将根据您选中的行以及对应的
lon
和lat
字段值,重新生成点的位置。 - 此时,您会看到地图上的点已经移动到了新位置。
- 最后,再次点击“切换编辑模式”(铅笔图标)来结束编辑,并在弹出的提示框中点击 “保存”。
- 点击“确定”按钮。字段计算器将根据您选中的行以及对应的
3. 备选方案:使用“顶点工具”精确移动单个点
此方法适用于需要手动、精确调整极少数(通常是单个)点的位置。
操作步骤:
进入编辑模式:同上,确保您的图层处于编辑状态。
激活顶点工具:
- 在“数字化工具栏”中,找到并点击“顶点工具(当前图层)”按钮。
- 如果找不到该工具栏,可以在菜单栏的
视图 -> 工具栏
中勾选“数字化工具栏”。
编辑坐标:
- 使用“顶点工具”在地图上 右键点击 您想要移动的点要素。
- QGIS 界面侧边会弹出“顶点编辑器”面板。
- 在此面板中,您可以直接输入精确的 X (经度) 和 Y (纬度) 坐标值,按回车键后,点的位置会实时更新。
保存更改:完成调整后,退出编辑模式并保存您的修改。
如何在 QGIS 中模拟红绿色盲以进行地图可访问性测试
文档目的
本篇文档旨在详细说明如何在 QGIS 软件中启用内置的色盲模拟功能。通过此功能,地图设计者可以预览其作品在红绿色盲用户眼中的显示效果,从而创建对所有人都清晰易读的地图。
背景知识:红绿色盲模拟
红绿色盲是最常见的色觉障碍类型,主要分为 红色盲 (Protanopia) 和 绿色盲 (Deuteranopia)。
- 红色盲 (Protanopia):对红色光的感知能力缺失或较弱。在 QGIS 中,这对应
模拟红色盲 (无红色)
选项。 - 绿色盲 (Deuteranopia):对绿色光的感知能力缺失或较弱。在 QGIS 中,这对应
模拟绿色盲 (无绿色)
选项。
QGIS 同时提供了这两种模拟模式,让您可以全面地测试地图对红绿色盲用户的友好程度。
准备工作
- 安装并打开 QGIS 软件 (该功能在 QGIS 3.x 及以上版本中提供)。
- 打开一个现有的 QGIS 项目,或者创建一个新项目并添加至少一个应用了多种颜色的图层(例如,一个分类设色的矢量图层或一个栅格图层)。
操作步骤
请按照以下步骤,即可在您的 QGIS 项目中复现色盲模拟:
打开预览菜单:
在 QGIS 顶部的菜单栏中,找到并点击视图 (View)
菜单。选择预览模式:
在视图 (View)
的下拉菜单中,将鼠标悬停在预览模式 (Preview Mode)
选项上,会展开一个子菜单。激活红绿色盲模拟:
从子菜单中选择您想要模拟的红绿色盲类型:- 若要模拟 红色盲,请点击
模拟红色盲 (无红色)
(Simulate Color Blindness (Protanope))。 - 若要模拟 绿色盲,请点击
模拟绿色盲 (无绿色)
(Simulate Color Blindness (Deuteranope))。
(此图与您提供的截图一致)
- 若要模拟 红色盲,请点击
结果验证
- 当您选择了任意一种模拟模式后,主地图画布中的所有颜色将 立即实时更新,以显示模拟后的视觉效果。
- 您可以在此模式下继续编辑地图的颜色、符号等样式,并实时观察改动在色盲模拟视图下的呈现效果,非常便于调整设计方案。
如何关闭模拟
若要恢复到正常的颜色显示,只需再次进入 视图 (View)
→ 预览模式 (Preview Mode)
菜单,然后选择顶部的 正常 (Normal)
选项即可。
QGIS 工作手册:创建复古历史感地图效果
文档编号: QGIS-STYLE-003
版本: 1.0
主题: 利用打印布局和混合模式实现地图的复古艺术化处理
1. 目标
本手册旨在指导 QGIS 用户通过标准化的工作流程,为地理数据地图添加复古、怀旧或羊皮纸质感的艺术效果。最终输出的地图将具备统一的历史感色系和纹理,适用于出版、展示或特殊项目需求。
2. 核心原则:内容与装饰分离
在 QGIS 中,必须严格区分两种类型的图层:
- 地理数据图层: 具有真实坐标参照系统 (CRS) 的数据,如矢量边界、道路、栅格高程等。它们的位置由地理坐标决定,是地图的核心内容。
- 装饰性元素: 不具备地理信息的视觉元素,如背景纹理、边框、Logo、指北针等。
错误操作: 将装饰性的纹理图片作为栅格图层直接添加到 QGIS 主画布中。这会导致图片因缺少坐标信息而发生巨大偏移,无法与地理数据正确对位。
正确方法: 在 QGIS 的 “打印布局 (Print Layout)” 环境中,将地理数据(作为地图条目)与装饰性图片(作为图片条目)进行分层叠加和渲染。
3. 准备工作
- QGIS 项目文件: 准备好您的主地图项目,其中包含已设置好基础符号系统的地理数据图层。
- 高分辨率纹理图片: 从网络资源库下载一张或多张高分辨率的复古纹理图片(例如:旧纸张、羊皮纸、画布等),保存至本地。
4. 详细操作步骤
步骤一:进入并设置打印布局
- 在 QGIS 顶部菜单栏,点击
项目
>新建打印布局...
。 - 为布局命名(例如:“古地图布局”)并点击“确定”。
步骤二:添加核心地图
- 在打印布局窗口的左侧工具栏,点击
添加地图
按钮。 - 在布局画布上拖拽出一个矩形区域,您的 QGIS 主画布内容将在此区域内显示。
- 使用右侧的
项目属性
面板和左侧的移动条目内容
工具,调整地图的显示范围(比例尺)和位置。
步骤三:添加背景纹理图片
- 在左侧工具栏,点击
添加图片
按钮。 - 在画布上拖拽出一个矩形,使其完全覆盖您的地图区域,或者整个页面。
- 在右侧的
项目属性
面板中,找到栅格图像源
,点击...
按钮,选择您已准备好的纹理图片。- 此时,图片会暂时遮挡住下方的地图。
步骤四:调整图层顺序
- 在右侧面板区域,切换到
条目
选项卡(通常在项目属性
旁边)。 - 在条目列表中,将“图片”图层拖拽至“地图”图层的下方。
- 操作完成后,地图将重新显示在纹理图片之上。
步骤五:设置混合模式(关键步骤)
在画布或
条目
面板中,重新选中“地图”图层。切换回右侧的
项目属性
面板,向下滑动找到并展开渲染
部分。勾选
渲染
选项。找到
混合模式
下拉菜单,将其默认的正常
模式更改为正片叠底 (Multiply)
。效果说明:
正片叠底
模式会将上层(地图)的颜色与下层(纹理)的颜色相乘,使地图的色彩融入纸张纹理中,深色更深,浅色区域则透出纸张的底色,从而完美实现“印在旧纸上”的效果。观察画布中的效果,您可以尝试其他混合模式(如
叠加 (Overlay)
、柔光 (Soft Light)
)以获得不同的艺术风格。
5. 进阶技巧与补充说明
复古色带创建:
- 在 QGIS 主窗口中,为您的数据图层(尤其是高程、人口密度等)的符号系统选择或创建低饱和度、偏黄/褐色的色带(如 Sepia 色系),以增强整体历史感。
符号系统优化:
- 面状要素: 可使用
形状渐变填充 (Shapeburst Fill)
,设置由边缘向中心颜色变浅的效果,模拟墨水浸染感。 - 线状要素: 避免使用过于鲜艳的颜色,选择深褐色、炭灰色等。
- 标注字体: 选择带有衬线 (Serif) 的复古字体(如 Garamond, Palatino)或手写风格字体。
- 面状要素: 可使用
最终导出:
- 完成所有布局调整后,通过布局菜单中的
布局
>导出为图片...
或导出为 PDF...
,即可获得带有复古效果的最终地图成品。
- 完成所有布局调整后,通过布局菜单中的
工作手册:QGIS图层名称批量处理
目标:
本手册旨在提供清晰的指导,说明如何在QGIS中高效地移除所有图层名称中特定的前缀(例如 _navigation_points
)。这对于保持项目图层列表的整洁和标准化非常有帮助。
适用场景:
当您的QGIS项目中包含大量带有相同、非必要前缀的图层时,手动逐一修改既耗时又容易出错。本手册将介绍几种方法,以适应不同的需求和技能水平。
方法一:使用PyQGIS脚本(推荐,适用于批量处理)
此方法最为高效,尤其适用于处理大量图层。通过在QGIS内置的Python控制台中运行一段简单的脚本,可以瞬间完成所有图层的重命名工作。
操作步骤:
打开Python控制台:
- 在QGIS的顶部菜单栏中,找到并点击 “插件” (Plugins) -> “Python控制台” (Python Console)。
准备并运行脚本:
- 将以下代码复制并粘贴到Python控制台中。
# 定义要移除的图层名前缀 prefix_to_remove = "_navigation_points" # 遍历当前项目中的所有图层 for layer in QgsProject.instance().mapLayers().values(): layer_name = layer.name() # 检查图层名称是否包含指定前缀 if prefix_to_remove in layer_name: # 创建新的图层名称,移除前缀 new_name = layer_name.replace(prefix_to_remove, "") # 设置图层的新名称 layer.setName(new_name) print("图层名称批量处理完成!")
执行脚本:
- 在控制台中按下 回车键 或点击 “运行脚本” 按钮。
- 脚本将自动查找并重命名所有符合条件的图层。
优点:
- 自动化: 一次性处理所有图层,无需人工干预。
- 速度快: 即使有数百个图层,也能在几秒钟内完成。
- 可重复性: 脚本可以保存,以便在其他项目中重复使用。
方法二:手动重命名图层(适用于少量图层)
如果项目中只有几个图层需要修改,手动重命名是最直接的方法。
操作步骤:
定位图层:
- 在QGIS界面的左侧找到 “图层” (Layers) 面板。
重命名图层:
- 在需要修改的图层上 右键单击。
- 从弹出的菜单中选择 “重命名图层” (Rename Layer)。
- 在可编辑的名称框中,手动删除
_navigation_points
前缀。 - 按下 回车键 确认修改。
重复操作:
- 对其余需要修改的图层重复以上步骤。
优点:
- 直观简单: 无需任何编码知识,操作直接明了。
- 无需插件: QGIS原生功能,无需安装额外组件。
方法三:使用“Layer Name Replacer”插件(适用于需要更复杂规则的用户)
对于需要根据特定规则(如使用正则表达式)进行更复杂批量重命名的用户,可以安装并使用专门的插件。
操作步骤:
安装插件:
- 在QGIS菜单栏中,选择 “插件” (Plugins) -> “管理并安装插件” (Manage and Install Plugins)。
- 在插件管理器中,搜索
Layer Name Replacer
。 - 选中该插件并点击 “安装插件” (Install Plugin)。
使用插件:
- 安装成功后,通常可以在 “插件” (Plugins) 菜单中找到新安装的插件。
- 打开插件界面,通常会有“查找”和“替换为”的输入框。
- 在“查找”框中输入
_navigation_points
。 - 将“替换为”框留空。
- 执行替换操作。
优点:
- 图形化界面: 提供用户友好的界面来进行批量查找和替换。
- 功能更强: 通常支持正则表达式等高级匹配规则。
总结与建议
- 日常批量处理: 强烈推荐学习并使用 方法一 (PyQGIS脚本),它是处理此类任务最专业、最高效的方式。
- 临时少量修改: 当只需修改一两个图层时,方法二 (手动重命名) 最为便捷。
- 复杂重命名需求: 如果您经常需要进行复杂的、基于规则的图层重命名,方法三 (插件) 会是一个很好的补充工具。
工作手册:在 QGIS 打印布局中创建只包含特定图层的图例
目标: 在地图排版时,创建一个简洁、清晰的图例,该图例仅显示一个或少数几个关键图层,而不是自动显示地图中的所有图层。
适用场景: 当地图项目中的图层数量非常多,但出图时只需要重点突出显示某个或某几个要素的图例时,例如仅显示规划用地类型的图例,而忽略所有底图图层。
核心原则: 先在主窗口中设定好期望的图例样式,然后在打印布局中将其“锁定”,使其不再随地图内容的变化而自动更新。
方法一:筛选并锁定法(推荐,最高效)
此方法通过预先筛选图层来快速生成目标图例,是处理复杂地图项目的最佳实践。
操作步骤:
准备工作:在 QGIS 主窗口筛选图层
- 返回 QGIS 的主地图界面(非“打印布局”界面)。
- 在左侧的“图层”面板中,仅勾选您希望最终出现在图例中的那个(或那几个)图层。
将所有其他不需要在图例中显示的图层全部取消勾选,使它们暂时在地图上不可见。
(示意图占位符)
配置图例:在打印布局中同步内容
- 切换到您的“打印布局”窗口。
- 如果尚未添加图例,请通过菜单栏
添加项目
->添加图例
来创建一个图例。 - 选中该图例,在右侧的“项目属性”面板中,找到“主要属性”部分,并确保勾选了 “只显示链接地图内的项目” 选项。
- 此时,图例将自动刷新,仅显示您在步骤 1 中勾选的图层。
关键步骤:锁定图例内容
- 在确认图例内容正确无误后,找到并取消勾选“自动更新”复选框。
一旦取消勾选,图例内容将被“冻结”,不再随主窗口图层或地图范围的变化而改变。这是实现最终效果的核心操作。
(示意图占位符)
收尾工作:恢复地图显示
- 再次返回 QGIS 主窗口的“图层”面板。
- 将之前取消勾选的底图、标注等其他图层重新勾选,让它们在地图上正常显示。
- 此时,打印布局中的地图画布会显示所有必要的图层,而图例则保持不变,完美地达成了我们的目标。
优势总结:
- 高效: 避免了在图例属性中手动删除大量项目,尤其在图层超过几十个时优势巨大。
- 直观: 所见即所得,通过控制图层可见性来直接控制图例内容。
- 不易出错: 操作流程清晰,不易遗漏或误删。
方法二:手动编辑法(次选方案)
此方法适用于图层数量不多,或者图例已经添加并取消了“自动更新”的场景。
操作步骤:
添加图例并禁用自动更新
- 在打印布局中,添加一个标准图例。默认情况下,它会包含所有图层。
- 选中图例,在“项目属性”面板中,立即取消勾选“自动更新”。
批量选择并移除项目
- 在“图例项目”下方的列表中,您可以看到所有图层。
- 按住
Ctrl
键,用鼠标逐个点选所有您不想显示的图层。 - 如果不想显示的图层是连续排列的,可以先单击第一个,然后按住
Shift
键再单击最后一个,以选中一个范围内的所有图层。 - 点击列表下方的 “移除所选项目” 按钮(红色减号图标
➖
),即可将它们一次性从图例中删除。
完成编辑
- 重复此过程,直到图例中只剩下您需要的图层。
专业技巧与后续调整
在通过上述任一方法锁定图例后(即取消“自动更新”后),您还可以进行更多精细化调整:
- 重命名项目: 双击图例中的任意图层名称,可以直接修改其在图例中的显示文本,而不会影响图层本身的名称。
- 调整顺序: 选中某个项目,使用旁边的上下箭头按钮
🔼
🔽
来自由调整其在图例中的显示顺序。 - 修改样式: 在“符号”和“字体和文本格式”部分,可以进一步自定义图例的符号大小、字体、颜色和间距等。
QGIS操作手册:管理图层要素计数显示
1. 概述
在QGIS的图层面板中,默认情况下,每个矢量图层名称后面会带有一个括号和数字(如 [123]
),这代表该图层当前已加载的要素数量。虽然此功能在数据概览时很有用,但在图层较多或项目追求简洁美观时,我们可能需要关闭它。
本手册旨在指导用户如何关闭现有图层的要素计数,以及如何设置QGIS以使新添加的图层默认不显示该计数。
2. 操作指南
2.1. 关闭单个或多个现有图层的要素计数
此方法适用于项目中已经加载并显示了要素计数的图层。
操作步骤:
定位图层:在QGIS主界面左侧的“图层”面板中,找到需要操作的图层。
选择图层:
- 单个图层:直接在该图层上点击鼠标右键。
- 多个图层:按住键盘上的
Ctrl
键 (Windows/Linux) 或Cmd
键 (macOS),然后用鼠标左键逐个点击所有目标图层,将它们全部选中。
关闭计数:在任何一个被选中的图层上点击鼠标右键,从弹出的上下文菜单中选择 “隐藏要素计数” (Hide Feature Count)。
![图片:一个右键菜单的示意图,突出显示“隐藏要素计数”选项]
效果:所有选定图层名称后面的要素计数将立即消失,使图层列表看起来更整洁。
2.2. 全局设置:禁止为新图层自动显示要素计数
此项为一次性设置。设置后,未来所有添加到QGIS项目中的新图层将默认不显示要素计数,无需再手动关闭。这不会影响项目中已有的图层。
操作步骤:
打开选项菜单:从QGIS顶部菜单栏中选择 “设置” (Settings),然后点击 “选项...” (Options...)。
导航至数据源:在弹出的“选项”对话框中,从左侧的菜单列表中选择 “数据源” (Data Sources) 选项卡。
修改设置:在此面板中,找到名为 “要素源处理” (Feature sources handling) 的区域。
取消勾选:找到 “为新添加的图层显示要素计数” (Show feature count for newly added layers) 选项,并确保其前面的复选框是未勾选状态。
![图片:QGIS选项对话框的数据源面板截图,并用红色方框圈出“为新添加的图层显示要素计数”的复选框]
- 保存设置:点击对话框右下角的“确定”按钮保存更改。
3. 注意事项
- 设置的适用范围:全局设置仅对新添加的图层有效。对于已经存在于项目中的图层,必须使用2.1节中的手动方法进行关闭。
- 重新显示计数:如果需要再次查看某个图层的要素数量,只需在该图层上右键单击,然后选择 “显示要素计数” (Show Feature Count) 即可。
- 版本差异:本指南适用于QGIS 3.x系列版本。菜单项的名称和位置在不同版本中可能略有差异,但功能逻辑基本一致。
QGIS工作空间迁移与同步标准作业手册
引言
为确保QGIS项目在不同设备间的无缝流转与协同工作,以及保持个人工作环境的一致性,特制定本标准作业手册。本手册旨在为团队成员提供清晰、标准的QGIS项目与配置迁移流程。
第一部分:QGIS项目迁移手册 (A电脑 → B电脑)
目标:将一个包含散乱数据文件的QGIS项目(.qgz
)从A电脑完整迁移至B电脑,并确保所有图层均可正常加载。
核心原则:建立“项目文件夹”概念,采用相对路径进行数据管理,实现项目的自包含与高可移植性。
推荐方法:标准项目结构与相对路径法
此方法为最稳定、最可靠的官方推荐实践,无需依赖任何第三方插件。
第一步:在源电脑(A)创建标准项目结构
- 创建主文件夹:为您的项目创建一个总文件夹,例如
“XX项目-地形分析”
。 - 创建数据子文件夹:在主文件夹内,创建一个名为
data
(或“数据”) 的子文件夹。 - 汇总数据:将当前QGIS项目中使用的所有数据文件(如
.shp
相关文件、.tif
、.gpkg
、.xlsx
等)全部复制并粘贴到新建的data
子文件夹中。
第二步:在源电脑(A)修复并设置项目
- 打开QGIS项目:打开您的
.qgz
项目文件。此时图层会因数据源移动而显示为不可用(图层名前有 ⚠️ 图标)。 - 修复数据源:逐一双击不可用的图层,在弹出的窗口中重新指定其数据源,将其链接到
data
文件夹内对应的文件。 - 设置相对路径:
- 在QGIS菜单栏,选择
项目
->属性...
。 - 在
常规
选项卡中,找到保存路径
选项。 - 将其值从“绝对”修改为
相对
。
- 在QGIS菜单栏,选择
- 保存项目文件:
- 点击
文件
->另存为...
。 - 将项目文件(
.qgz
)保存到第一步创建的主文件夹根目录下,即与data
文件夹并列。
- 点击
第三步:迁移与验证
- 迁移:将整个项目主文件夹(例如
“XX项目-地形分析”
)通过U盘、网络或云盘完整地复制到目标电脑(B)的任意位置。 - 验证:在B电脑上,直接双击主文件夹内的
.qgz
文件。QGIS应能自动根据相对位置找到所有数据,项目将完美加载。
备选方法:自动化打包插件
若项目文件极度散乱,可使用插件进行自动打包。
- 适用插件:
Project Packager
或QPackageQGZ
。 - 操作简述:在插件市场安装并启用插件后,按照插件界面的指引,选择一个空文件夹作为输出目录,插件会自动完成数据汇总和项目文件重定向的工作。
- 注意:插件可能存在版本兼容性问题,不如手动设置相对路径法稳定。
第二部分:QGIS软件配置同步手册 (A电脑 → B电脑)
目标:将A电脑上QGIS软件的全部个性化设置(插件、界面布局、工具栏、快捷键、符号库等)同步到B电脑,实现一致的工作体验。
核心概念:QGIS的所有配置都储存在一个名为 “用户配置文件” (User Profile) 的文件夹中。我们只需迁移此文件夹即可。
第一步:在源电脑(A)导出配置文件
- 定位配置文件:
- 在A电脑打开QGIS。
- 点击菜单栏
设置
->用户配置文件
->打开当前用户配置文件夹
。 - 系统将自动打开一个文件夹,通常名为
default
。
- 复制配置文件:返回上一级目录(
profiles
目录),将整个default
文件夹(或您自定义名称的配置文件文件夹)完整复制到U盘或网络位置。
第二步:在目标电脑(B)导入配置文件
- 准备目标环境:
- 确保B电脑已安装与A电脑版本相近的QGIS。
- 在B电脑上至少运行一次QGIS,以生成初始的配置文件目录。
- 定位目标位置:用同样的方法(
设置
->用户配置文件
->打开当前用户配置文件夹
)在B电脑上找到profiles
目录。 - 备份并替换:
- (建议) 将B电脑上原有的
default
文件夹重命名为default_backup
以作备份。 - 将从A电脑复制过来的
default
文件夹粘贴到B电脑的profiles
目录下。
- (建议) 将B电脑上原有的
第三步:验证配置
- 重启QGIS:关闭B电脑上所有QGIS窗口。
- 启动QGIS:重新打开QGIS。此时,您会发现软件的插件、界面布局、工具栏等所有设置均已和A电脑同步。
附注:重要注意事项
- 版本兼容性:在同步配置文件时,请尽量确保两台电脑的QGIS主版本号一致(例如,都是3.34.x版本),以避免因版本差异过大导致配置出错。
- 项目与配置的区别:请务必区分项目文件(
.qgz
+ 数据)和软件配置文件。前者关乎“你做的地图内容”,后者关乎“你用的软件环境”。 - 定期备份:建议定期备份您的用户配置文件,以防意外导致设置丢失。