做GIS这行的人,十有八九都经历过“外业一时爽、内业火葬场”的循环:白天扛着设备在山里、在路上、在工地跑一整天,记录本上写满坐标、画满草图、贴满便签,晚上回到办公室对着一堆照片和纸质记录往里录,录到深夜发现某个点的坐标少了一位,第二天又得专门跑一趟补测。我最早做市政设施普查,三天外业的量录了五天,从那以后铁了心要动刀改造工作流。前后换了好几个方案,最终留下来的是QField这套QFIELD-GIS工具版组合。简单说,QField就是QGIS的移动版,专门跑在手机平板上,让你带着电脑上做好的工程去野外现场打点、拍照、填属性,回来一键同步回桌面端。这篇文章不整虚的,就说清楚这套工具到底怎么用、为什么值得用、有哪些坑必须躲,以及结合大家平时搜得最多的那些GIS操作场景,看看它能帮你省多少事。
1. 为什么野外数据采集一直是GIS链条里最耽误事的环节
1.1 传统外业方式的四宗罪
先说痛处。很多团队到今天还在用纸质记录本加相机的外业模式,这套模式看起来简单,实际上有一堆隐性成本。
第一,记录介质太脆弱。野外环境经常是风里来雨里去,纸质记录本被淋湿、字迹晕开是常事。哪怕天气好,手写出来的坐标数量一串十几个数字,抄错一位根本看不出来,等到内业录入时才发现,这时候人已经在几十公里外了。
第二,内外业割裂严重。现场看到的东西和电脑数据库里的要素不能及时对应。我在市政井盖普查时,一天跑两百个井盖,每个井盖要记位置、类型、井深、材质、照片编号。用纸质记录时,经常出现A点位的照片实际是在B点位拍的,回内业整理照片时只能靠回忆猜,猜错了就是数据事故。
第三,坐标记录错误率居高不下。手抄经纬度或平面坐标,一串数字只要有一位抄错,点位就可能偏出去好几十米甚至几百米。如果是夜间作业、蚊虫叮咬、赶进度的情况下,抄错坐标的概率还会成倍上升。
第四,照片与点位不关联。相机的照片文件默认名称就是IMG_20250101.jpg这种东西,和GIS点位没有任何对应关系。回内业要按点位一个一个重命名、归档,工作量非常大。
1.2 移动GIS工具选型:为什么最终是QField
为了解决这些问题,我陆续试过几条路。
专业手持GPS设备,比如佳明、华测、中海达这类终端,定位精度确实不错,但价格动辄几千上万,而且屏幕小、系统封闭,属性录入基本靠手写笔,做点线面编辑更是难受。这类设备适合测点放样,不适合做复杂的外业调查采集。
商业移动GIS平台,比如ArcGIS生态里的Field Maps、Survey123,功能很强,和ArcGIS桌面端无缝衔接。但问题在于部署成本:组织账号、订阅授权、环境配置,小团队或者个人项目很难吞得下,而且数据链路锁死在特定生态里。
自己开发安卓采集APP,也不是没想过。基于C#或者Java从零搭一套带地图、坐标转换、图层编辑、离线存储的采集工具,最少也得两三个月打底,后期还要维护升级,对于大多数做项目的人来说性价比太低了。
最后落到QField上,理由很朴素:团队内业本来就用QGIS,QField可以直接读取QGIS工程文件,不需要另起炉灶重建一套数据模型。手机装个免费应用就能用,且整个工具链开源免费,数据格式走GeoPackage,随时能用常规GIS软件打开。可以说,QField是我见过的把“内业准备”和“外业采集”衔接得最顺的开源方案。
下面是几个方案的对比,方便你参考:
| 方案 | 优势 | 劣势 |
|---|---|---|
| 专业手持RTK/终端 | 定位精度高,三防可靠 | 价格高,属性录入体验差,编辑功能弱 |
| ArcGIS Field Maps/Survey123 | 与ArcGIS生态无缝,功能成熟 | 组织账号和授权成本,部署链路重 |
| 自研采集APP | 完全定制 | 开发周期周起步,地图、坐标、同步全要自己调 |
| QField | 免费开源,直接读QGIS工程,手机即装即用 | 精度取决于设备,需先掌握QGIS基本操作 |
1.3 QField适合谁、不适合谁
适用场景我现在总结下来是这五类:
- 市政设施普查:井盖、路灯、摄像头、变电箱、消火栓这类固定设施的点位登记和属性采集。
- 自然资源调查:林班小班勾绘、地类图斑核实、巡护路线记录。
- 工程现场质检:施工巡检点位、质量检查记录、现场照片留痕。
- 水利设施巡护:水文站、水位站、泵站、灌区设施的年度巡查。
- 高校教学与技能大赛:用手机就能完整跑一轮GIS数据采集全流程,特别适合课程设计和竞赛。
不适合的场景也有,最典型的是需要厘米级高精度测绘的任务,手机内置GPS精度一般只能到3到10米,这种场景需要外接RTK设备才能勉强达标。另外,如果要做重型的三维场景分析、复杂空间分析,那还是老老实实回到QGIS或者GRASS这类桌面端处理,QField的角色是采集现场数据,不是替代桌面分析工具。
2. QField的运行机制:工程文件不是“导入”而是“跟着走”
2.1 一个工程文件走天下
这是QField和很多轻量化移动采集工具根本性的区别。绝大多数移动采集软件是“新开一套数据模型”,再想方设法把数据显示出来;QField则是直接把QGIS工程文件拿过来用。
你在电脑上建立好的图层顺序、配色方案、标注规则、符号大小、字段约束,同步到手机上之后几乎原样复现。我一开始也担心会不会手机上和电脑上渲染效果不一样,实际上QField底层用了和QGIS共通的渲染核心,地图画出来的效果和桌面端很接近。这个“所见即所得”的价值非常大:内业制定好的调查图例是什么样,外业看到的就是什么样,不会出现电脑里是红点、手机上变成蓝点的错位。
2.2 图层、样式、表单、图标是怎么一起打包的
要让QField在手机上还原桌面工程,靠的是QGIS里的QField Sync插件。
这个插件做的事情,简单说就是打包。打包时你可以指定哪些图层作为可编辑图层、哪些只作为只读的底图。可编辑图层的数据会被复制到一个本地的GeoPackage文件里,底图则可以根据需要生成离线的瓦片包。与此同时,工程文件里的符号、SVG图标、表单定义、字段约束这些内容也会被一并放进同一个文件夹。
最后你拿到的是一个完整的项目文件夹,结构类似:
- 工程文件(.qgs 或 .qgz)
- 数据文件(.gpkg,存放可编辑图层的数据)
- 图标符号文件夹(SVG文件)
- 离线地图包(mbtiles等格式,如果配置了)
把这个文件夹整个拷到手机的QField目录里,打开工程就能用。这个机制很大的一个好处是,整个文件夹可以当做一个独立的数据包来拷贝、备份、分发,不会出现漏掉某个样式文件的情况。
2.3 数据回程是“合并”而不是“重新录入”
外业采集完成后,最提心吊胆的一步就是数据怎么回到电脑里。QField给出的答案是合并回传。
具体流程是:外业结束,把设备里的项目文件夹拷贝回电脑;打开QGIS,启动QField Sync插件面板,点击合并;插件会自动识别这一趟新增、修改、删除了哪些要素,并把变更写回你原来在电脑上配置的数据源。这个数据源可以是GeoPackage、Shapefile,也可以是PostGIS数据库。
如果多人同时采集同一个区域,就可能出现同一个要素被两个人同时修改。合并时插件会给出冲突提示,你可以选择保留哪一个版本。我个人的建议是,如果数据源用的是Shapefile,合并前先复制一份备份,因为Shapefile本身没有事务机制,万一合并中断,数据更容易出问题。PostGIS在这方面就稳得多,多人协作场景我还是推荐直接连PostGIS。
3. 从QGIS准备到QField交付的完整操作流程
3.1 整理图层和字段:一个字段类型引发的连锁反应
很多人第一次用QField失败,不是软件不行,而是图层准备阶段就埋了雷。
先把待采集的图层在QGIS里整理好,确认几何类型正确:点、线、面各归各,不要用混合类型。然后逐个检查字段类型。QField里常见的字段类型是文本、整数、浮点数、日期时间,对应到GeoPackage里一般是TEXT、INTEGER、REAL、DATETIME。
实际操作中我见过最典型的坑是文本长度。你在QGIS里给一个字段定义长度为10,屏幕前觉得够用,但外业人员现场输入设备编码时多打了一位,QField会直接提示长度超限,要素保存失败。这提醒我们定义字段时要多想一步,宁愿长度放宽一点,也不要让外业现场卡壳。
另一个建议是,每个待采集图层都加一个自增ID或者GUID主键字段。这个字段在QGIS里设置默认值为uuid()表达式,这样每个新要素自动生成唯一标识,后续合并回传、多人协作都不容易撞车。
字段命名也要注意,尽量用英文字母和下划线,别用中文名或带空格的名字。我在一个项目里见过字段名叫“备注(现场填写)”,结果在移动端表单渲染和导出过程中出现各种转义问题,最后只能重新建字段再拷贝数据,教训深刻。
3.2 配置表单控件:让现场录入从“填表”变成“选答案”
外业人员最怕的不是走路多,而是面对一个空白的电子表单,不知道该填什么。QField表单的配置取决于你在QGIS图层属性里怎么设置。
打开图层属性,切换到“属性表单”标签页,可以拖拽设计布局,把字段分成基本信息区和可选信息区。更重要的是,要把能变成选择项的字段全部改成“选择”类型。
以摄像头普查为例,我在“朝向”字段上配置了下拉列表,选项是东、南、西、北、东南、东北、西南、西北;“是否带云台”字段用复选框;安装高度字段用数值范围控件;“现场照片”字段用附件控件。这样外业人员到现场只需要打一个点、拍几张照、点两个下拉框,全程不用敲键盘。这体验比纸质记录不知道高到哪里去了。
日期时间字段也有讲究。如果某个字段记录的是采集时间,最好在QGIS里设置默认值为now(),这样新要素创建时自动填入当前系统时间,外业人员不需要手动改,也避免了手表和手机时间不一致带来的误差。
3.3 同步工程到Android设备的实操步骤
下面是我的标准操作流程,照着做基本不会出问题。
- 在QGIS的插件管理器里搜索并安装“QField Sync”,装完后工具栏会出现对应的图标。
- 打开QField Sync面板,在图层列表里勾选需要同步的图层。
- 把不需要编辑、只用来参考背景的图层标记为只读底图层。
- 如果底图是网络地图服务,比如在线影像图,可以用插件自带的离线打包功能,提前把工作区范围内的瓦片缓存下来。
- 点击打包,选择保存位置,插件会生成一个完整项目文件夹。
- 把这个文件夹通过USB或局域网文件传输工具拷贝到手机的QField目录下。
- 打开手机上的QField应用,在欢迎页面选择打开项目,定位到拷贝过来的.qgs工程文件。
有几个细节必须在打包前确认。第一是坐标系,项目坐标系、图层坐标系和底图坐标系尽量统一,QField会在运行时做动态坐标转换,但如果参数不一致,点位偏移是肉眼可见的。第二是底图下载的缩放级别,不要贪多,尤其不要为了“看清楚”把18到22级影像全部打进去,一个区域轻松几GB,手机加载起来卡到怀疑人生。
3.4 野外现场采集的操作细节
到达现场后,打开QField上的定位,先看GPS状态和精度。开阔地带手机GPS精度一般能到3米内,如果旁边有高楼或者树木遮挡,精度立刻掉到十几米,这时候打点要特别小心,最好多等几秒让定位稳定下来再落点。
添加新要素是非常直接的:点击右上角的加号,选择当前GPS位置作为落点,也可以手动在地图上选位置。落点之后自动弹出属性表单,填完保存,图上立刻出现带样式的新要素。修改已有要素也一样,选中要素后可以直接拖拽顶点、编辑属性。
拍照是外业的高频操作。附件字段设置好后,在表单里点击附件框就能调起相机,拍完照片自动关联到当前要素。这个设计意味着再也不需要手动给照片文件命名、配对,省掉的时间和避免的错误都不少。
回传时,把手机里对应的项目文件夹拷回电脑,然后在QGIS里打开QField Sync面板,合并改动到原始数据源。合完以后建议抽查几个点位,在桌面端打开属性表看一眼,确认没有遗漏。
4. 结合高频检索场景看QField能用在哪儿
4.1 移动监控摄像头等设施点的批量采集
“移动监控摄像头带GIS信息”这个关键词,我猜很多人搜它是因为遇到一个很实际的业务:单位或园区里分布着一批监控摄像头,需要逐一登记位置、型号、朝向、健康状态,并沉淀成GIS台账。
这个场景用QField处理非常顺手。先在电脑上建一个“摄像头点位”点图层,字段包括:设备编号、安装位置、朝向、像素、是否云台、状态、现场照片。然后按上面说的流程配置表单、打包工程。外业人员到现场后,站在摄像头下方,点击定位,落点,拍照,选择朝向和状态,保存,下一个。熟练以后,一个人一天登记六七十个摄像头很轻松,而且每个点都带着坐标和照片,回到内业导入电脑,台账直接成型。
而且这个方式不是一次性工程,之后做月度巡检、年度盘点时,更新工程文件里的状态字段再次下发就行,数据全程可追踪。
4.2 坐标转点、坐标成面的现场处理
“GIS坐标转点”“GIS坐标成面”是高频检索词,这两个需求QField都能覆盖一部分,但要分辨场景。
如果外业手里拿的是一组从手机地图或者其他工具上读到的经纬度坐标,需要落地成GIS点位,最简单的办法是回桌面端把CSV导入QGIS生成点图层,再打包给QField复核。但如果是现场紧急处理,QField里也可以直接在地图上定位一个点并添加要素,不过手工输入的坐标精度有限,我更推荐提前在桌面端把坐标表一次性转好,QField只负责外业位置核对。
“坐标成面”主要发生在绘制地块、调查区域、巡护范围这类场景。QField中添加面要素的方法是沿着边界连续打点,最后一个点落回起点闭合,就生成一个面。如果边界很复杂,可以在桌面端先用正射影像预勾绘,外业带着QField到现场核实边界,有偏差就直接拖拽顶点修正。这种方式比现场从零开始勾画高效得多。
需要特别提醒坐标系的问题。QField里GPS定位输出的原始坐标是WGS84经纬度,而工程如果是CGCS2000或者高斯投影平面坐标,QField会实时做坐标转换。只要QGIS里工程坐标系、图层坐标系配置正确,这个转换基本是透明的。但当我遇到点位偏移明显时,第一反应通常是查看工程的投影设置有没有选错中央经线,或者自定义坐标系参数对不对,这类问题在桌面端处理起来最方便。
4.3 专题图标定制:水文站、水位站这类专业符号
做水利信息化项目的同学,多半搜过“水文站水位站专业图标GIS”。QField往返于桌面端和移动端时,图标能不能跟着走,关键在符号文件路径的设置。
我的做法是:在QGIS里给水文站准备一套自定义SVG标记符号。把SVG图标文件统一放到一个文件夹,在QGIS的“设置→选项→系统→SVG路径”里添加这个路径,然后在图层符号选择器里选中对应图标。打包工程时,把这个图标文件夹一起放到QField项目的目录里,并且在图层符号定义中使用相对路径,而不是写死电脑的绝对路径,否则图标同步到手机后会变成红色问号。
一个实用的经验是:不要把几十个SVG图标全部堆在符号库里让外业人员自己选,而是提前按图层类型绑定图标。比如水文站图层固定用水滴图标,水位站图层用标尺图标,外业不需要做任何符号选择,数据采集成果图自然就好看。
4.4 教学、大赛和二次开发视角
“第14届全国大学生GIS技能大赛”这类关键词这几年热度一直不低。对于高校GIS课程和竞赛来说,QField有一个明显的优势:学生只要一台Android手机,安装免费应用,就能亲身体验从“桌面端制图准备→移动端外业采集→回传合并成图”的完整GIS数据生产链路。这个理解对行业新手非常重要,很多学生整学期都在桌面端画图,对野外数据怎么来的完全没有概念。
另外,QField本身是开源的,如果对GIS二次开发感兴趣,它的源码和架构是很不错的参考样本。我自己也研究过一段时间,它的核心是基于QGIS的渲染库做移动端适配,这就决定了它和QGIS的兼容性天然就好。但我也要泼一盆冷水:如果想着手从零搭建一套基于C#的GIS开发平台,那是一条很漫长的路,地图渲染、坐标转换、空间索引、要素编辑、离线存储每个环节都是大坑,在团队没有充足研发资源的情况下,不如直接把QGIS加QField这套成熟工具链拿来用。
5. 实测中踩过的坑与解决办法
5.1 图层放大不显示的问题排查
有一次外业到现场,打开工程发现某个重点地物图层不见了,我当时心里咯噔一下,以为数据丢了,在手机上来回缩放折腾了半天。
回来后排查,第一层原因基本锁定在“可见比例尺范围”。在QGIS图层属性里的渲染或常规设置里,如果给图层设置了最小比例尺和最大比例尺,那么超出这个范围,图层就不渲染。很多人在内业做专题图时有缩放范围控制的需求,设置了之后忘了改,结果同步到QField,外业人员在手机上的视口比例和桌面端不一样,图层直接就“消失”了。
另一个常见的原因是数据来源问题。如果图层在桌面端连接的是PostGIS数据库,打包工程时没有勾选“打包数据副本”,那么到移动端后图层只是空壳,自然什么都显示不出来。这也解释了为什么每次打包前都要检查图层的“数据源”那一栏,确保设备上用的是离线副本。
5.2 复制粘贴不了是怎么回事
“GIS复制了不能粘贴为什么”这个检索词估计也戳中了不少人的痛点。我在QField里也遇到过复制粘贴没反应的情况。
QField当前版本对复制粘贴是有限制的:它要求源图层和目标图层必须同属一个数据包,跨工程复制要素并没有实现。而且目标图层的字段结构必须和源图层一致,字段少了、顺序乱了,都会被拒绝。如果图层几何类型再不同,比如从点图层复制,想粘贴到线图层里,那也是行不通的。
既然跨图层复制这么麻烦,我现在的做法是尽量不做复制,而是在桌面端预先准备“模板要素”。在QField里添加新要素时,可以直接从模板新建,比如井盖普查时,我预先建好“雨水井”模板、“污水井”模板,外业添加时选对应模板,表单里该带的默认值自动带上,比复制粘贴靠谱得多。
5.3 char、float、int、time字段的类型陷阱
还在搜“GIS里面char float int time”的同学,多半是遇到了字段类型导致的报错。这几个类型在QField里各有各的小脾气。
文本字段,QField会按照你在QGIS里定义的最大长度校验,超过就拒绝保存。这个前面提过,字段长度一定要留余量。
浮点数比较隐蔽的一个坑是录入格式。有些人用手机输入法输小数时打出了中文逗号或者全角字符,QField解析失败,表单就保存不了。我见过有人坐那儿对着屏幕研究半天,最后发现就是分隔符的问题。
整数字段要留意是否允许空值。如果源表不允许空值,而现场拿到一个设备没有编号,表单里有必填约束,这个要素就很难保存,这时候需要在内业阶段给该字段设置一个“暂无”之类的占位值,避免现场卡死。
日期时间字段则完全依赖控件的格式设置。在QGIS里把日期控件配置成“yyyy-MM-dd”格式,到QField里就按这个格式解析,如果配置成自由文本,外业人员手工输入格式五花八门,后期整理数据会非常头疼。原则是:能用日期选择器的别用自由文本。
5.4 其他几个值得警惕的小问题
下面这几个问题不是每次都会遇到,但一旦遇到就很麻烦,权当提前打预防针。
一是Android系统的电池优化。QField在户外长时间使用,如果手机的电池优化没有把QField加入白名单,锁屏一段时间后GPS就会被系统杀掉,回到应用时你会发现定位在不停“重捕”,打出来的点漂出去老远。这个设置一定要提前关掉。
二是离线底图的体积控制。上面说过,多个缩放级别的影像瓦片打包出来轻松几个GB,QField加载慢甚至闪退都和这个有关。我现在的做法是按工作范围精确裁剪,缩放级别控制在够用的范围,比如1:1000的外业核查,14到17级基本够用。
三是QField能加载DEM栅格,用来现场查看地形起伏确实方便,但千万别在野外用它做栅格切割、坡度计算这类操作,手机性能和交互都不适合干这个,预处理交给桌面的QGIS栅格计算器,QField只看最终结果就行。
四是我后来学会的一个小技巧:外业过程中开启QField的轨迹记录功能,回来的路上自动生成一条GPS轨迹线。这趟轨迹可以用来复核点位分布是否合理,也可以在桌面端结合时间字段做轨迹回放甚至动态模拟,比单纯看散点数据直观得多。
最后说个实用习惯。我现在每次外业前,都会在QGIS里把要采集的图层做一遍“预演”,模拟填写一张完整表单,确认没有必填项空缺、没有约束条件写错、没有字段类型卡人,然后再打包出门。这个习惯帮我省掉了不少野外返工的时间。QField这套工具链的核心理念其实很朴素——让外业数据第一次就落到正确的地方,后面所有工作才能真正快起来。