# Landslide_Analysis **Repository Path**: xushiluo/Landslide_Analysis ## Basic Information - **Project Name**: Landslide_Analysis - **Description**: 适用于ArcGIS Pro的滑坡灾害敏感性制图Python工具 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 10 - **Created**: 2018-04-25 - **Last Updated**: 2025-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: 滑坡研究 ## README # 本插件为滑坡灾害敏感性制图工具。包含因子提取-危险性概率评估-危险性等级区划。 本插件已经在ArcGIS Pro 2.1.2和ArcMap 10.8上测试通过。 # 一、系统环境 - Windows 10 64bit 22H2 (19045.3930) - ArcMap 10.8 (自带ArcPy) - **Python 2.7.16** (ArcMap自带) - Numpy 1.9.3 (ArcMap自带) - matplotlib 1.5.2(ArcMap自带) - scipy 0.17.0(ArcMap自带) # 二、其他依赖包 ## 2.1 依赖包列表 **ArcMap 10.8的Python版本为2.7.16,因此需要安装老版本的包**。除了系统环境中列举的自带包之外,本插件依赖的其他Python软件包: - scikit-learn==0.17 - pandas==0.18.1 - jenkspy==0.1.3 (用于自然断点法,轻量级,建议使用) - mapclassify==1.0.1 (也是用于自然断点法,和上面的jenkspy二选一即可) ## 2.2 安装依赖包 首先确认ArcMap自带的python的安装目录,默认是在`C:\Python27\ArcGIS10.8`。 打开windows 10的命令提示符,进入`C:\Python27\ArcGIS10.8\Scripts`文件夹中,执行pip命令。 例如:`pip install mapclassify==1.0.1` # 三、工具箱 ## 3.1 拷贝工具箱 (1)将本项目源码克隆到本地,也可以直接下载zip包源码。本项目地址为:https://gitee.com/xushiluo/Landslide_Analysis.git (2)假设源码克隆到了`C:\tmp\Landslide_Analysis`,那么将该目录加入到ArcMap的连接文件夹中。 ![image-20241209090114826](./doc_pics/P01连接源码文件夹.png) - 工具箱中,**LandslideAnalysisTools106.tbx**为ArcMap使用的工具箱; - **Luoge并行化工具箱108_ANSI.pyt**是给ArcMap使用的并行化工具箱,可以充分利用CPU多核的计算功能。如对大的要素类执行要素转栅格。 - **LandslideAnalysisTools_4Pro.tbx**为ArcGIS Pro使用的工具箱。 ## 3.2 工具源码路径 ### 1. 提取步骤LsaSteps 每个步骤对应的工具源码在**LsaSteps**文件夹中,工具与源码的对应关系如下: | 工具 | 源码 | | --------------| ---------------------------------------- | | S2-选择NULL点 | S2_select_null_fc_gbk.py | | S3-2提取当前栅格图层因子(栅格单元) | S3_2_currentRaster2Points_rasterUnits.py | | S3-提取因子(斜坡单元) | S3_multiRasters2Points_slopeUnits.py | | S4-表转csv (斜坡单元) | S4_table2csv_slopeUnits.py | | S4-表转csv(栅格单元) | S4_table2csv_rasterUnits.py | | S5-SVM或LR模型分类 | S5_SVM_LR_predictor.py | | S6-结果链接与栅格化 | S6_joinCSVandRasterization_gbk.py | | S7-危险性等级划分 | S7_LsaRasterReclass.py | ### 2. 实用工具Utils 实用工具对应的源码在**Utils**文件夹中,工具与源码的对应关系如下: | 工具 | 源码 | | --------------| ---------------------------------------- | | Util导出因子统计类型(斜坡单元) | util_export_factor_names.py | | Util滑坡面转标签图层 | util_landslidePolygon2Raster_gbk.py| | Util批量删除(表) | util_batch_del_table.py | | Util批量删除(要素类) | util_batch_del_featrueClass.py | | Util批量删除字段(以某字符串开始) | util_batch_del_fields.py | # 四、工具箱使用 ## 1. S3-2提取当前栅格图层因子(栅格单元) 该工具的功能是将**单个栅格因子图层**提取至**栅格单元**。该工具一次只能提取一个栅格图层上的数据。 - **单元要素**是点要素; - **当前栅格因子**为栅格图层。 - **删除已存在字段**指示是否删除点要素中的已有字段。如果不勾选,则会保留点要素类中的原来字段。 ![image-20241209093219585](.\doc_pics\P02-S3-2.png) ## S4-表转CSV(栅格单元) 该工具将点要素的属性表导出为csv文件。 - 单元要素:点要素类 - 选择字段(可选):当前单元要素里面的字段,被选中的字段将被导出。如果未选中任何字段,则导出所有字段。 - 输出CSV路径(可选):输出csv文件的完整路径。如果为空,则输出至当前文件夹。 - 输出CSV的编码(可选):默认为gb2312,也可以设置为utf-8. ![image-20241209102213968](.\doc_pics\P02-S4-表转csv(栅格单元).png) ### 1.1 约束条件: - 静态的因子图层(不同年份保持不变的因子),存放在地理数据库中,文件名以**Factor_**开头。 ![Factor因子图层](./doc_pics/04Factor因子.png) - 土地利用因子图层,存放在地理数据库中,文件名以**LU_年份**的形式开头,年份为4位数字。,例如2003年的土地利用因子图层,文件名应该为**LU_2003** ![05土地利用因子](./doc_pics/05土地利用因子.png) - 降雨因子文件命名形式为:**Rain_年份**,其中年份为4位数字。例如Rain_2003,表示2003年的降雨因子图层 ![06降雨因子](./doc_pics/06降雨因子.png) - 土地利用变化因子命名形式为:**Change起始年份_结束年份**,其中年份为4位数字。例如Change2001_2003,表示从2001年至2003年的土地利用变化 ![07土地利用变化因子](./doc_pics/07土地利用变化因子.png) - 植被覆盖文件命名形式为:**Veg_年份**,其中年份为4位数字。例如Veg_2003,表示2003年的植被覆盖情况因子图层 - 道路缓冲区文件命名形式为:**RoadBuffer_年份**,其中年份为4位数字。例如RoadBuffer_2003,表示2003年的道路缓冲区因子图层。 - 标签列:标签列用于指示当前位置是否为滑坡,其命名方式为:**y_isLandslide_年份**,其中年份为4位数字 ### 1.2 参数说明: - 单元要素:单元要素可以为斜坡单元或者是栅格单元。当为斜坡单元时,该参数一般为面矢量;当为栅格单元时,该参数一般为点矢量; - 年份:当前数据的年份。如果只评估单个年份的滑坡灾害,该参数填入正确的年份即可。若是实时间序列滑坡灾害评估,请**务必**输入正确的年份。 - 删除已经存在的字段:默认是选中状态。选中时,提取因子之前先清除所有已经存在的字段(ObjectID和shape字段除外)。 ### 1.3 输出 输出结果仍然为【单元要素】本身。即将各个因子图层的值提取至了【单元要素】的属性表。每个因子图层为一个字段。 ## 2. S4表转csv **功能**:将要素类的属性表转为csv文件保存 ### 2.1 约束条件 单元要素为S3提取因子中的对应要素。也就是提取因子到要素类后的结果。 ### 2.2 参数说明 - 单元要素:单元要素可以为斜坡单元或者是栅格单元。当为斜坡单元时,该参数一般为面矢量;当为栅格单元时,该参数一般为点矢量。这里单元要素是将因子提取至要素后的结果。包含了各个影响因子和对应的y标签列表。 - 年份:当前数据的年份。如果只评估单个年份的滑坡灾害,该参数填入正确的年份即可。若是实时间序列滑坡灾害评估,请**务必**输入正确的年份。 - 选择字段(可选):需要保存至csv文件的字段列表。如果为空,则将所有字段保存至csv文件。如果不为空,则保存已经选择的字段列表至csv文件。 - 输出csv路径:csv文件的保存路径。最好**不要包含中文字符**。 ### 2.3 输出 输出结果为csv文件。 ## 3. S5危险性评估 ### 3.1 约束条件 csv文件中应该包含有ID列(后期用于连接至处理单元要素)、因子列(一般有多个因子)、标签列(一般为一列,指示当前对象位置是否为滑坡)。 ### 3.2 参数说明 - csv数据:S4表转csv的结果,即要参与到危险性预测的因子和标签数据。注意路径不要包含中文字符。 - 年份:当前数据的年份。如果只评估单个年份的滑坡灾害,该参数填入正确的年份即可。若是实时间序列滑坡灾害评估,请**务必**输入正确的年份。 - GeoID列:默认值为OBJECTID,用于标识每个处理单元。后期用于与要素连接(join),必须。 - 标签列前缀:y标签列前缀,一般为:**y_isLandslide_**,用于标识处理单元对象处是否为滑坡。滑坡为1,非滑坡为0 - 数据版本:用于方便区分数据结果版本。如果不需要区分,可以随意填写。 - 分类器:用于危险性评估的分类器,目前有logistic和svm两种 - 单元类型:raster或者slope,分为表示栅格单元或者斜坡单元。 - 是否绘制ROC:是否绘制ROC曲线图。依赖于Matplotlib库。 - 测试数据比例:危险性评估会将数据划分为训练数据集和测试数据集。该参数表示测试数据集所占的比例。默认为0.3,即30%的数据用于测试模型。 ### 3.3 输出 输出结果为一个csv文件,其中一般包含有`"# GeoID"`、`Predicted_Y`、`Prob_年份` 三列。其中第一列为ID列,后期用于连接到单元要素类的ID。第二列为预测结果标签,第三列为预测的概率值,第三列一般用于显示结果。 ## 4. S6结果链接与栅格化 1. 将预测的结果(csv文件)与处理单元要素连接(Join)起来。 2. 并将连接后的单元要素栅格化,栅格化使用概率字段`Prob_年份`作为值字段。 3. 最终结果是一个栅格图层,概率值越高,表明滑坡发生的危险越大。概率值越小,表明滑坡发生的危险性越小。 ### 4.1 约束条件 预测/评估结果(csv文件)中的ID列要与**单元要素**中的ID列(一般为OBJECTID)能够一一对应起来,才能将两者连接(Join)起来。 ### 4.2 参数说明 - 处理单元:单元要素可以为斜坡单元或者是栅格单元。当为斜坡单元时,该参数一般为面矢量;当为栅格单元时,该参数一般为点矢量。这里单元要素是将因子提取至要素后的结果。包含了各个影响因子和对应的y标签列表。 - 年份:当前数据的年份。如果只评估单个年份的滑坡灾害,该参数填入正确的年份即可。若是实时间序列滑坡灾害评估,请**务必**输入正确的年份。 - 连接源字段(处理单元):单元要素中的ID列名称,默认为:**OBJECTID** - 连接目标字段(预测结果csv):预测的csv结果中ID列名称,默认为:**# GeoID** - 预测结果(csv):即**S5危险性评估**步骤中输出的预测结果(csv文件)完整路径。路径不要包含中文字符。 - 像素大小:一般和**单元要素**生成时的像素大小一致,默认值为:**90**,单位为米。 ### 4.3 输出 输出结果为一个栅格图层。栅格值为滑坡危险性的概率。概率值越高,表明滑坡发生的危险越大。概率值越小,表明滑坡发生的危险性越小。 > 该结果后期可以用于危险性区划,例如使用自然断点法将区域划分为5个等级。