资讯动态

QGIS入门教程:数据源、数据格式、标注与符号化全流程

发布时间:2026/10/1 17:30:09 来源:尧图企业网站定制
1. 从一份打不开的shp说起Qgis到底该从哪儿下手我刚开始带新人的时候最常听到的一句抱怨是哥这数据我打不开。拿到一个压缩包里面有shp、有dbf、有prj甚至还有几个不知道干什么用的xml双击那个shp要么弹一堆乱码要么干脆什么都不显示。这时候我一般不会直接告诉他点哪个按钮而是先问一句你知道自己手里这份数据是什么格式吗Qgis这款工具入门阶段最大的门槛从来不是软件本身有多难而是数据源、数据格式、标注、符号化这四个词背后代表的四件事很多人是混着理解、混着操作的结果就是每一步都在试错。我把这套流程拆开讲是因为这四个环节其实是递进关系先搞清楚数据从哪来数据源、再搞清楚数据长什么样数据格式、接着让它看得懂标注最后让它看得顺眼符号化。顺序错了后面全是返工。这篇文章主要面向刚接触Qgis、手里有真实数据但不知道从哪动手的朋友。我会用一个完整的小案例贯穿假设你拿到一份某区域的县界矢量数据和一份卫星影像目标是把它做成一张能发给同事看的专题图。过程中涉及的所有操作、参数、坑点我都会讲清楚。Qgis使用教程网上一抓一大把但大多数只告诉你点这里、点那里不讲为什么我尽量把为什么补上。先说清楚一件事Qgis是开源免费的桌面地理信息处理软件跨平台Windows、macOS、Linux都能跑。它的版本迭代很快长期支持版LTR相对稳定我建议新手直接装LTR版本不要追最新版因为很多插件对新版的支持会滞后几个月。装完之后界面是英文的也别慌设置里可以切成简体中文这个后面细说。安装包在官网就能下到选对应操作系统的安装程序一路下一步即可中间那个下载示例数据集的选项建议勾上初学阶段拿来练手很合适。2. 数据源这件事Qgis能读的东西比你想象的多2.1 先分清数据源和数据格式是两个概念很多人把这两个词当同义词用这是个根子上的误解。数据源指的是数据的来源位置和访问方式比如它是一个本地文件、一个数据库、还是一个网络地图服务数据格式指的是数据在磁盘上或传输中的组织方式比如shp、GeoJSON、GeoPackage、GeoTIFF。同一个数据源可以有不同的格式同一种格式也可以来自不同的数据源。举个例子你就明白了。你从某部门拿到的县级行政区划数据可能是一个shp文件夹也可能是一个GeoPackage文件后缀.gpkg还有可能是对方直接给你一个数据库连接参数。这三种情况在Qgis里的操作路径完全不同shp是添加矢量图层GeoPackage同样是添加矢量图层但选中文件后还要选具体图层数据库则要走添加数据库图层的流程。所以第一步永远是问清楚这东西是怎么存、怎么给我的。我在实战里总结了一个判断顺序你可以照着走看到文件夹里有一堆同名不同后缀的文件.shp/.shx/.dbf/.prj这是Shapefile属于矢量格式注意这几个文件必须放在一起少一个都打不开看到单个文件后缀是.gpkg这是GeoPackage一个文件里可以装多个图层和多个表是目前推荐的矢量存储格式看到后缀是.geojson或.json这是GeoJSON文本格式可读性好适合网页和轻量交换看到后缀是.tif或.tiff这是GeoTIFF属于栅格影像通常带地理坐标信息看到后缀是.csv但里面有经纬度列这是文本坐标数据需要按分隔文本图层的方式导入而不是直接当表格打开。2.2 矢量数据、栅格数据加进来的方式不一样Qgis把数据分成两大阵营矢量点、线、面和栅格像素网格。这两类在图层菜单下有不同的入口别试图用一个按钮全搞定。矢量数据的添加路径是图层 → 添加图层 → 添加矢量图层快捷键是CtrlShiftV。选中文件之后它会问你要不要指定坐标系如果文件自带坐标系信息比如shp的.prj文件它会自动识别你直接确认就行如果没有那就得手动选这一步非常关键选错了后面的坐标全是歪的。栅格数据的添加路径是图层 → 添加图层 → 添加栅格图层快捷键CtrlShiftR。像我们案例里的卫星影像就属于这一类。栅格数据的坐标系同样重要而且有个常见坑有些影像的坐标信息写在附属的tfw文件或者xml里如果只把.tif拷出来丢给Qgis它会显示未知坐标系你得把附属文件一起带上。数据库和服务类型的图层统一在图层 → 添加图层菜单里能找到对应入口比如PostGIS数据库、WMS/WMTS网络地图服务等。这部分新手可以先跳过等有实际需求再研究。2.3 踩坑记录那个图层加载了但空白的夜晚我印象很深的一次有个同事发来一个shp我拖进去之后图层面板里确实多了一行但地图窗口一片空白。当时第一反应是软件卡了重启、重装、换电脑都没用。后来才发现问题出在坐标系上这份数据的坐标数值是经纬度大概在100到120之间但系统默认把项目坐标系设成了某种投影坐标系数值级别在几十万到几百万Qgis按项目坐标系去解释那份经纬度数据结果数据被放到了地图外很远的地方自然什么都看不到。排查这类问题的完整链路是这样的先右键图层打开属性看信息里显示的坐标系是什么再看地图窗口底部状态栏显示的当前项目坐标系两者不一致的时候就会出问题。解决方式有两种一种是临时把项目坐标系改成和数据一致的另一种是保持项目坐标系不变给图层做一次坐标转换右键图层 → 导出 → 另存为在对话框里指定目标坐标系。提示判断一个图层是不是跑偏了有个特别简单的方法——全选所有图层后按键盘上的快捷键缩放到图层范围如果缩放到某个图层时地图跑到了世界地图的角落基本就是坐标系问题不用怀疑别的。还有一种空白是另一种原因造成的图层本身有数据但被别的图层完全盖住了。这时候图层面板的顺序就是关键上面的图层会覆盖下面的图层把可疑图层往上层拖一下就好。3. 数据格式转换什么时候需要转怎么转才不丢东西3.1 转换的动机不是为了转而是为了解决具体问题我见过不少新手一上来就把手里的shp转成GeoJSON问他为什么答听说GeoJSON更好。这是典型的没有目标的转换。格式转换只在有明确需求时才做常见的真实需求有这么几类第一类是字段名长度限制。Shapefile格式的字段名最长只能10个字符中文属性字段转过去会变成乱码或者被截断如果你要做属性统计就得换成GeoPackage或者GeoJSON这类对字段名友好的格式。第二类是文件体积和传输shp是一堆文件打包发给别人容易漏GeoPackage只有一个文件传输和归档都更省事。第三类是字段类型限制shp的文本字段有长度上限超过254个字符的内容会被截断这种数据必须换格式存。第四类是跨软件兼容某些网页地图或前端库只认GeoJSON。所以每次转换前先问自己一句我转完之后要拿它干什么答案会决定你选哪种目标格式。3.2 用Qgis做转换的标准操作流程转换功能藏在导出里不是在保存里这是新手最常找错的地方。右键图层 → 导出 → 要素另存为矢量或者另存为栅格弹出的对话框是整个转换流程的核心。对话框里有几个字段必须认真填格式下拉选择目标格式矢量可选GeoPackage、GeoJSON、ESRI Shapefile等栅格可选GeoTIFF、PNG等文件名点右边的浏览按钮选路径注意GeoPackage要指定一个.gpkg文件如果这个文件已存在Qgis会把图层追加进去而不是覆盖这点很实用图层名GeoPackage和数据库类格式需要单独填图层名shp和GeoJSON不需要坐标系默认是图层坐标系如果要换坐标系就在这里选目标CRS编码这个字段容易被忽略中文数据建议显式指定UTF-8否则属性表里的中文可能是问号选择的要素如果图层里只选中了一部分要素勾选仅保存选中的要素可以只导出选中部分。填完之后点确定会看到右下角有个进度条完成后新图层会直接加载到图层面板里。我一般会顺手把原图层关掉对比一下新旧图层的位置、属性是否一致。3.3 转换后必须做的三项验证转换完不检查等于白转。我固定会做三件事属性表比对打开新旧两个图层的属性表看字段数量和行数是否一致重点看中文字段有没有变成乱码。有一次我把shp转GeoPackage发现某个字段的数值被四舍五入了一位小数原因是原字段类型是文本但内容看起来像数字转换时被自动推断成了整数这种问题不看属性表根本发现不了。几何比对把两个图层叠在一起把其中一个的填充色改成半透明或者干脆关掉填充只留边框肉眼检查边界是否重合。如果出现整体偏移就是坐标转换环节出了问题。范围比对右键图层看信息面板里的要素数量和范围坐标两个图层的范围值应该完全一样差一点都不行。目标格式适用场景字段名限制单文件备注Shapefile传统软件兼容10字符否一组文件字段易截断不推荐新项目用GeoPackage通用存储、多图层无严格限制是当前推荐首选GeoJSON网页、轻量交换无严格限制是体积偏大坐标精度注意CSV表格分析无严格限制是需要正确的经纬度列4. 标注让地图自己开口说话4.1 标注的本质是用属性字段驱动显示很多人第一次接触标注以为是要在图上画字其实Qgis的标注机制完全不同——它是让要素的属性字段内容自动显示在要素旁边。你不需要一个个去写只要指定用哪个字段作为标注内容所有要素就会批量显示出来而且要素移动了标注跟着走。在图层属性的标注选项卡里把类型从无标注改成单一标注然后在下拉框里选择要显示的字段比如县界数据就选名称字段标注立刻出现。这是最快的方式适合字段单一的情况。但如果需求复杂一点比如你想显示某县人口12万这种拼接形式就得用表达式。点字段下拉框旁边的那个小图标进入表达式编辑器可以用字符串拼接函数把多个字段组合起来格式大概是字段1 || 人口 || 字段2 || 万。表达式是Qgis标注功能里最有价值的部分值得花时间熟悉。4.2 中文标注乱码一个几乎人人都会遇到的坑我第一次做中文标注的时候地图上显示的全是一个个方块。这不是Qgis的bug而是字体问题。解决办法是在标注选项卡的文本格式里把字体换成支持中文的字体比如系统里的黑体、宋体、微软雅黑。默认字体有些是西文字体没有中文字形所以显示不出来。还有个更隐蔽的情况字体换了但还是有部分字符显示不对那可能是数据本身的编码问题。前面转换格式时如果没指定UTF-8属性表里的中文可能已经损坏了这种情况下要先回去修数据标注环节怎么调都没用。注意换了中文字体之后建议顺便检查一下字体大小和颜色的默认值很多中文字体在小字号下笔画会糊在一起地图缩小时完全看不清适当调大一号会好很多。4.3 标注的避让、优先级和缩小时隐藏标注一多就会互相压叠密密麻麻什么都看不清。Qgis提供了几个机制来处理这件事。避让在标注选项卡的放置和渲染部分可以设置标注与要素、标注与标注之间是否允许重叠。默认允许重叠改成不允许之后Qgis会尝试把标注挪开挪不开的就自动隐藏。这个设置能大幅提升可读性但也要注意计算量要素特别多的时候会让渲染变慢。优先级通过表达式或字段控制重要要素的标注优先显示。原理是给每个要素一个优先级数值Qgis在空间不足时优先保留高优先级的标注。比如省级名称的优先级高于县级缩放状态下省名永远保留。按比例尺控制显示是最实用的技巧。在标注选项卡的渲染里可以设一个最小比例尺比如设定小于1:50000时才显示意思就是缩得很近才显示标注缩远了自动隐藏。这样同一份数据在全局视图和局部视图下都能保持清爽。我做一个大范围的县界图时就是靠这个把几百个标注分层控制的。5. 符号化同一份数据做出完全不同的观感5.1 从单一符号到分类符号的跨越刚加进来的矢量图层默认是单一颜色所有要素长得一模一样。符号化就是给要素按规则分配不同的样式。Qgis的符号化选项在图层属性的符号化选项卡里默认是单一符号把所有要素画成一种样子。切换到分类可以按某个属性字段的值分组着色。比如县界数据有所属地市字段按这个字段分类每个地市一套颜色一眼就能看出行政区划归属。操作步骤是符号化类型选分类值字段选所属地市点分类按钮让它自动读取所有唯一值然后选一个配色方案点应用。分类模式有个细节要注意颜色数量由唯一值数量决定字段里如果有几十个唯一值颜色会多到看不出区别这时候要么换用渐变色方案要么合并成几个大类再分类。我见过有人按村名字段分类结果生成了几百种颜色图上一片花完全没有表达力。5.2 分级符号数值字段的正确打开方式如果字段是数值型的比如人口、面积用分类就不合适了应该用分级。分级的核心是把连续的数值切成几个区间每个区间一个颜色或一个符号大小。Qgis提供几种分级模式我常用的两种等间距数值范围平均切成若干份。优点是简单直观缺点是如果数据分布不均会出现某些区间挤满要素、某些区间空无一物的情况。分位数每个区间的要素数量尽量相等。优点是每个级别都有内容视觉上分布匀称缺点是不了解统计背景的人容易误读区间含义。选哪种取决于你的表达目的。要突出极端值就用等间距要让每个级别都有代表性就用分位数。模式选好后设置级别数一般5到7级比较合适点分类生成区间再选配色。配色方案建议选单色渐变而不是彩虹色彩虹色的中间色容易让人误解为特殊含义单色深浅渐变最符合人的数值直觉。5.3 点、线、面的符号细节调整面的符号可以调填充色、填充样式实心、斜线、网格、轮廓线颜色和宽度。轮廓宽度别设太粗超过1毫米在大范围图上会让相邻区域糊成一片。轮廓颜色建议比填充色深一到两个色阶形成层次但不割裂。线的符号核心是宽度和线型。主干道用粗实线次要道路用细实线或虚线这是基本约定。Qgis里可以给线加偏移效果做出双线道路的感觉也可以用符号图层叠加比如底层粗浅色加顶层细深色做出有立体感的道路。点的符号除了圆形Qgis内置了大量形状还支持用svg图标。做POI点位图时用不同的svg图标医院、学校、加油站比用不同颜色的圆点传达信息更直接。图标可以在符号选择器里从svg目录里挑也可以自己导入外部的svg文件。6. 从零到成图一个完整流程串起来6.1 操作顺序为什么不能乱把前面几节串起来一个合理的顺序是先添加数据源 → 确认坐标系一致 → 需要的话转换格式 → 设置标注 → 做符号化 → 最后出图。这个顺序有它的道理标注和符号化都依赖属性字段如果格式转换在标注之后做字段名可能变化前面设好的标注表达式全部失效得重来。我踩过一次这个坑辛辛苦苦把标注表达式写好了结果发现原数据是shp字段名被截断成了拼音缩写为了让中文正常显示不得不转成GeoPackage转完之后字段名变了标注全丢。从那以后我的习惯是先把格式定下来再动标注和符号化。6.2 项目文件、样式保存与出图前的检查Qgis的项目文件后缀是.qgz它记录的是图层引用了哪些文件、用了什么样式、项目坐标系是什么不包含数据本身。所以项目文件拷给别人时数据文件也要一起给并且相对路径要保持一致否则对方打开会看到一堆红叉。我习惯把项目和所有数据放在同一个文件夹里用相对路径引用这样整个文件夹拷走就能直接打开。样式可以单独保存和加载。在图层属性对话框底部有样式菜单可以保存成.qml文件或者存入数据库风格库下次同样的数据直接加载样式不用重设。做批量出图的时候这个功能能省下大量时间。出图前我会固定检查这几项坐标系是否正确、标注是否遮挡、配色在灰度打印下是否还能区分重要很多人忽略了黑白打印场景、图例是否完整、比例尺和指北针是否加上。Qgis的新建打印布局功能就是干这个的把地图、图例、比例尺拖进布局导出成PDF或图片。6.3 几个我用了很多年才形成习惯的小技巧第一个养成随手保存项目的习惯Qgis偶尔会因为插件崩溃未保存的工作可能丢失。第二个图层命名要规范。默认图层名往往是文件名一堆数字和英文缩写图层面板里找起来很痛苦。右键重命名改成县界_2024这种一眼能懂的名字。第三个善用过滤功能。图层属性里的过滤条件可以直接写表达式筛选要素比每次都做一遍导出要快得多而且不影响原数据。第四个遇到插件装不上或者界面语言混乱先看版本。Qgis的插件生态在不同版本间差异很大LTR版本的插件最稳定。装插件在插件 → 管理并安装插件里操作装完记得在插件菜单里启用。7. 新手最容易卡住的几个问题7.1 数据加载了但不显示的三种典型原因这个问题的排查顺序我前面提过一次这里再系统化一遍因为它出现频率太高了。第一种是坐标系不匹配数据和项目的坐标系级别差太远要素被放到了视图之外。解决方式是统一坐标系或者对图层做坐标转换。第二种是图层被覆盖特别是面图层叠在一起的时候上层不透明就会把下层完全遮住。解决方式是调整图层顺序或者降低上层透明度。第三种是数据本身有问题比如几何为空、坐标是无效值。可以在属性表里看要素数量如果要素数量正常但一个都看不到可以尝试缩放到图层来判断是不是几何损坏。几何损坏的数据可以用处理工具箱里的修复几何功能处理。7.2 中文乱码的两种来源要分清一种是显示乱码数据本身是好的只是标注字体不支持中文换字体即可。另一种是数据乱码转换格式时编码没选对属性表里本身就是问号这时候换什么字体都没用必须回到数据源头重新转换编码指定UTF-8。判断方法很简单打开属性表看字段内容如果属性表里是好的但地图上是乱的就是字体问题如果属性表里就是乱的就是数据问题。这个判断顺序能帮你省下大量瞎折腾的时间。7.3 属性表编辑后地图没更新Qgis的属性表编辑需要先进入编辑模式属性表工具栏上的铅笔图标改完之后要点击保存软盘图标才会真正写入。改完没保存地图上的标注自然不会变而且切换图层后改动还会丢失。这个设计是为了防止误操作刚上手的人经常忘记点保存。7.4 影像加载慢或者显示成灰白栅格影像加载慢通常是分辨率太高或者文件太大。可以在图层属性的金字塔选项卡里构建金字塔构建后缩放浏览会快很多。显示成灰白一般是波段拉伸设置的问题在符号化里调整最小最大值或者选一个合适的拉伸方式影像的对比度就会回来。这个现象在遥感影像上特别常见原始数据是16位的高动态范围直接显示会灰蒙蒙一片拉伸之后细节才出得来。说到底Qgis的入门过程就是把数据源、格式、标注、符号化这四件事各自走通一遍然后组合起来用。我个人的体会是别怕出错坐标系歪了、标注糊了、颜色丑了改就是了每修一次对工具的理解就深一层。真正卡人的从来不是软件功能本身而是遇到问题时不知道从哪个环节开始查。把上面这些排查顺序记在心里大部分问题你都能自己定位。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑