洪水是最频繁和代价最大的自然灾害之一。 传统上的洪水测绘是通过当地的航空观测或地面勘测来完成的。 然而,当洪水泛滥时,这些方法变得极其昂贵和耗时。 此外,恶劣的天气条件会导致空中观测很难实现或不可能实现。 在洪水事件期间,厚厚的云层也可能妨碍使用光学卫星图像进行可视化和分析。 在这种情况下,合成孔径雷达卫星图像很有价值,因为它可以穿透云层和雾蒙蒙的大气条件,从而能够对洪水进行连续观察和绘图。
2019 年 6 月初,被称为 2019 年大洪水的严重洪水影响了美国中西部多个州的 1400 万人。 密苏里州的圣路易斯地区经历了严重的洪水。 作为灾害管理地区机构的影像分析师,您的任务是在 ArcGIS Pro 中使用预训练的深度学习模型和 Sentinel-1 SAR 影像绘制洪水地图。
要求
- ArcGIS Pro Advance
- ArcGIS Image Analyst
- ArcGIS Pro 的深度学习库
- 推荐:至少具有 4GB 专用内存的 NVIDIA GPU。
使用 SAR 数据和深度学习绘制洪水地图
为了进行这种分析,您将首先使用深度学习预训练模型提取洪水前后 Sentinel-1 SAR 影像中表示水的像素。 然后,在两个提取的水域栅格之间执行变化检测,以识别淹没区域。 最后,您将计算受洪水影响的总表面积,单位为平方公里。
设置工程并浏览数据
1、在计算机上找到已下载的文件。双击 Flood_mapping.ppkx 以将其在 ArcGIS Pro 中打开。
工程随即打开。

该项目包含四幅地图:比较 SAR 影像 、洪水后 、洪水前 和变化检测。 现在,您将在第一张地图中工作。
2、确保选择了比较 SAR 影像地图

该地图包含两幅合成孔径雷达 (SAR) 卫星图像,Pre_Flood_SAR_Composite 和 Post_Flood_SAR_Composite ,描绘了圣路易斯 2019 年洪水前后的感兴趣区域。 目前,只有洪水前图层可见,显示在默认的世界地形底图上。 黑色或深灰色调表示水域,清楚地描绘了密西西比河、伊利诺伊河和密苏里河。

带 SAR 传感器的卫星会根据雷达技术生成影像。 SAR 的优势之一为可以生成清晰的日间和夜间影像,无论是否存在云层、烟雾或雨。 这使得 SAR 影像成为绘制洪水地图的一个非常好的选择。
注:对原始 Sentinel-1 GRD 数据集应用了一些预处理步骤,为分析做准备,包括创建图像合成。 要了解如何获取自己感兴趣区域的 Sentinel-1 GRD 数据集以及如何准备这些数据集,请参考本教程的第二个模块,将工作流应用于感兴趣区域。
视觉上,您将使用卷帘工具以比较两个图像。
3、在内容 窗格中,单击 Pre_Flood_SAR_Composite 图层以将其选中。

4、功能区上,单击栅格图层 选项卡。 在比较 组中,单击卷帘。

5、在地图上,从上到下拖动光标以剥离 Pre_Flood_SAR_Composite 图层并显示下方 Post_Flood_SAR_Composite 图层。

在洪水后的影像中,有更多被水覆盖的区域,以黑色调出现。
相比之下,洪灾后时期的光学卫星图像 (Sentinel-2) 由于天气条件的原因呈现出厚厚的云层,无法用于探测地面上的洪灾区。

洪水后的 Sentinel-2 光学影像呈现出厚厚的云层。
6、在地图上,使用鼠标滚轮放大和缩小,并继续滑动以更详细地查看 SAR 影像。
提示:如果需要在使用卷帘工具时移动地图,可按下 C 键并拖动地图。
7、要退出滑动模式,在功能区中,单击地图 选项卡,然后在导航 组中,单击浏览。

下载深度学习预训练模型
为了提取 SAR 图像中表示水的像素,您将使用一个名为水体提取 (SAR) - 美国 的深度学习预训练模型。 它被训练来检测 SAR 图像中的水像素,并可通过 ArcGIS Living Atlas of the World 使用。 您将模型下载到您的计算机。
将下载的dlpk模型移到纯英文路径。
提取水像素
现在,您将使用下载的预训练模型从洪水前的图像中提取水像素。 您将使用使用深度学习分类像素地理处理工具工具。
注:在 ArcGIS Pro 中使用深度学习工具需要在计算机上安装正确的深度学习库。 如果您未安装这些文件,请保存工程,关闭 ArcGIS Pro,然后按照在ArcGIS Pro中为深度学习做好准备中提供的步骤说明操作。 在这些说明中,您还可以了解如何检查您的计算机硬件和软件能否运行深度学习工作流,以及获取其他有用的提示。 完成后,您可以重新打开工程并继续本教程。
您将在第二个地图中执行水像素提取。
1、单击洪水前地图选项卡。

此地图包含 Pre_Flood_SAR_Composite 图层。 使用使用深度学习分类像素处理整个 SAR 图像可能需要 40 分钟到 4 小时,具体取决于您的计算机规格。 为使本教程尽可能简洁,您将只处理图像的一小部分。
2、在功能区地图 选项卡的导航 组中,单击书签 ,然后选择 Smaller extent。

地图向 SAR 图像的中心缩小。

现在,您将打开工具并选择其参数。
3、在功能区视图 选项卡的窗口 组中,单击地理处理。

4、在地理处理 窗格的搜索框中,输入使用深度学习分类像素。 在结果列表中,单击使用深度学习分类像素将其打开。

5、在使用深度学习分类像素中,设置以下参数:
-
- 对于输入栅格 ,选择 Pre_Flood_SAR_Composite。
- 对于输出栅格数据集,输入 Pre_Flood_Water_Small_Extent。

现在您将恢复下载水体提取 (SAR) - 美国模型。
6、在模型定义 参数旁边,单击浏览按钮。

7、在模型定义 窗口中,浏览至已保存模型的文件夹,选择 WaterbodyExtractionSAR_USA.dlpk ,然后单击确定。

几分钟后,模型参数将自动加载。
8、在参数 下找到 batch_size 参数。
无法一次性对整个图像执行深度学习像素分类。 该工具会改为将图像切割成名为"切片"的小块。 批量大小为 4 意味着该工具将一次处理四个图像切片。 在运行该工具时,您可能会收到内存不足的错误提示,因为您的电脑没有足够的内存来进行该级别的处理。 在这种情况下,请尝试将 batch_size 值从 4 降至 2,或者甚至降至 1。 如果您拥有一台功能强大的计算机,您也可以增大 batch_size 值以加快处理速度。 更改 batch_size 值将不会影响结果的质量,仅会影响模型分类过程的效率。
现在,您将保留默认值为 4。
9、在参数 下,对于 test_time_augmentation,键入 True。
如果此参数设置为 True,将应用数据参数:通过翻转和旋转图像芯片来创建多个版本的图像芯片,并将生成的预测合并到最终输出中。

注:有关模型参数的更多信息,请参考使用深度学习分类像素文档。
现在,您将在环境参数中指定处理范围,以将其限制在当前显示在地图上的影像的较小部分。
10、单击环境选项卡。

11、在范围 下,单击当前显示范围按钮。

基于地图的当前范围,顶部 、左侧 、右侧 和底部参数中的范围坐标会更新。
12、在处理器类型 下面,选择 GPU 。 对于 GPU ID,输入 0。
注:本教程假定您的计算机具有 NVIDIA GPU。 如果没有,选择 CPU,但是要意识到这个过程运行的时间要长得多。 要了解有关 GPU 以及它们如何用于深度学习过程的更多信息,请参见 ArcGIS Pro教程为深度学习做好准备中的检查 GPU 可用性一节。

您现在已经准备好运行该工具了。
警告:根据您的计算机规格,此过程将需要一些时间。 作为参考,在配有 4 GB Nvidia GPU 的电脑上,大概需要 7 分钟。
如果不想运行此过程以节省时间,可以打开工程中提供的输出栅格。 在目录 窗格中,浏览至数据库 和 Flood_mapping.gdb 。 右键单击 Pre_Flood_Water_Small_Extent_Provide 并选择添加至当前地图。
13、如果您选择自行运行该过程,请单击运行 。工具处理过程中,您可以单击查看详细信息了解更多信息。

提示:如果出现错误,请尝试将 batch_size 值从 4 减小到 2 甚至 1,然后重新运行程序。
该过程完成后,Pre_Flood_Water_Small_Extent 输出栅格将出现在内容窗格中。
14、在快速访问 工具栏中,单击保存工程按钮以保存您的工程。

您使用使用深度学习分类像素 工具和水体提取 (SAR) - 美国预训练模型从圣路易斯地区的洪水前影像中提取了水体像素。 然后,观察结果。
观察水栅格输出
您将使用卷帘工具来比较洪水前的水域栅格和 SAR 图像。
1、在内容 窗格中,确保选择 Pre_Flood_Water_Small_Extent 图层。

2、在功能区的栅格图层 选项卡中,单击卷帘。

3、在地图上,从上到下拖动以剥离 Pre_Flood_Water_Small_Extent 图层并显示下方 Pre_Flood_SAR_Composite 图层。

滑动时,观察提取的水域像素(显示为紫色)如何与 SAR 图像的较暗区域相匹配。 由于这是洪水前的 SAR 图像,这些像素对应于永久水体,如河流和湖泊。
接下来,您需要按照相同的步骤从洪水后的 SAR 图像中提取水域像素。 但是,为了使本教程尽可能简洁,这一步已经为您完成了。 现在,您将检查输出。
4、单击洪水后地图选项卡。

该地图包含洪水后的 SAR 图像和从该图像中提取的水域栅格,其范围与之前使用的范围相同,但范围较小。
5、在内容 窗格中,选择 Post_Flood_Water_Small_Extent 图层。

6、在地图上,从上到下拖动以剥离 Post_Flood_Water 图层并显示下方 Post_Flood_SAR_Composite 图层。

滑动时,观察提取的水域像素(显示为紫色)如何与 SAR 图像的较暗区域相匹配。 由于这是洪水后的 SAR 图像,这些像素对应于永久水体,如河流和湖泊,而且还包括因洪水而被水覆盖的地区。
7、要退出滑动模式,在功能区中,单击地图 选项卡,单击浏览。

现在,您已经从洪水前后的图像中提取了水体像素,下一步是了解两者之间发生了什么变化。
执行变更检测分析
要识别淹没区域,您需要执行变化检测分析,比较淹没前后的栅格数据。 想找到从非水到水域的像素。 您将在第四个地图中使用变化检测向导来完成此操作。
1、单击变化检测映射选项卡。

该地图包含从 SAR 图像中提取的洪水前和洪水后的栅格数据。

注:这些较大的栅格是使用使用深度学习分类像素工具生成的,使用的参数与之前使用的参数相同,但范围参数除外,该参数被定义为输入的交集。

您将在更大的范围内进行变化检测分析。 但是首先您需要执行一个预处理步骤。 从使用深度学习分类像素工具获得的水栅格仅包含单个类,值为 1,表示水像素。

但是,运行变化检测分析需要二进制栅格。 二元栅格将有两个类:0 表示非水像素,1 表示水像素。 您将使用等于工具生成这些二进制栅格。
2、在地理处理 窗格中,单击后退按钮两次。

3、搜索并打开等于工具。

首先将该工具应用于洪水前栅格。
4、在等于工具中,设置以下参数:
-
- 对于输入栅格或常量值 1 ,选择 Pre_Flood_Water。
- 对于输入栅格数据或常量值 2,输入 1。
- 对于输出栅格,输入 Pre_Flood_Binary。

对于每个像素,如果输入栅格或常量值 1 等于输入栅格或常量值 2 ,则工具将返回 1 ,否则返回 0。
5、单击运行。几分钟之后,二进制栅格将添加到地图中。

二进制栅格有两个类:0、用灰色符号化(非水)、1、用红色符号化(水)。

6、同样,使用等于 工具生成 Post_Flood_Binary 栅格。

运行该工具后,洪水后二进制栅格将添加到地图中。

您将执行变更检测分析。
7、在功能区影像 选项卡的分析 组中,单击变化检测 ,然后选择变化检测向导。

8、在变化检测向导 窗格的配置选项卡中,设置以下参数:
-
- 对于变化检测方法 ,选择分类变化。
- 对于自栅格 ,选择 Pre_Flood_Binary。
- 对于至栅格 ,选择 Pre_Flood_Binary。
二进制栅格值表示类别(水或非水),这就是您选择分类变化选项的原因。
注:了解有关分类变化检测的更多信息。

注:如果您收到一个未找到标准"Red"、"Blue"、"Green"字段的警告,可以忽略它。
9、单击下一步。
10、在类配置选项卡上,设置以下参数:
-
- 对于过滤方法 ,确认已选择仅已变化。
- 对于从类 ,选中 0 旁边的框。
- 对于至类 ,选中 1 旁边的框。
将只检测从非水 (0 ) 到水 (1) 的像素。 这些像素代表被淹没的区域。

11、单击下一步。
12、在输出生成选项卡中,设置以下参数:
-
- 对于输出数据集,输入 Flood.crf。
- 接受其他默认值。

13、单击运行 。几分钟之后,Flood.crf 输出栅格将添加到地图中。 它有两个像素类:
-
- 0->1,表示从非水到水的像素,对应被淹没的区域。 它以粉红色作为象征。
- 其他 ,表示任何其他像素。 它被符号化为无色(透明)。

想象洪水并计算其面积
您将更改符号系统以更好地查看结果,然后计算受洪水影响的总表面积。
1、在内容 窗格中的 Flood.crf 下,右键单击符号 0->1 以显示调色板。 选择深红色,比如一品红。

2、取消选中 Post_Flood_Binary 、Pre_Flood_Binary 和 Post_Flood_Water 图层旁边的复选框以将其关闭。

3、右键单击 Pre_Flood_Water 符号并选择深蓝色,例如克里特蓝。

4、在地图上,提取的洪水图层显示为红色,作为参考,洪水前的水体显示为蓝色。

最后,您想计算被洪水覆盖的表面积,单位为平方公里。
5、在内容 窗格中,右键单击 Flood.crf 图层并选择属性表。

Flood.crf 属性表随即出现。 它包含两行,每个类一行:0->1 (整体像素)和其他 (其他像素)。 Area 栏包含了每个类的总面积(以平方米为单位)。 对于洪水等级,为 524,619,200.703 平方米。

注:由于深度学习分类不是一个确定性的过程,所以您获得的区域数可能会略有不同。
以平方米为单位的值可能很难解释,因此您将添加一个新字段来显示以平方公里为单位的面积。
6、在属性表窗格中,单击计算按钮。

7、在计算字段窗口中,设置以下参数:
-
- 对于字段名称(现有或新建),输入 Area_km2。
- 对于字段类型 ,选择双精度型(64 位浮点型)。

平方公里的面积是以平方米为单位的面积除以 1,000,000。 您将形成相应的表达式。
8、在表达式 下方,对于字段 ,双击 Area 。 在 Area_km2 = 下,通过输入 /1000000 来完成表达式。
完整的表达式为 !Area! / 1000000。

9、单击运行 。将出现一个新的 Area_km2 字段,其中填充了值。 洪水淹没的面积约为 525 平方公里。

10、关闭 Flood.crf 属性表。

11、按 Ctrl+S 以保存工程。
在该工作流程中,您首先使用了深度学习预训练模型提取洪水前后 Sentinel-1 SAR 影像中表示水的像素。 然后,在两个提取的水域栅格之间执行了变化检测,以识别淹没区域。 最后,您计算出在 2019 年中西部洪水期间,圣路易斯地区有 525 平方公里的区域被淹没。
下载 Sentinel-1 GRD 示范数据
一旦您获取了感兴趣区域的数据,您需要对其应用一些预处理步骤,以便为分析做好准备。 为了实践,您将下载一个 Sentinel-1 GRD 示例数据集,并在您的 ArcGIS Pro 工程中打开它。 这是用于导出本教程前面使用的 Post_Flood_SAR_Composite 图层的数据集。
1、下载 Data_preparation.zip 文件并在计算机上定位该文件。
2、在 Windows 资源管理器中,右键单击 Data_preparation.zip 文件,并使用 7-Zip 等工具将其解压到您计算机上,如 C:\data 驱动。

3、在 ArcGIS Pro 的功能区的视图 选项卡中的 Windows 群组中 ,单击目录窗格。

随即显示目录窗格。
4、在目录 窗格中,右键单击文件夹 ,然后选择添加文件夹连接。

5、在添加文件夹连接 窗口中,浏览到 Data_preparation 文件夹的位置,选中,然后单击确定。

现在,您将在新地图中打开 Sentinel-1 GRD 影像。
6、在目录 窗格中,单击文件夹 旁的箭头,Data_preparation 、Sentinel1 和 S1A_IW_GRDH_1SDV_20190611T235618_20190611T235643_027639_031E97_AC44.SAFE 以将这些文件夹展开。

7、右键单击 manifest.safe ,指向添加至新项 ,然后选择地图。

8、如果提示创建金字塔 和统计数据 ,请单击确定接受。
注:金字塔指不同比例下分辨率降低的图像概视图,用于提高绘制速度。 对影像执行某些任务需要统计数据,例如使用拉伸渲染图像。 了解有关构建金字塔和计算统计数据的详细信息。
几分钟后,该图像被添加到名为 IW_manifest 的新地图中。

图像准备好进行预处理。
应用轨道和几何地形校正
首先,您将应用轨道和几何地形校正。
注:如果跳过这两个步骤,深度学习分类和变化检测分析仍然会起作用;但是,您可能会得到不在地图上准确定位的结果。
无论卫星的轨道如何微调,由于重力影响和其他因素,卫星的位置都会发生漂移。 最新的轨道文件提供捕获图像时卫星的精确位置。 您将使用下载轨道文件工具下载相关的轨道文件。
1、切换到地理处理 窗格。 如有必要,请单击返回按钮。

2、搜索并打开下载轨道文件工具。

3、在下载轨道文件工具中,设置以下参数:
-
- 对于输入雷达数据 ,选择 IW_Manifest。
- 对于轨道类型 ,确认已选择 Sentinel Precise。
- 在身份验证和数据存储 下,确保用户名 和密码留空。

4、单击运行。
扩展名为 .EOF 的新文件,将被下载到 .SAFE 文件夹中。 接下来,您将使用应用轨道校正工具中已下载的文件更新 SAR 图像中的轨道信息。
5、在地理处理 窗格中,单击后退 按钮。 搜索并打开应用轨道校正工具

6、对于输入雷达数据 ,选择 IW_manifest 。已下载的轨道文件自动填充输入轨道文件参数。

7、单击运行。
该工具运行后,将显示消息应用轨道校正已完成 。 将不会创建任何新图层,但会更新原始图像。 接下来,可以使用应用几何地形校正工具执行正射校正。 正射校正是校正由于传感器视角和地面高度的变化视角差异而引起的地面对象位置显著变化的过程。 此过程使用数字高程模型 (DEM) 图层。 您将使用 Data_preparation 文件夹中提供的文件。
8、在地理处理 窗格中,单击后退 按钮。 搜索并打开应用几何地形校正工具

9、对于应用几何地形校正工具,设置以下参数:
-
- 对于输入雷达数据 ,选择 IW_manifest。
- 确认输出雷达数据已自动填充。
- 对于极化波段 ,选中 VV 和 VH 框。
- 对于 DEM 栅格 ,单击浏览 按钮,浏览至文件夹 > Data_preparation > DEM ,选择 DEM.tif ,然后单击确定。

10、单击运行。
注:应用几何地形校正可能需要大约 10 分钟。
处理完成后,将显示 IW_manifest_GTC.crf 输出文件。您已经对图像应用了轨道和几何地形校正:它的所有像素现在都已精确定位。
创建一个三波段复合并裁剪它
您将继续准备数据,方法是派生一个三波段复合栅格,然后将其裁剪,以与您感兴趣的精确区域相匹配。
当使用深度学习预训练模型时,你需要向它提供与它被训练的数据相似的输入。 正如您在水体提取 (SAR) - 美国预训练模型文档中所看到的,预期的输入是一个 8 位、三波段 Sentinel-1 C 波段 SAR GRD VH 极化波段栅格。

如下所示:
注:水体提取 (SAR) - 美国预训练模型使用 DeepLab 架构,该架构预期将三波段图像作为输入。 由于 VH SAR 波段通常是探测水的良好选择,因此在训练模型时,决定提供一个三波段组合,其中 VH 波段重复 3 次。
原始 Sentinel-1 数据集具有 16 位无符号像素深度,包含两个极化波段:VH 和 VV。
提示:如果您想自己查找有关 Sentinel-1 数据集的信息,请在内容 窗格中右键单击 IW_manifest 图层,然后选择属性 。 在属性 窗口中,单击源 选项卡并展开栅格信息 、波段元数据 和空间参考 部分。 有用的信息包括波段数、波段名(VV 和 VH)、像素深度和坐标系。
您将使用提取波段栅格函数获得一个 8 位三波段复合。
1、在功能区影像 选项卡的分析 组中,单击栅格函数按钮。

2、在栅格函数 窗格中搜索并打开提取波段。

3、在提取波段 栅格函数的参数选项卡中,设置以下参数:
-
- 对于栅格 ,选择 IW_manifest_GTC.crf。
- 对于方法 ,选择波段名称。
- 对于波段 ,选择 VH 三次。
- 组合 参数将自动填充表达式 VH VH VH。

4、单击常规选项卡并选择以下设置。
-
- 对于名称,键入 Post_Flood_SAR_Composite。
- 对于输出像素类型 ,选择 8 位无符号。

5、单击新建图层。
SAR 合成达将被添加到地图中。 最后,您将使用按掩膜提取工具对其进行剪切,以匹配您的精确感兴趣区域。 减少范围将减少运行深度学习分类和变化检测工具所需的时间。
6、在地理处理 窗格中,单击后退 按钮。 搜索并打开按掩膜提取工具。

7、对于按掩膜提取工具,设置以下参数:
-
- 对于输入栅格 ,选择 Post_Flood_SAR_Composite_manifest_GTC.crf。
- 对于输出栅格,键入 Post_Flood_SAR_Composite_Clipped。

您将画出您感兴趣的具体范围。
8、在分析范围 下,单击绘制范围按钮。

9、在地图上,绘制一个与您感兴趣的范围相对应的矩形。

注:对于本教程,您可以选择任何喜欢的程度。
在内容 窗格中,矩形显示为名为按掩膜提取分析范围的新图层。
10、在按掩膜提取 工具中,对于输入栅格数据或要素掩膜数据 ,选择按掩膜提取分析范围。

11、或者,单击环境 。 对于输出坐标系 ,请单击选择坐标系 按钮以选择新的坐标系并获得重新投影的输出。例如,WGS 1984 UTM 15N 是为您在本教程前面使用的数据选择的投影。 了解有关选择适合的投影教程中的投影的详细信息。

12、单击运行。
几分钟之后,输出将添加到地图中。
13、在内容 窗格中,关闭除 Post_Flood_SAR_Composite_Clipped 、World Topographic Map 和 World Hillshade 之外的所有图层。

Post_Flood_SAR_Composite_Clipped 图层的准备方式与您在本教程开始时使用的 Post_Flood_SAR_Composite 图像相同。 它可以用作深度学习分类和变化检测工作流程的输入。 请注意,您还需要按照相同的工作流程准备洪水前影像。
14、按 Ctrl+S 以保存工程。
在本教程中,您绘制了 2019 年密苏里州圣路易斯地区的洪水地图。 您使用深度学习预训练模型提取了洪水前后 Sentinel-1 SAR 图像中的水域像素。 然后,在两个提取的水域栅格之间执行变化检测,以识别淹没区域。 最后,您计算了受洪水影响的总表面积,单位为平方公里。 此外,您还学习了在哪里可以找到您感兴趣领域的数据,以及如何为分析做准备。