简介面向GIS初学者与城乡规划、土地资源管理专业师生这份文档聚焦土地适宜性评价的完整操作流程以坡度和洪水淹没分析两类生态限制要素为主线帮助读者把课堂方法落到ArcGIS实际操作中。压缩包内共1个doc文件约7.02MB以文档形式记录关键命令与参数设置体积轻便适合随查随用。目前已有322人学习。内容依次覆盖将CAD规划范围导入GIS并统一处理范围按高程筛选等高线后创建TIN、转栅格生成DEM计算坡度并按10°与25°中断值分为三级再以3分最适宜、2分较适宜、1分不适宜重分类评分洪水淹没部分则依据20年一遇、50年一遇或100年一遇水位对DEM分类最后叠加得到土地适宜性等级。文档还提示栅格大小对精度的影响、height field应选elevation等易错点可用于课程作业、项目实训和自学复盘降低流程卡壳与参数误设的概率。1. 为什么土地适宜性评价要先锁死“规划范围”和分析环境做规划类课程设计的人常常遇到一个很别扭的现象坡度、洪水淹没、道路距离三条线各自跑完看着都挺像样一进栅格计算器就报错或者算出来的结果图只覆盖了研究区的一个角。问题基本不在模型上而是在流程最开始——分析范围没有被固定成一个统一的矢量边界环境设置只在地理处理菜单里点了一次ArcToolbox 里的工具读的还是默认的全图范围。土地适宜性评价本质上是把若干生态限制要素和引导要素按权重叠在一起要素越多对行列数、像元大小、坐标系一致性的要求就越硬。这篇围绕 GIS 里的完整操作链讲一遍CAD 规划范围怎么转成 shp 并作为处理范围等高线怎么经 TIN 变成 DEM坡度、洪水淹没、干道距离怎么重分类成统一评分最后怎么加权叠加并出图。做课程设计、国土空间规划前期分析、生态敏感性评价的人都用得上新手照着能走通有几年经验的可以重点看像元大小、重分类边界和高程基准这几个容易翻车的地方。2. 从 CAD 规划范围到 shp分析环境的三个入口数据准备这一段的产出物其实只有一个——一个干净的规划范围 polygon shp以及一套所有工具都会读到的环境设置。看着简单但导出的坐标系和范围这两件事决定了后面所有栅格的形态返工成本最高。2.1 在 CAD 里把规划范围打成块常见做法是在 CAD 里把规划范围线单独留在一个图层其余标注、填充、图框先冻结再用BLOCK命令把它定义成一个块块名就叫“规划范围”。打成块的目的是让导入 ArcGIS 后能被识别为单一要素双击时能一次性选中整个多边形而不是散成几十段 polyline。很多人图省事不打包结果导入后双击选 polygon 时把图框、指北针也一起选中导出的范围比真正的规划范围大出一圈后面所有栅格都跟着多出没用的空白格。注意CAD 里的块如果包含样条曲线或三维多段线导入后可能出现自相交导致 polygon 无法生成导出前用PEDIT或OVERKILL清理一遍更稳。2.2 导入 ArcGIS 与导出 shp 的坐标系选择在 ArcMap 或 ArcGIS Pro 里加载 CAD 文件后内容列表下会按几何类型展开分组双击 CAD 文件名会弹出选择框勾选 polygon 后确定。右键该图层走“数据 → 导出数据”图层名写“规划范围”导出成 shp。这里最关键的是坐标系下拉框如果数据框当前是地理坐标系比如 WGS84导出的 shp 也会是地理坐标系后面做欧式距离算出来的单位是度而不是米500 米的距离缓冲会被算成 500 度结果整张图都是 NoData。正确做法是先把数据框坐标系设成投影坐标系国内常用 CGCS2000 3 度带或 UTM 带号投影再导出。import arcpy # 规划范围 shp 所在目录作为工作空间 arcpy.env.workspace rD:\land_eval # 用规划范围自身定义数据框坐标系避免地理坐标系带来的距离单位问题 sr arcpy.Describe(rD:\land_eval\规划范围.shp).spatialReference arcpy.env.outputCoordinateSystem sr # 把 CAD 里的 polygon 导出为 shp如已在 ArcGIS 中完成可跳过 arcpy.CADToGeodatabase_conversion( rD:\land_eval\规划范围.dwg, rD:\land_eval\land.gdb, plan_area, 1, sr )上面的脚本把坐标系从原始数据里显式取出来并写进环境变量等价于在界面上手动选一次数据框坐标系好处是批量处理时不会漏。CADToGeodatabase_conversion的第四个参数控制引用比例填 1 表示按原图比例如果是带外部参照的图纸可以改小一些。日常单次操作直接走界面导出就行这段代码的意义在于把“坐标系必须继承规划范围”这件事固定下来。2.3 处理范围的三个设置入口处理范围在 ArcGIS 里有三个地方可以设作用层级不一样很多人只设了其中一个就开始跑工具这是结果错位的主要来源。入口位置操作路径生效范围地理处理菜单地理处理 → 环境 → 处理范围当前地图文档的全局默认ArcToolbox 节点右键 ArcToolbox → 环境 → 处理范围工具箱内所有工具的默认值单个工具对话框工具窗口内点“环境”按钮仅本次运行实操里稳妥的做法是前两处都设成“与图层 规划范围 相同”第三处留空继承。这样从 ArcToolbox 里拖出来的每一个工具都会自动把输出裁到规划范围TIN、DEM、坡度、距离栅格的行列数完全一致进栅格计算器时不会出现范围不匹配的报错。环境设置里还有一项“栅格分析 → 像元大小”建议一起设成固定值如 5否则各工具按输入自动推算同一批数据可能生成两种分辨率。3. 等高线到 DEMTIN 建面、栅格化与坡度提取规划范围锁定之后高程这条链要连起来CAD 多段线里的等高线要筛出来经 TIN 插值成连续地形面再栅格化成 DEM最后才能算坡度。每一步都有一个决定结果正确性的参数。3.1 从 CAD polyline 中筛选等高线再次加载 CAD 文件时选 polyline点确定后打开属性表用“按属性选择”构造表达式。原文档里用的是elevation 0这个思路是对的但要留意 CAD 字段名的实际拼写常见的有Elevation、Cad_Elevation有些版本导进来还会变成字符串类型。字段是文本时比较0才会出结果或者干脆新建一个双精度字段再迁移数据。筛选出的等高线右键“数据 → 导出数据”命名denggaoxian加载回视图。这一步保留下来的应该是纯等高线如果里面有零星几个高程异常点比如高程值 9999 的注记块后面 TIN 会出现尖刺最好一并排除。3.2 创建 TIN 与 height field 的指定走 3D Analyst → 工具 → TIN 管理 → 创建 TIN输入要素选denggaoxian关键是 height field 一栏必须选elevation。这一栏如果留空TIN 会把所有节点的高度当成 0 处理生成一个平面接下来算出来的坡度全是 0而且不报任何错是新手最难排查的一类问题。TIN 相比直接用等高线栅格化的优势在于三角面插值能反映等高线之间的地形起伏坡度过渡更自然尤其在等高距较大5 米以上时差别明显。# 创建 TINheight field 固定为 elevation arcpy.CreateTin_3d( out_tinrD:\land_eval\dem_tin, spatial_referencerD:\land_eval\规划范围.shp, in_featuresrD:\land_eval\denggaoxian.shp elevation masspoints, constrained_delaunayDELAUNAY )in_features参数的格式是“要素类 高度字段 要素类型”三段式中间用空格分隔masspoints表示按高程点插值也可以换成hardline表示硬断线。constrained_delaunay选 DELAUNAY 是最常见的约束三角剖分方式边缘会贴合数据凸包范围外的空白由后面的处理范围裁掉。3.3 TIN 转栅格与 cellsize 的取舍3D Analyst → 工具 → 转换 → 由 TIN 转出 → TIN 转栅格设置栅格大小。原文档那句“栅格大精度小栅格小精度大”说得很直白但具体填多少要看规划尺度和等高距。cellsize适用尺度数据量级备注1 m地块、小区级极大等高距 1 m 以上才有意义2–5 m城市片区中课程设计常用出图清晰10 m市域小细节损失明显30 m区域尺度很小接近公开 DEM 分辨率像元数量按面积除以 cellsize 的平方增长cellsize 从 5 降到 1数据量涨 25 倍。选值的原则是让 cellsize 与原始等高距匹配——5 米等高距的地形图用 2 米栅格并不能凭空造出细节。这个值和后面欧式距离的输出像元大小要保持一致。3.4 坡度提取与输出单位3D Analyst → 工具 → 栅格表面 → 坡度输入 DEM输出slope输出测量单位选 DEGREE。z_factor 一般保持 1前提是 DEM 的高程单位和平面单位都是米如果平面坐标系是度而高程是米需要把 z_factor 设为约 111320每度的米数来补偿。算完打开属性表看一眼最大值正常不该超过 90如果出现 89.9 这类极值多半是 TIN 边缘的插值尖刺可以用焦点统计做个 3×3 均值平滑再重分类。# 从 DEM 提取坡度单位为度 arcpy.Slope_3d( in_rasterrD:\land_eval\dem, out_rasterrD:\land_eval\slope, output_measurementDEGREE, z_factor1 )output_measurement还可以选 PERCENT_RISE百分比坡度两者在重分类阈值上不能混用10° 约等于 17.6% 的百分比坡度写阈值前先确认自己在用哪套单位。4. 洪水淹没与干道距离重分类评分与叠加三个因子的原始值域完全不同坡度是角度DEM 是高程欧式距离是米直接加权没有可比性。重分类这一步的核心任务就是把它们统一映射到 1、2、3 三档适宜性评分上尺度和量纲在此时对齐。4.1 坡度重分类10° 与 25° 两个断点原文档在符号系统里把类别设为 3 类中断值填 10 和 25这两个阈值在规划领域比较通用小于 10° 基本不受坡度限制10°–25° 需要工程措施大于 25° 通常按水土保持要求不安排建设用地。# 坡度重分类0-10 得 3 分10-25 得 2 分25 以上得 1 分 arcpy.Reclassify_3d( in_rasterrD:\land_eval\slope, reclass_fieldVALUE, remap0 10 3;10 25 2;25 90 1, out_rasterrD:\land_eval\slope_r, missing_valuesDATA )remap参数用分号分隔区间每段写成“起始值 终止值 新值”。ArcGIS 的区间是左闭右开恰好等于 10 的像元会被归到第二档如果业务上要求 10° 算最适宜就把断点写成 10.001 或者在重分类前对栅格做一次四舍五入。missing_values选 DATA 表示 NoData 保留选 NODATA 会把空白区也赋值除非是纯色底图否则保持 DATA。4.2 洪水淹没重分类与高程基准洪水淹没的输入不是坡度而是 DEM 本身因为它比较的是绝对高程。假设查到 20 年一遇洪水位 60 米100 年一遇 70 米评分对应关系如下。洪水情景高程区间评分适宜性含义20 年一遇 60 m1不适宜50 年一遇60–70 m2较适宜100 年一遇以上 70 m3最适宜重分类表达式写0 60 1;60 70 2;70 200 3生成dem_r。这里最容易被忽略的是高程基准一致性DEM 通常是 1985 国家高程基准而洪水位资料如果来自地方水文站可能用的是地方高程系两者差几米很正常差 3 米就足以让一整片区域的评分翻转。拿到资料先核对基准说明不确定时宁可少取一个情景值也别硬套。4.3 干道欧式距离像元大小必须对齐先在 CAD 里把快速路、主干道、次干道写成一个块“干道.dwg”导入时选 polyline加载后走 Spatial Analyst → 距离分析 → 欧式距离输入干道.dwgPolyline输出命名road输出像元大小填得和 DEM 一致。# 计算到干道的欧式距离像元大小与 DEM 保持一致 arcpy.EucDistance_sa( in_source_datarD:\land_eval\干道.shp, out_distance_rasterrD:\land_eval\road, cell_size5, maximum_distanceNone )cell_size留空时工具会按输入要素范围自动推算很容易生成一个 3.7 米或 6.2 米这类不规则值和 DEM 叠加时被最粗的那个重采样精度白白损失。距离算完再重分类500 米以内 3 分500–1500 米 2 分1500 米以上 1 分输出road_r。4.4 栅格计算器加权叠加Spatial Analyst → 地图代数 → 栅格计算器权重按“生态限制要素高于引导要素”的原则给坡度 0.35、洪水 0.35、交通 0.3 是比较常见的分法如果只做两个生态要素就按 0.5/0.5 或者 0.6/0.4。# 加权叠加输出值域 1-3 arcpy.gp.RasterCalculator_sa( slope_r * 0.35 dem_r * 0.35 road_r * 0.3, rD:\land_eval\suitability )表达式里每个栅格名必须加双引号不加会被当成 Python 变量解析并报错。权重之和应等于 1可以用浮点也可以写百分数但同一张表达式里不要混用。输出结果是连续浮点值按需要再用重分类归成三档方便出图和统计面积。5. 结果校验、页面设置与导出参数叠加完成不等于可以出图先做两件事确认值域落在预期区间内确认空间上没有因 NoData 造成的裂缝。5.1 三个校验点打开叠加结果的属性表看最小值和最大值是否落在 1 到 3 之间如果出现 0 或 3.5说明某一路重分类的断点漏了区间。再用“按属性选择”分别统计评分 1、2、3 的像元数换算成面积和总规划面积的比例最适宜地块占比超过 70% 通常意味着阈值太松。最后把图层符号设成空心或半透明叠在规划范围上看边缘有没有锯齿状缺块那是处理范围没有完全覆盖造成的把规划范围 shp 往外做 1 个像元的缓冲再重跑一遍即可。5.2 页面设置与数据框锁定出图前走“文件 → 页面和打印设置”把“使用打印机纸张设置”的勾去掉手工输入宽度和高度比如 A4 横版填 297 和 210。切到布局视图后点视图左下角第二个图标进入出图模式用黑色粗箭头选中数据框右键“属性”在“数据框”页里选“固定比例”填好比例尺分母。接着在“要素的轮廓”里选图框——图框 shp 的来源和规划范围一致也是从 CAD 的图框块导出属性里设 X0、Y0宽度和高度与页面尺寸完全一致这样图形和页面严丝合缝不会出现白边。5.3 导出 jpg 的参数与常见翻车点走“文件 → 导出地图”格式选 jpgdpi 一般填 200 或 300。dpi 只影响像素密度不改变版面尺寸300 dpi 的 A4 大约是 3508×2480 像素用于课程报告打印足够。三个高频问题数据框仍是地理坐标系时比例尺失真图上标注的 1:10000 对不上实际距离图框 shp 和数据框范围不一致时四周留白需要用“固定比例”配合范围裁剪导出前忘了切换出图模式导出来是数据视图的截图图例和比例尺全丢。把这三处核对一遍从 CAD 规划范围到最终适宜性分级图的链路就是闭合的。本文还有配套的精品资源点击获取