Python
Python · 脚本 · 数据分析
脚本、数据分析、爬虫和不少课程作业的默认语言。
正在打开工具详情…
开源地理信息桌面软件,看图层、做专题图。
要处理地图图层、做空间分析和出图。
只需要在网页上看一眼地图。
QGIS 是开源的地理信息系统桌面软件,做的是把图层叠在一起看、分析、出图。它能读 shapefile、GeoJSON、GeoPackage、PostGIS 数据库,也能连 WMS、WMTS、XYZ 瓦片服务;矢量与栅格图层、标注、符号化都在一个画布里完成,最后导出成图片或可直接打印的地图布局。日常用途从「把几个省的边界和点位叠起来看一眼」到「做缓冲分析、字段计算、地形剖面」都覆盖。
它与「在网页上看地图」是两回事。网页地图给你的是现成的底图和检索,QGIS 给你的是图层控制权:每个图层用什么符号、按哪个字段分级、标签放哪、坐标系怎么转,都能定。这也是它的门槛所在——上手前需要先接受一套概念:图层、要素、属性表、坐标系。坐标系尤其容易绊人:两个图层的 CRS 不一致时叠加会偏,报错却不明显,往往是图层对不上位置而不是数据坏了。
版本选择上,qgis.org 同时提供最新版与长期发布版(LTR)。生产环境与教学用 LTR 更稳,插件生态对 LTR 的支持也更及时;想试新功能再装最新版,两者可共存。插件是它的另一半能力:QuickMapServices 提供底图、Processing 把 GDAL 与 GRASS 的一堆工具包进图形界面,很多「QGIS 能做吗」的答案其实在插件里。
许可证是 GPL-2.0(仓库 COPYING 与 GitHub 检测一致),源码在 GitHub 的 qgis/QGIS,星标约 1.45 万,更新活跃。Windows、macOS、Linux 都有安装包。
上手步骤之外的具体做法:常见场景怎么配、命令怎么写、报错怎么处理。
从图层与坐标系的区别讲起,讲到投影 CRS 怎么选、栅格与矢量各自的坑,以及用 Processing 批处理与插件安装的实际流程。
QGIS 的核心心智模型:一个图层(Layer)= 一份数据 + 一套渲染样式。往项目里加数据不会改原文件,只是建立引用。
数据源分两类,工具栏上那两个图标就是它们:
| 矢量(Vector) | 栅格(Raster) | |
|---|---|---|
| 数据结构 | 几何 + 属性表 | 像素矩阵(像栅格) |
| 常见格式 | GeoJSON / Shapefile / GeoPackage | GeoTIFF / ECK / JPEG |
| 主要操作 | 按属性查询、拓扑分析 | 按像元分析、重采样 |
| 缩放表现 | 任意缩放不失真 | 放大后有像素块 |
工程上优先用 GeoPackage(.gpkg):它是 SQLite 数据库,一个文件里能存多个图层和字段,替代了 Shapefile 那个「一个图层一套文件」的麻烦。
QGIS 里有两个独立概念,混淆会导致所有东西偏移几公里:
按 Ctrl+Alt+T 打开「重新投影图层」工具做转换,必须选对目标 CRS。判断依据:做全球概览用 EPSG:4326(WGS84 经纬度),做局部量算用当地 UTM 带(如北京为 EPSG:32650,WGS84 / UTM zone 50N)。
经典事故:把 EPSG:4326 的数据当成 32650 用,
WGS84 / UTM下经纬度值会被当成米,图形直接飞到几千里之外。「图层看起来完全不对且离谱」时,先查 CRS,这是第一嫌疑人。
属性表(Attribute Table)里每一行是一个要素、每一列是一个字段。字段类型必须在建字段时定好:把数字字段存成文本,排序会按字典序排,导致 10 排在 2 前面。
多张表按共同字段合并用 Join attributes by location 或 Join attributes by field。连接后可把临时字段 Join field 设为空,避免污染原始数据。
Processing 工具箱是 QGIS 的自动化入口。菜单 Processing - Toolbox 打开,常用的几类:
Vector:裁剪 clip、缓冲区 buffer、重投影 reproject、融合 dissolveRaster:重采样 resample、按掩膜裁剪 clip by maskCRUD:从文本文件创建图层、按属性筛选GDAL:格式转换、栅格计算命令行等价物是 qgis_process,能写脚本流水线:
bash# 列出所有可用算法
qgis_process list
# ----
# 矢量裁剪:切出研究范围
qgis_process run native:clip --INPUT_ZONES=zones.shp --INPUT_OVERLAY=aoi.geojson --OUTPUT=clipped.gpkg
# ----
# 栅格按矢量边界裁剪
qgis_process run gdal:cliprasterbymasklayer --INPUT=dem.tif --MASK=boundary.gpkg --OUTPUT=dem_clip.tif插件在 插件 - 管理并安装插件 里装,二进制依赖(GDAL、GRASS)在 Windows 版是随包提供的,因此优先用官方安装包而不是自己编译,省掉一整类问题。
出图要区分两个概念:布局(Layout) 里放的是地图框、图例、指北针这些排版元素,和图层内容分开。静态出图流程是:新建布局 → 插入地图框 → 锁定图层与范围 → 插入图例/比例尺 → 导出为 PDF 或 SVG。手工拖地图框范围太慢时,可以在布局里绑定一个项目中的书签(Bookmark)来快速切换范围。
同一需求下可以先试这些,尤其是不想买商业许可的时候。
Python · 脚本 · 数据分析
脚本、数据分析、爬虫和不少课程作业的默认语言。