简介:这份资源面向GIS初学者与遥感分析入门者,围绕夜间灯光数据的提取与强度计算展开,帮助读者掌握从行政矢量范围筛选、按掩膜裁剪栅格到分区统计灯光强度的完整分析思路,可应用于城市规划、环境监测与区域经济评估等场景。资源包共1个文件,为docx文档,压缩包约6.52MB,以图文步骤形式记录ArcGIS中的关键操作与工具路径,便于对照软件界面逐步练习。目前已有3662人学习下载,说明其在GIS实操入门群体中具有一定参考价值。文档内容覆盖按属性选择提取目标行政区、导出矢量范围、使用Spatial Analyst工具按掩膜提取灯光栅格,以及以表格显示分区统计计算各区域灯光强度,并延伸至连接属性表、分级色彩符号化与布局视图出图等可视化环节,读者可据此独立完成一套夜间灯光分析流程并理解各步骤的作用与参数含义。
1. 夜间灯光提取与强度计算:从一张 tif 到可出图的分区统计表
手头有一份夜间灯光栅格 tif,领导或甲方要的是「某区域灯光强度统计表 + 一张能放进报告的分级设色图」。很多人卡在第一步:tif 能打开,但怎么只留目标行政区?掩膜提取完,分区统计表又怎么连回矢量图?这篇就把 ArcGIS 里这条链路拆开——行政矢量按属性选面、按掩膜提取裁剪栅格、以表格显示分区统计算强度、连接字段做分级色彩出图。适合做城市规划、环境监测、经济评估类遥感分析的 GIS 从业者,也适合刚接触 Spatial Analyst 工具集、想把夜间灯光数据真正跑成成果的新手。下面按我实际操作的顺序走,参数和坑都标出来。
2. 数据准备与坐标系对齐:掩膜提取前必须做对的两件事
夜间灯光分析的成品质量,八成在打开工具箱之前就定了。这一章先把数据源、坐标系、字段结构三件事捋清楚,否则后面掩膜提取会报错、分区统计会出空表,返工成本比重新下载还高。
2.1 夜间灯光栅格与行政矢量怎么配
夜间灯光栅格常见来源是 DMSP/OLS 和 VIIRS 两类产品,前者时间序列长、像元偏粗,后者分辨率更细、亮度动态范围更大。不管用哪一套,落到 ArcGIS 里都是带地理参考的 tif,每个像元值代表该位置的灯光亮度等级或辐射值。行政矢量则是 shp 格式的面数据,属性表里通常有行政区名称、编码等字段。
两者能一起分析的前提是坐标系一致。常见做法是先把行政矢量投影到与灯光栅格相同的坐标系,或者反过来把栅格投影到矢量坐标系。我一般会先看栅格的空间参考,再把矢量「投影」到同一套坐标系下,而不是直接改定义。投影和改定义是两回事:前者做坐标换算,后者只改标签不动坐标,改错了位置会整体偏移,这种翻车在现场很常见。
| 检查项 | 怎么看 | 不对的后果 |
|---|---|---|
| 栅格坐标系 | 图层属性 → 源 → 空间参考 | 掩膜范围错位 |
| 矢量坐标系 | 图层属性 → 源 → 空间参考 | 提取出空白或偏移 |
| 矢量名称字段 | 打开属性表看字段名与取值 | 按属性选择选不中 |
| 栅格像元值类型 | 属性 → 源 → 像素类型 | 统计结果异常 |
字段这块要特别留意:按属性选择依赖名称字段,如果字段名是拼音缩写或编码,得先确认取值和你要选的区域对得上。多个区域一起选时用 Or 连接条件,别用 And,否则一个都选不中。
2.2 按属性选择导出目标行政区面
打开行政矢量 shp 后,右键图层 → 打开属性表,点「按属性选择」。在表达式框里双击名称字段,点等号,再点「获取唯一值」把候选区域列出来,双击目标区域名。只要一个区域,点应用、确定即可;要多个区域,点 Or 再重复选下一个,直到条件拼完。
-- 按属性选择表达式示例(字段名以实际为准) "NAME" = '区域A' OR "NAME" = '区域B' OR "NAME" = '区域C'这段表达式的逻辑是:只要满足任一名称条件就选中。参数上注意引号——文本字段用单引号,字段名用双引号,ArcGIS 的查询构建器对引号敏感,混用会直接报语法错误。选完后右键图层 → 数据 → 导出数据,浏览到存放位置、改好名称、保存,导出时勾选「所选要素」,这样新 shp 里就只有目标区域。
导出后建议单独加载这个新图层,确认面数量、范围都对,再进入掩膜提取。我见过有人导出时没勾「所选要素」,结果把整个省的面都带进去了,后面统计出来一堆无关区域,白跑一遍。
3. 按掩膜提取裁剪灯光栅格:参数怎么填、结果怎么验
数据对齐之后,核心动作就一步:用行政区面当掩膜,把灯光栅格裁到目标范围内。这一步在 Spatial Analyst 工具 → 提取分析 → 按掩膜提取里完成,参数不多,但每个都影响结果。
3.1 按掩膜提取的三个输入
打开工具后有三个关键输入:输入栅格选夜间灯光 tif;输入栅格数据或要素掩膜数据选上一步导出的行政区面;输出栅格指定存放位置和名称。点确定后等处理完成,内容列表里只显示输出栅格,检查范围是否与行政区面吻合。
# 用 ArcPy 复现同一操作,便于批处理 import arcpy from arcpy.sa import ExtractByMask arcpy.CheckOutExtension("Spatial") in_raster = r"D:\data\nightlight.tif" # 夜间灯光栅格 mask_feature = r"D:\data\region.shp" # 目标行政区面 out_raster = r"D:\data\nightlight_mask.tif" # 输出掩膜结果 ExtractByMask(in_raster, mask_feature).save(out_raster) arcpy.CheckInExtension("Spatial")这段脚本对应界面上的按掩膜提取。参数说明:in_raster是待裁剪的灯光栅格,mask_feature是掩膜面,out_raster是输出路径。用脚本的好处是多个区域可以循环跑,不用一个个点。注意先CheckOutExtension("Spatial"),否则会提示扩展模块未授权。
结果验证看两点:一是输出栅格的范围是否贴合行政区边界,二是边界外是否为 NoData。如果边界外还有值,多半是掩膜面没选对或坐标系不一致。
3.2 掩膜结果的像元值与 NoData 处理
掩膜提取不会改变像元值,只裁范围,所以输出栅格的亮度值和原始 tif 一致。但边界处会出现部分像元被裁掉的情况,这是正常的,统计时按区域汇总即可。如果后续要做强度对比,建议记录原始栅格的像元大小和值类型,避免不同来源数据混算。
提示:掩膜提取前先确认 Spatial Analyst 扩展已勾选(自定义 → 扩展模块),否则工具列表里可能找不到对应项。
4. 以表格显示分区统计:把灯光强度算成一张可连接的表
裁剪完只是有了目标区域的灯光图,真正要的「强度」得靠分区统计。这一步把每个行政区面内的灯光像元汇总成均值、总和等统计量,输出一张表,后面再连回矢量做设色。
4.1 分区统计工具的字段与统计类型
打开 Spatial Analyst 工具 → 区域分析 → 以表格显示分区统计。输入栅格数据或要素区域数据选行政区面;区域字段选能唯一标识区域的字段(如名称或编码);输入赋值栅格选掩膜后的灯光栅格;输出表指定位置和名称;统计类型按需选,常见是平均值、总和、最大值。
# ArcPy 实现分区统计 import arcpy from arcpy.sa import ZonalStatisticsAsTable arcpy.CheckOutExtension("Spatial") zone_data = r"D:\data\region.shp" zone_field = "NAME" # 区域唯一标识字段 value_raster = r"D:\data\nightlight_mask.tif" out_table = r"D:\data\zone_stat.dbf" stat_type = "MEAN" # 可选 SUM / MAX / MIN 等 ZonalStatisticsAsTable(zone_data, zone_field, value_raster, out_table, "DATA", stat_type) arcpy.CheckInExtension("Spatial")参数说明:zone_field必须是区域面里能区分每个面的字段,选错会导致多个面被合并统计;stat_type决定强度口径,做灯光强度对比常用平均值,做总量评估用总和;第四个参数"DATA"表示忽略 NoData,边界残缺像元不参与计算。统计类型的选择直接影响结论,均值适合横向比较区域亮度水平,总和更适合看整体规模,别混用。
4.2 统计表字段解读与连接回矢量
输出表里会有区域标识字段和统计结果字段,字段名通常是统计类型缩写加数值,比如 MEAN、SUM。打开表确认行数与行政区面数量一致,再回到行政区图层右键 → 连接和关联 → 连接,选择基于区域字段连接统计表,连接字段选对应的区域标识。
连接成功后打开图层属性,符号系统 → 数量 → 分级色彩,字段选统计结果字段,选个色带,确定后地图上就按灯光强度分级显示了。这一步是把「表」变成「图」的关键,字段选错会显示全灰或报错。
5. 避坑与排查:这条链路上最容易翻车的五个地方
5.1 掩膜提取输出全空或范围不对
现象:输出栅格没有值,或范围明显偏离目标区域。原因多半是矢量与栅格坐标系不一致,或掩膜面选成了未导出的原始全省面。解决:先核对两者空间参考,统一坐标系后重跑;掩膜输入确认是导出的目标区域 shp,不是原图层。
5.2 分区统计表行数少于行政区数量
现象:统计表行数比面数量少。原因通常是区域字段选了非唯一字段,多个面被当成同一区域合并。解决:换用名称或编码这类唯一字段,重跑分区统计。
5.3 连接后属性表出现大量空值
现象:连接完成后统计字段大量为空。原因是连接字段类型或取值不一致,比如一边是文本一边是数值,或名称有空格差异。解决:检查两表连接字段的取值,必要时先做字段计算统一格式再连接。
5.4 分级色彩显示异常
现象:图层全灰或颜色不分级。原因是符号系统字段选错,或统计字段被识别为文本。解决:确认字段是数值型,重新在分级色彩里指定统计结果字段。
5.5 布局视图出图元素缺失
现象:插入图名、图例、比例尺后版面混乱。原因是插入顺序和图层可见性没控制好。解决:先在内容列表只保留要出图的图层,再切布局视图逐个插入元素,图例只保留当前图层。
6. 从统计表到成图:分级设色与版面元素的收尾技巧
走到这一步,数据链路已经通了,剩下的是把结果做成能交付的图。我的习惯是先在数据视图里把分级色彩调顺,再切布局视图加元素,顺序反了容易反复调。
分级色彩这块,字段选分区统计的统计类型字段,分类方法常用自然间断点,类别数 5 到 7 之间比较耐看。色带选由浅到深的单色系,灯光强度高的区域颜色深,读图时一眼能看出差异。如果区域数量少,手动调整断点比自动分级更可控。
版面元素按「图名 → 图例 → 比例尺 → 指北针」的顺序插入,图例只保留当前分级图层,避免把底图或无关图层带进去。比例尺单位跟数据坐标系一致,投影坐标系下用米或千米,地理坐标系下别硬套。
| 出图元素 | 常见设置 | 注意点 |
|---|---|---|
| 图名 | 简明标注区域与指标 | 别写太长,版面放不下 |
| 图例 | 仅保留分级图层 | 类别名与断点对应 |
| 比例尺 | 与坐标系单位一致 | 投影坐标用米/千米 |
| 指北针 | 默认样式即可 | 位置避开图例 |
最后一步验证:把统计表和图上分级对照抽查两三个区域,看颜色深浅与数值高低是否一致。有一次我图例断点手动改过,忘了同步字段,图上高值区显示成浅色,交图前抽查才发现。从那以后我每次出图前都强制走一遍「表值—断点—颜色」三点核对,再切布局。希望帮到你。
本文还有配套的精品资源,点击获取