
简介这是一份面向ArcGIS初中级用户的系统学习笔记与操作思路速查手册内容覆盖空间数据采集地理配准、空间校正、要素编辑与拓扑检查、坐标与投影变换、地图制图以及矢量叠置分析、栅格邻域分析、地形表面分析、水文流域分析、网络分析和Model Builder建模等常用功能按模块化结构呈现便于按需查阅。资源虽为单个PDF文档约4.08MB但知识密度较高不仅梳理了ArcToolbox各工具箱的调用方式还以“X型作物适宜区分析”和DEM地形制图为实例完整串联了坡向提取、缓冲区建立、克里金插值、栅格计算器筛选、栅格转矢量、相交取交集、等高线生成与晕渲图制作等处理流程同时展示了DEM流向分析、洼地填充、河网提取等水文分析操作。已有296人学习下载适合备考GIS竞赛、完成课程设计或需要快速搭建ArcGIS分析框架的读者。1. 从一份 PDF 看清 ArcGIS 空间数据处理与分析的完整路径拿到一份 DEM、一条主沟谷线和一张气温降水观测表要在半小时内给出适合作物种植的区域很多人第一反应是找相交工具结果出来一堆零碎图斑最后发现投影没统一、坡向阈值写反了。这类问题根子不在工具在于没有把空间数据处理的步骤拆开。ArcGIS 体系里空间数据处理和空间数据分析是两条明确的链路采集、编辑、拓扑、投影变换、制图是数据处理环节矢量分析、栅格分析、水文分析、插值重分类属于数据分析环节。这份思路整理把两条链路串成了可执行的流程清单对做课程设计、生产项目和准备 GIS 大赛的人都适用。2. 空间数据采集与编辑地理配准、要素编辑和拓扑检查的参数细节2.1 地理配准控制点数量决定校正模型RMS 决定能不能用打开 Georeferencing 工具条加载需要纠正的扫描地形图先选一个明确的同名地物点作为起始控制点。对一阶多项式至少取 3 个控制点二阶多项式至少 6 个点实际做栅格地形图时我一般取 10 到 15 个点均匀分布在四角和中心而不是堆在同一侧。配准完成后打开 View Link Table 看 RMS 残差单位是像元通常控制在 0.5 个像元以内。超出这个范围的控制点要删掉重取不要靠增加点数量来硬压残差那样容易引入局部扭曲。import arcpy arcpy.env.workspace rD:\gis_data arcpy.management.Warp( in_rasterscan_map.tif, source_locationsgcp_src.shp, target_locationsgcp_dst.shp, out_rasterscan_map_rectified.tif, transformation_typePOLYORDER1, resampling_typeBILINEAR )Warp 用控制点文件做几何校正POLYORDER1 适合整体平移、旋转或轻微缩放如果扫描图有纸张变形改用 POLYORDER2。校正后如果要做矢量化重采样建议选 NEAREST 保留原始像元值地物边缘更干净BILINEAR 适合连续表面的影像。控制点不要选在田埂或阴影边界上道路交叉口和房角这类在扫描图上清晰可辨的位置更可靠。控制点数量变换模型适用场景3-6POLYORDER1栅格整体偏移、旋转7-15POLYORDER2地形图局部变形15 以上SPLINE传感器引起的非线性畸变提示地理配准针对栅格空间校针对矢量要素类。矢量数据错位时用 Spatial Adjustment 工具条通过位移链接把要素整体拉回正确位置边匹配路网时常用这种办法。2.2 要素编辑画线、创建要素和修改要素的正确顺序在 ArcGIS Desktop 10.2 到 10.8 这一代版本里编辑操作入口基本一致右键图层选“编辑要素”启动编辑会话再从“创建要素”窗口选模板。画线的步骤是选择线模板用“线”工具逐点单击双击结束要闭合时右键选择“完成草图”。创建面要素推荐用“自动完成面”它沿已有面边界闭合适合做宗地补图。修改要素时注意不要把节点拖得过密节点越多后期拓扑检查出现的悬空点越多。字段小数点前不显示 0 这类问题通常不是数据错误而是图层属性里数值格式勾选了去掉前导零改回来即可。2.3 拓扑检查规则选错比不检查更危险拓扑用于维护数据完整性常见规则有面不能重叠、面不能有缝隙、线不能相交、边界必须被覆盖等。创建拓扑时所有要素类必须存放在同一个要素数据集中拓扑容差我一般设 0.001 米容差设太大会把相邻细碎面合并成一条公共边误报错误反而掩盖真实问题。验证用错误检查器逐条查看复杂的图斑不要点“全部修复”先手动处理大块错误再批量修小错误。import arcpy arcpy.env.workspace rD:\gis_data\cad.gdb arcpy.management.CreateTopology(cad.gdb, parcel_topo, tolerance0.001) arcpy.management.AddFeatureClassToTopology(parcel_topo, parcels, rank2) arcpy.management.AddRuleToTopology(parcel_topo, Must Not Overlap, parcels) arcpy.management.ValidateTopology(parcel_topo)CreateTopology 需要文件或企业级地理数据库shapefile 不支持拓扑。rank 值越小优先级越高两个要素相交时低 rank 的要素会被修正。ValidateTopology 执行后错误要素以拓扑图层形式展示不要跳过这一步直接修改原始数据。3. 空间参考与投影变换坐标问题处理完再做地图制图3.1 动态投影与数据投影的差别很多人遇到过两个图层在 ArcMap 里看完全重合但分别用其他软件打开就错开几十米原因是界面显示做了动态投影数据本身的坐标系并没有变化。做空间分析之前第一步是确认两个输入是否在同一坐标系下打开图层属性看“源”选项卡里的投影信息。一个 WGS84 经纬度一个 Web 墨卡托直接做相交会提示几何不相交或得到错误结果先统一坐标系再跑分析。import arcpy arcpy.env.workspace rD:\gis_data\shp target_sr arcpy.SpatialReference(3857) # Web Mercator for fc in arcpy.ListFeatureClasses(): desc arcpy.Describe(fc) if desc.spatialReference.factoryCode ! 3857: arcpy.management.Project(fc, fc.replace(.shp, _3857.shp), target_sr)SpatialReference(3857) 是 Web 墨卡托的 WKID。循环里先用 Describe 判断坐标系避免对已经投影过的数据重复转换。批量处理时不要把目标坐标系写死在工具参数里用变量管理以后换坐标系只需改一行。坐标系类型常见用途WGS84地理坐标系GPS 原始数据、部分在线底图Web Mercator投影坐标系在线切片地图服务CGCS2000 3 度分带投影坐标系国内测绘成果、工程项目3.2 Define Projection 与 Project 的分工Define Projection 是给缺少坐标系定义的数据写入定义不改变坐标值Project 是真正改变坐标值。最常见的错误是拿到一份 CAD 导出的 shp坐标值明显是米却直接执行 Project结果坐标系仍是未知。正确做法是先 Define Projection 赋予与数值匹配的坐标系再用 Project 转目标坐标系。跨椭球转换还需要指定地理变换参数比如 WGS84 到 CGCS2000不同地区有各自的转换模型。投影完成后叠加在线天地图一类底图验证最直接看要素是否与影像套合。3.3 制图输出符号化、标注与掩模的配合地图制图不光是输出符号和标注做不好前面的分析等于白做。符号化优先用数据驱动样式右击图层属性符号系统里选“类别”按字段分类。地类图斑密集时关闭“显示所有其他值”并调整最小可见尺寸避免一张图上全是符号这是处理地类符号太密的常用手段。标注压盖用掩模解决在标注属性里开启要素掩模选择背景图层作为掩模要素注记压过河流线时会自动在周围留白。制图表达适合把符号规则存成样式复用数据更新后符号不会丢失。4. 矢量与栅格分析组合缓冲区、叠置、插值和重分类的实现4.1 矢量数据处理从裁剪、筛选到统计分析数据提取类工具里最常用的是 Clip、Split、Select。Clip 的输入是要素类和裁剪要素输出范围取决于裁剪要素的外边界Split 按属性字段把输入切分成多个要素类Select 用 SQL 表达式筛选记录例如 POP 1000 选出人口过千的区域。裁剪影像和矢量要素是同一套逻辑工具会自动读取被裁剪层的范围和几何类型。统计分析用 Frequency 做频数统计、Summary Statistics 做汇总统计。汇总统计时注意 case_field 参数要按“乡镇”分组统计面积就把乡镇字段设为 case field统计字段选面积统计类型选 SUM。缓冲区分析时 Buffer 工具的 distance 可以直接输数值加单位也可以用要素类里的字段值。多环缓冲区用 Multiple Ring Buffer一次生成多级半径生成后把 Dissolve 选项设为 ALL否则每个输入要素都会产生独立环。点距离工具输出点之间的平距表做最近邻分析前先确认坐标系的单位。工具输入要求典型用途Intersect点、线、面可组合提取公共区域Union必须全为面合并边界并保留全部属性Identity输入要素 标识要素保留输入补充叠加属性Erase输入 擦除要素扣除不需要范围Update输入 更新要素用新数据覆盖旧数据范围4.2 栅格分析局域运算、邻域窗口与重分类栅格分析里局域分析是逐像元运算栅格计算器和 Con 条件表达式最常用。邻域分析是滑动窗口运算窗口半径要参考像元大小一般设成像元大小的 5 到 10 倍才符合地物尺度。重分类按区间赋新值在适宜区分析中把温度 9.5 到 11.5 度重分类为 1其余为 0降雨同理再用栅格计算器相乘得到候选区域。植被覆盖度这类指标也是同样的思路先算归一化指数再分级赋值。import arcpy from arcpy.sa import * arcpy.CheckOutExtension(Spatial) arcpy.env.workspace rD:\gis_data arcpy.env.overwriteOutput True arcpy.env.snapRaster dem.tif arcpy.env.cellSize dem.tif # 沿沟谷建立 800 米缓冲区 arcpy.analysis.Buffer(gully.shp, gully_800m.shp, 800 Meters, dissolve_optionALL) # 提取坡向并筛选阳坡90 到 270 度 aspect_r Aspect(dem.tif) sunny Con((aspect_r 90) (aspect_r 270), 1, 0) sunny.save(sunny.tif)snapRaster 和 cellSize 统一对齐到 DEM保证后续栅格运算像元位置完全一致。Con 的条件表达式可以嵌套比如再加一个高程条件写为Con((aspect 90) (aspect 270) (elev 1500), 1, 0)。条件越多分析结果越精细但每个条件都对应一个数据源前期没有的数据不要硬凑。4.3 克里金插值的参数怎么给克里金与反距离权重插值不同它通过半变异函数描述空间自相关。操作路径是 Spatial Analyst 工具箱、插值分析、克里金输入点要素前先确认点数据已正确显示 XY 并导出为 shp否则工具不可选。参数选择上普通克里金与简单克里金差别不大时优先普通克里金球面、指数、高斯模型影响拟合平滑度球面模型最通用。搜索半径默认包含最大点数点分布不均匀时改用固定半径。插值后必须做残差验证用提取多值到点对比观测点与插值结果残差大的区域考虑放大搜索半径或换半变异函数模型。5. 地形与水文分析从 DEM 填洼到河网提取的工具链参数5.1 填洼与流向先处理洼地再算流向DEM 中常有伪洼地不填掉流向分析会中断。Fill 工具的 Z limit 参数决定填充深度默认填充全部洼地设成 10 表示深度小于 10 米的洼地被填平超过的保留。研究区存在真实坑塘时用默认参数会把坑塘也填掉需要先看地形是否包含这类真实凹地。流向工具使用 D8 单流向算法输出栅格的像元值按 1、2、4、8、16、32、64、128 编码代表八个方向。import arcpy from arcpy.sa import * arcpy.CheckOutExtension(Spatial) arcpy.env.workspace rD:\gis_data arcpy.env.overwriteOutput True arcpy.env.snapRaster dem.tif fill_dem Fill(dem.tif, z_limit10) fill_dem.save(dem_fill.tif) flow_dir FlowDirection(fill_dem, force_flowTrue) flow_dir.save(flow_dir.tif) flow_acc FlowAccumulation(flow_dir) flow_acc.save(flow_acc.tif)force_flowTrue 强制边缘像元向外流出避免边界像元被误判为洼地如果研究区是被矩形范围裁出来的边界处会产生大量无效流线这个参数建议保留。z_limit 设 10 是相对保守的经验值在平坦地区可以先设更大值观察河网连续性再逐步放小。5.2 河网提取阈值怎么选矢量化后如何处理流量累积栅格生成后用栅格计算器做阈值提取Con(flow_acc.tif 500, 1)阈值 500 表示只有累积超过 500 个像元的像元才进入河网。沟谷越密集区域阈值取小值要粗壮树状河网就取大值从 300 试到 2000 对比几次。生成的河网栅格用 Stream to Feature栅格河网矢量化转线输入必须同时给河网栅格和流向栅格两个栅格像元大小须一致。转出的线很曲折用编辑器高级编辑里的平滑工具处理最大偏移容差设 4 到 5 个像元能保留河网骨架又不会偏移真实河槽。若平滑后仍过度抖动检查是否用简化工具替代了平滑简化会把角点截直和基于 PAEK 算法的平滑是两种效果。工具关键参数经验值Fillz_limit10 到 50Flow Directionforce_flowTrueCon 提取河网累积量阈值500 到 2000Smooth Line最大偏移容差4 到 55.3 子流域划分盆域分析与分水岭的边界Basin 工具直接对整个流向栅格生成盆域输出是所有独立出水口对应的汇水区。Watershed 工具需要指定汇点栅格汇点由汇或人工生成的水口确定只有明确研究区出水口时Watershed 比 Basin 更精确。生成栅格流域后用栅格转面转成矢量再与河网叠加检查每条流域边界线是否沿山脊线闭合。提取流域边界的热门操作基本就是填洼、流向、Watershed、栅格转面这条链路差别只在汇点怎么生成。5.4 山脊线与山谷线反地形 DEM 的额外技巧提取山脊线、山谷线、鞍部是地形分析的经典动作。山脊线是分水线通用做法是把 DEM 取负形成反地形再做填洼、流向和流量累计高累积带对应原 DEM 的山脊骨架。from arcpy.sa import * neg_dem Raster(dem.tif) * -1 neg_fill Fill(neg_dem) neg_flow FlowDirection(neg_fill) neg_acc FlowAccumulation(neg_flow) ridge Con(neg_acc 1000, 1, 0) ridge.save(ridge_test.tif)阈值越高提取出的山脊线越偏向主干先用 1000 看整体效果再调整。山谷线用原始 DEM 跑同一条链即可得到的就是沟谷线。鞍部提取要结合反地形山脊线、原 DEM 山谷线两套结果找两者交叉且曲率接近 0 的位置。6. 用 Model Builder 固化水文分析流程并验证结果6.1 把阈值变量暴露成模型参数Model Builder 里把填洼、流向、流量、栅格计算器、栅格河网矢量化依次连起来。右键栅格计算器表达式把 500 这个数字改为变量再右键该变量选择“模型参数”。保存到工具箱后双击模型就能像普通工具一样修改阈值批量重跑。中间数据如填洼结果、流向结果右键设为中间数据模型运行结束后自动清理目录里不残留中间栅格。反复调整阈值时每次运行只生成最终河网磁盘空间占用也小。6.2 结果验证的三个动作第一个动作是面积核算栅格转面后打开属性表查看总面积是否与研究区合理对应若面积偏差超过一个像元量级说明栅格转面参数或投影单位错了。第二个动作是随机采样验证用创建随机点工具生成 30 个点提取值到点读取坡向、温度、降雨插值结果与适宜条件逐项对照。第三个动作是叠套检查把平滑后的河网与平滑前线叠加确认偏移在容差范围内。进度框长时间不动时先看后台地理处理列表再清理临时文件夹的大文件多数情况是磁盘空间不足导致写入卡住。验证项检查方法通过标准面积属性表 SUM 面积字段与研究区理论值一致属性精度随机点提取值对比观测点残差在阈值范围内几何精度平滑线与原线叠套最大偏移不超容差把阈值变量化之后同样的模型可以复用到不同 DEM只需换输入栅格和阈值不需要改连线。再做一次流域分析时只需替换 DEM 路径运行一遍模型会自动从填洼计算到河网成图这是把临时分析固化成可复用工具的最短路径。本文还有配套的精品资源点击获取