简介:面向GIS初学者与需要系统提升ArcGIS操作能力的用户,《ArcGIS基础100例(操作手册+操作数据)》由汤国安教授编写,以100个真实操作案例为主线,配套讲授界面认识、数据导入导出、图层管理、地图布局设计等基础功能。资源包共2069个文件,以shp/shx/dbf矢量数据、tif栅格数据、mxd地图文档及pptx讲义等类型为主,压缩包约156MB,目录结构清晰便于按章节检索。目前已有1600余人学习下载,学习者可直接调用Data文件夹中的真实地理数据,跟随操作手册完成从数据预处理到专题制图的完整流程。另有EX67与EX68练习文件、14.pptx深入案例等进阶内容,帮助读者在实战中理解空间查询与统计分析思路,是系统入门ArcGIS并衔接后续空间分析学习的实用参考资料。
1. 我为什么建议把 ArcGIS基础100例当成入门主线:它解决的不是软件操作,而是练习不成体系
恐怕很多人学ArcGIS都有这种体验:视频看完了、书也翻了,真要自己跑一个缓冲区分析时,手指停在工具箱上不知道该点哪里。ArcGIS基础100例这套“操作手册+操作数据”的价值,不在“100”这个数字,而在它把软件能力拆成100个能独立验证的小任务:每个任务配了练习数据,手册写明操作路径,做完能立刻看到结果对不对。它解决的是GIS自学最致命的问题——练习不成体系、没有反馈。适合零基础转GIS的学生,需要一周内上手ArcGIS交付图件的新人,以及想用成套案例带实验课的老师。接下来我按自己刷这类资料的习惯,把资料分析、数据管理、空间分析、制图输出和排错思路一条条讲透。
2. 动手之前先理清资料结构与本地环境:读懂配套数据并规划工作目录
2.1 先别急着双击 mxd:看懂操作手册+操作数据的组织方式
拿到类似“ArcGIS基础100例(操作手册+操作数据)”的资料包,我习惯先不打开任何文档,而是把整个目录完整铺开看一遍。一份合格的实操资料,数据通常按专题或按例号组织,常见结构是数据根目录下按例号建子文件夹,例如 Ex01、Ex02、Ex03,每个文件夹放当次要用的矢量要素类、栅格影像或地理数据库;手册部分则按例给出操作路径与预期结果。这样设计的用意是让每道练习都有独立的数据上下文,不会因为前面某一步失误把后续所有数据带偏。
配套数据的常见格式包括 shapefile、File Geodatabase、GeoTIFF、mxd 工程文件和 lyr 图层文件。其中 mxd 是地图工程入口,打开就能看到配好的符号化效果;lyr 是符号图层,保存的是渲染方案而非数据本体。以下表格是这套资料里最常出现的文件类型和它们在练习中的典型用途:
| 文件类型 | 后缀/容器 | 在100例中的典型用途 |
|---|---|---|
| shapefile | .shp/.dbf/.shx | 矢量点线面基础数据、练习裁剪/缓冲区 |
| 文件地理数据库 | .gdb 文件夹 | 多要素集中管理、复杂拓扑练习 |
| 栅格影像 | .tif/.img | dem地形分析、影像裁剪、栅格计算 |
| 地图文档 | .mxd | 操作前后的工程场景,用于对照效果 |
| 图层文件 | .lyr/.lyrx | 保存符号化和查询定义,直接拖入当前地图 |
拿到资料的第一步是核对目录与例号是否一一对应。有时资料包里会混入同名旧版本文件,或某个例子的 gdb 缺失,导致后半部分练习做不了。我会打开每个 gdb,用 ArcCatalog 看一眼要素类数量是否与100例描述相符;缺数据就标记出来,等补充的数据包到位后再补刷。这个动作虽然琐碎,但避免了刷到一半发现素材对不上的尴尬。
2.2 工作目录规划:中文路径、空格和临时目录是三个容易埋雷的地方
实操中我一般先把整个资料包复制到本机一个纯英文、无空格的路径,例如D:\GIS_Learning\arcgis_100。原因很实在:ArcGIS 的地理处理工具在不同版本里对中文路径支持参差不齐,文件路径一旦带中文,部分 gp 工具的中间结果会静默失败;路径带空格则更容易在批量处理脚本里拼错连接字符串。把原始数据固定在一个只读目录里,是保证后续100例重跑结果可复现的前提。
目录结构我习惯分四块:source_data放原始配套数据,只读不动;my_output放自己练习生成的中间与最终结果;scratch放临时计算缓存,定期清空;maps专门保存出图工程的 mxd。这样做的好处是:100例里凡是涉及输出要素类的操作,输出路径统一写到my_output,翻车时清理重跑非常快,不会污染原始数据。
提示:不建议直接在资料包的原始目录里做练习。很多例子的输出会与源数据同目录,一旦误存同名文件,源数据被覆盖后整个练习链路的答案基准就变了。
2.3 用一段 ArcPy 脚本给配套数据做“体检”
不管是纸质手册还是电子数据,拿到手先做一次数据体检,比打开 ArcMap 逐项翻看高效得多,也能提前暴露后面会拖累练习的坏数据。我常用下面的脚本扫描整个资料目录,输出要素类坐标系、要素数和几何类型:
# data_check.py # 用法:在ArcGIS的Python环境里运行,输出一个txt体检报告 import arcpy import os work_path = r"D:\GIS_Learning\arcgis_100\source_data" out_txt = r"D:\GIS_Learning\arcgis_100\data_check_result.txt" arcpy.env.workspace = work_path fcs = [] # 扫描所有shp for root, dirs, files in os.walk(work_path): for f in files: if f.endswith(".shp"): fcs.append(os.path.join(root, f)) # 扫描所有gdb内的要素类 for gdb in arcpy.ListWorkspaces("*", "FileGDB"): arcpy.env.workspace = gdb for fc in arcpy.ListFeatureClasses(): fcs.append(os.path.join(gdb, fc)) with open(out_txt, "w", encoding="utf-8") as fp: for fc in fcs: desc = arcpy.Describe(fc) count = arcpy.GetCount_management(fc).getOutput(0) sr = desc.spatialReference.name if desc.spatialReference else "Unknown" fp.write(f"{fc}|{sr}|{desc.shapeType}|{count}|Z:{desc.hasZ}\n") print("checked:", len(fcs))逻辑说明:代码核心是arcpy.Describe读取要素类的空间参考、几何类型和 Z 值信息,再用GetCount取要素数量。检查重点有三个:坐标系显示 Unknown 的要素类,练习里凡涉及叠加分析都会先翻车;count 为 0 的空要素类,裁剪和缓冲区结果会是空图层;hasZ 为 True 的3D要素类,在常规 2D 分析里容易被忽略但确实会带来拓扑错误。
参数说明:work_path指向数据根目录,脚本会递归遍历 shp 并用ListWorkspaces找目录下的所有 FileGDB;out_txt是体检报告路径。运行前注意 ArcGIS 的 Python 环境是软件自带的那套,不是系统 Python;用 ArcGIS Pro 的话,在它内置的 Python 里跑这段逻辑同样适用,只需要按界面环境调整工作空间写法。体检完成后如果发现大量坐标未知的要素类,不必急着删,先看手册里对应例子的描述:有些练习本身就假设你从无坐标系数据开始做定义投影,这种“坏数据”反而是教学用途。真正的红线数据是“坐标系字段写了投影坐标,但坐标数值却是经纬度范围”,这种先标记,等刷到坐标系专题时优先拿它开刀。
3. 数据管理与坐标系专题:前30例里最值钱的操作和参数设定
3.1 从添加数据到定义投影:数据管理类例子的标准三步
100例的前段通常会从“打开数据、浏览属性、设置符号、定义坐标系”这类基础操作入手。别小看前三步,我见过不少新人栽在“图层能显示但一分析就报错”上,问题根子往往在数据加载阶段就埋下了。标准三步可以写成:第一步把数据加载进 ArcMap 或 ArcGIS Pro,右键图层查看属性,确认“源”里的空间参考信息;第二步把数据框的坐标系设为项目目标坐标系;第三步才是动手做符号化或字段加工。
坐标系判断有一个最实用的经验:用“识别”工具随便点一个要素,看坐标数值的量级。如果是 -180 到 180 之间的小数,数据基本是经纬度地理坐标系;如果出现几十万到几百万的大数,则是投影坐标系,单位是米或英尺。很多新人在这一步凭感觉认为“数据看着大就是精确”,结果把经纬度当成米去算缓冲区,距离差了好几万倍,这就是后续所有分析对不上的源头。
加载数据后如果图层属性里空白一片,常见原因是数据不带 .prj 投影定义文件。此时有三个选择:先确知数据来源坐标系,用“定义投影”工具补上;不确定来源但知道坐标值范围,至少先补一个通用坐标系便于浏览;完全不知道来源,则要先做空间校正/地理配准,这类数据不适合直接参与叠加分析。规范做法是:所有练习数据的坐标系在第一次使用时统一登记一遍,登记信息存成一个 csv,几行字,但能让你在刷到投影专题时瞬间定位哪些数据有隐患。
3.2 定义投影与投影变换的坑:为什么两个图层怎么都对不上
“定义投影”和“投影”这组工具,是 ArcGIS 入门阶段最容易混淆的一对操作。定义投影(Define Projection)只是给数据写入一条坐标系元数据,坐标数值一个都不会变;投影变换(Project)才是真正把坐标值按数学公式和参考椭球参数换算成另一套数值。两者的区分逻辑很简单:数据当前坐标系是错的,用定义投影纠正“标签”;数据坐标系本身是对的,只是需要转到另一个坐标系下呈现与计算,用投影变换。
一旦把这两步用反,画面会非常夸张:比如一份原始坐标已经是 WGS84 经纬度的数据,被误定义成 UTM 投影,坐标数值仍然停留在小数点后七八位,软件却按“米”理解,全图缩成一团或在视图边缘;反过来,把投影坐标误定义为经纬度,图层又会漂移到离谱的位置。避免这个坑的操作习惯是:动手前先看清工具名,再在属性表里导出几条坐标记录做“前后对比”。每次做投影变换前,我都会复制一份数据副本再操作,因为 Project 工具在原路径输出时一旦同名覆盖,想找回原始坐标就麻烦了。
| 操作场景 | 使用工具 | 坐标数值变化 | 典型使用案例 |
|---|---|---|---|
| 数据缺坐标系定义 | 定义投影 | 数值不变 | GPS原始点读入后补WGS84定义 |
| 数据坐标系正确但目标不同 | 投影 | 数值按公式变化 | 把经纬度数据投到高斯投影用于面积计算 |
| 只是临时显示另一套坐标系 | 数据框属性中设置坐标系 | 不写回数据 | 制图输出时切换显示方式 |
把这个过程跑熟以后,可以做一个批量脚本,把所有需要转换的数据统一转到目标坐标系,减少手工重复劳动。但第一次新接触这套流程时,建议还是逐个工具点一遍,体会“数值变与不变”的区别,这样后面写脚本时才不会把工具的输入输出连错。
3.3 字段计算、连接与融合的实用参数
字段计算器是100例中反复出现的操作,也是“看起来简单,翻车率却不低”的重灾区。比较典型的场景有三个:算面积、算长度、按属性分类。算面积之前先确认坐标系:数据必须是一个平面投影坐标系,单位最好是米;在经纬度上算出的面积单位是“平方度”,数值没有现实意义。计算时可以在字段计算器的“解析程序”里选 Python,用!shape.area!直接引用几何对象属性。
连接操作的要害是字段类型:源表和目标表的关联字段必须完全同类型,文本字段对数字字段连接时通常静默失败。连接之前先检查两边字段的“类型”列,并在源表里做一次“唯一值”筛选,确认没有重复值;重复值会导致目标表的记录成倍数膨胀,结果不敢往外交付。融合(Dissolve)的默认行为是“只保留几何轮廓”,不勾选统计字段时,属性表只保留了融合字段本身,其它字段全丢。所以做分区统计时,别忘了在工具箱参数里把需要保留的字段加到“统计字段”列表,并按需选择 SUM、MEAN、FIRST 等聚合方式。
# 字段计算器 - Python解析器 # 输入:要素类已投影到平面坐标系(单位米) # 输出:面积字段 area_ha,单位为公顷 def cal_area_ha(shape): return shape.area / 10000.0 # 调用方式:字段计算器表达式填 cal_area_ha(!shape!) # 注意:!shape! 在字段计算器中可直接引用要素几何这个表达式的关键在于shape.area只有在平面坐标系下返回值才是平方米;如果数据框坐标系是经纬度,计算结果就没意义,所以我在写之前都会先检查要素类的投影状态。参数注意点:字段类型要选“双精度”,整型字段会丢失小数点后的精度;对超大要素集运行时建议先复制一个子集测试,避免字段计算器长时间无响应后报错。
4. 空间分析与制图输出专题:刷到第50例后应该掌握的分析套路
4.1 缓冲区与叠加分析:距离单位、输出位置和环境设置
空间分析类例子通常从缓冲区开始。缓冲区工具的三个关键参数是输入要素、输出要素和距离。距离单位默认跟随输入要素坐标系的单位:如果数据是投影坐标米,距离单位就是米;如果是经纬度地理坐标,距离就只有“度”可选。所以跑缓冲区之前先看数据坐标系,不然一条“1公里”的缓冲区可能实际变成了“1度”,范围大得离谱。
另一个常在缓冲区操作中遇到的错误,是输出要素未指定路径就直接运行。工具会默认写到当前工作空间,如果工作空间没设置,结果则落到系统默认的“我的文档”目录,跑完找不到结果。我一般会在每次运行工具前先看“输出要素类”文本框是否已经自动填了一个带路径的名称,没填就先指定到my_output目录。
叠加分析(相交、裁剪、联合)里最容易踩的坑是环境设置中的输出坐标系。工具箱“环境”里的“输出坐标系”如果全局指定了一个与输入不同的坐标系,所有分析结果都会被自动重投影,输出数据的坐标系看起来是对的,但与原始数据叠放在一起时对不齐。产出交付级成果时,建议“环境→输出坐标系”设置与主输入数据保持一致,除非你明确知道自己在做什么。
4.2 栅格计算器与重分类:NoData与单元格对齐的两种“黑匣子”
栅格分析的例子在100例的中段出现,承载着地形分析、密度分析、适宜性分析等核心输出。栅格计算器是其中使用频率最高的工具,但它有一个让很多人难受的特点:当两个输入栅格的像元大小、行数和列数、范围不完全一致时,计算器会默认按输入中较大的范围运算,然后把没有值的位置全部写为 NoData。于是结果图出现大片黑色空洞,而不是想要的连续分布。
应对方式分两步:在运行计算器之前先对栅格做“重采样”,把像元大小统一到同一数值,比如全部 30 米;再使用“按掩膜提取”或“裁剪”把范围统一到同一研究区域。这样再跑计算器,结果就会干净得多。NoData 的传播规则也要记住:逐像元运算时,任何一个输入在某像元为 NoData,输出在该像元就是 NoData。所以处理有缺失值的栅格前,可以用“条件函数”或“栅格填充”先补齐空洞。
重分类时最大的坑是“分类断点看起来正常,结果边界全是缺口”。经验做法:先用“唯一值”查看影像或 dem 的实际取值范围,确定最小值和最大值,再在重分类里把范围写准确。等间隔分类不一定符合数据真实分布,做完后要在结果图上检查面积分布,必要时把断点微调到位。栅格分析结果的取色方案对理解也有很大影响,建议输出前先设置一个带拉伸的渲染,再截图说明。
4.3 制图输出:数据视图之外的交付功夫
制图类例子通常在100例的后段,很多人以为制图就是“放一个图例、加个比例尺”,但实际交付时暴露的问题往往出在布局元素与数据框的联动关系上。最典型的就是“数据框范围在布局视图里被自动重算”:为了保证比例尺精确,数据框需要锁定一个固定比例;只要数据框处于“自动调整范围”状态,导出 PDF 后要素位置和比例尺对不上。
我的出图参数习惯:布局页面设置 A4 横向,地图框占页面约 70% 宽度;比例尺类型用“交替比例尺”,单位按数据单位选择公里或米;图例中只保留当前与数据框关联的图层,删除无关的历史图层;导出分辨率用 300 dpi,文件格式优先 PDF 用于打印检查,PNG 用于屏幕共享。另外一个实用细节是:导出前先对布局视图里的所有元素做一次“对齐”操作,防止手动拖动留下的微小错位在放大输出里被放大。图例的字体、大小也建议统一,与比例尺、指北针一起在“版面视图”中逐个对齐,最后把地图框外框线的宽度设为 0.5 磅左右,出图看起来才专业。
5. 刷ArcGIS基础100例的5个高频踩坑与排查顺序:现象、原因与修复流程
刷这类操作性资料,真正浪费时间的不是操作本身,而是出了问题不知道先查哪里。以下5个问题是刷 ArcGIS基础100例 时出现频率最高的,每条按“现象→原因→解决”排列,后面还附了一个我常用的通用排查顺序,帮你在新问题上少走弯路。
5.1 图层全部变红色感叹号:数据源路径失效
现象:打开手册配套的 mxd,图层节点显示红色感叹号,属性表和缩放功能全部不可用。原因:mxd 保存的是源数据的绝对路径;资料包换到新电脑或移动硬盘后,路径没了对应关系,图层自然找不到数据。解决:先在 ArcCatalog 里右键数据目录建立文件夹连接,再打开 mxd 选择“设置数据源”批量修复。注意修复时保持原始目录结构,不要手工移动数据到其它文件夹;被移动过的数据建议先归位再修复,效率更高。同类问题还包括只缺失部分图层,通常是那几个图层的路径被单独改动过,按红色感叹号逐个核对源路径即可。
5.2 两个图层叠加时对不齐:坐标系定义错误
现象:分别打开两个图层时看着正常,把两者叠加在一起,边界交叉或完全不在一个区域。原因:最常见的是其中一个数据被写成“经纬度坐标系但数值其实是投影坐标”,或反过来;也可能是一个数据从未定义空间参考,软件默认按 WGS84 处理。解决:先在两个图层上各用一个“识别”工具取同一点坐标,对比实际数值量级判断真实坐标系;然后按前文的判断方法确定当前定义,再使用“定义投影”修正数据本身。修正后重开新地图加载两个图层,确认边界贴合后再继续分析。预防手段是每次拿到新数据,先跑一遍第2章那个体检脚本,把坐标系这一栏直接拉出来看。
5.3 裁剪或提取后结果大片NoData:几何范围没对上
现象:栅格裁剪结果不是预期范围,大片黑色 NoData,或者裁剪后 dem 边缘锯齿感极重。原因:裁剪工具默认按要素的外包矩形计算,没有只取要素本身的几何范围;或者环境的捕捉栅格参数把像元对齐到了另一套网格,导致范围边缘错位。解决:在裁剪工具参数里勾选“使用输入要素裁剪几何”,并把环境设置中的“捕捉栅格”指定为输入栅格本身;如果还有大片无值,检查裁剪要素与栅格是否坐标系一致,不一致的可以先投影统一。顺带一提,用“投影栅格”工具时也会出现类似边缘异常,那是重采样方式选的默认双线性插值,边界会出现模糊过渡,属正常现象,不必当错误排查。
5.4 字段计算结果全是空值或数值异常:坐标系和字段类型都要看
现象:用字段计算器算面积或长度后,目标字段全部为 null,或数值大得离谱。原因:直接对原始 shp 在非编辑状态下执行计算,而图层路径带有空格;或者数据坐标系实际是经纬度,算出来面积是平方度,数值没有物理意义。解决:先把数据复制为 gdb 要素类,再在副本上计算;计算前在图层属性里确认坐标系是投影坐标系;字段计算器里把“解析程序”设为 Python 并用!shape.area!引用几何属性,输出字段类型设为双精度。还有一类隐藏情况是表达式引用了错误字段名,结果所有要素返回同一个常数,排查时先对比几条记录的属性值,确认结果是否在随要素变化。
5.5 出图后比例尺和图例错位:布局元素联动关系没锁
现象:布局视图里看一切正常,导出 PDF 后图例、比例尺、指北针位置漂移或叠压。原因:数据框处于自动调整范围的默认状态,导出前软件重新计算了数据框范围,带动周边元素相对位置变化。解决:在布局视图里双击数据框,打开属性→数据框→范围,选择“固定比例”并锁定当前范围;再手动把所有布局元素选中,用“对齐”工具统一对齐基准线。导出后务必用 PDF 阅读器实际打开检查一遍,不要只看软件里的预览。如果之后又手动缩放或平移了数据框,固定比例会失效,存 mxd 前需要再确认一次范围锁定的状态。
通用排查顺序:先确认数据坐标系列表,再确认工具环境设置,最后确认输出路径;这三项检查完,能覆盖操作类错误里八成以上的问题。遇到看不懂的结果先截属性表或坐标范围,别急着删数据,信息都在数据里。
6. 把100例变成自己的技能:复验、变式与最小项目循环
前面章节的思路决定了一套资料能刷多厚。最后我想说的是:不要追求从头到尾按顺序把100例刷完,更有效的方式是“按专题分段、每个例子做三遍”。第一遍照着手册走一遍,感受工具和参数;第二遍关掉手册,只从数据出发重做,卡在哪一步说明这个例子里的知识点还没真正消化;第三遍换一套自己的数据,比如把本地的道路、地块和影像数据拿过来,把例子里的操作同名跑一遍。三遍下来,操作手册才能沉淀成自己的操作习惯。
验证是否真会的标准很简单:不看手册,能说出这一步为什么这样做,以及出问题时先查什么。我给自己定的习惯是,每刷完一个专题留下一句话笔记,只记录命令名和关键参数,例如“投影转换:Project 工具,WGS84 转 UTM 时要选地理变换参数”。后面接项目时翻一遍一句话笔记,100例就被压缩成了大约30条核心操作链,每一条都对应一个真实能用的功能点。给熟手一个进阶技巧:对重复性高、步骤固定的操作,用 ModelBuilder 或 ArcPy 封装成小工具。比如批量生成多个缓冲区和对应出图,只需输入一组距离参数,就能循环产出结果图层和 PDF,这样回到日常工作中时就能明显提速。
最后说句实在话:我刷这套资料时最深刻的教训,不是哪个工具不会用,而是“不检查坐标系就开始分析”。那次把一份投影坐标数据当成经纬度加载,叠加结果彻底对不上,花了一晚上排查才找到根因。后来“数据体检-坐标系确认-输出目录指定”成了我拿到任何项目数据的固定三连。希望帮到你。
本文还有配套的精品资源,点击获取