跳转到内容
QGIS
地理 AI
AI Edit

如何在 QGIS 中模拟洪水(5 种免费和付费方法)

洪水中的贝桑松航拍图,杜河的棕色洪水覆盖了码头和河畔公园。

要在 中展示洪水,你有五种选择,而且它们可以清楚地分成几类:其中两种能给出可测量的范围,一种能给出工程答案,另外两种能给出有说服力的画面。最快的可测量方法是使用数字高程模型,并在 raster 计算器中设置阈值,大约需要五分钟。最有说服力的画面是生成一张航拍图,大约需要一分钟。两者不能相互替代,这篇文章主要讲的是不要把它们混为一谈。

简短答案

其中三种方法给你一张可以测量的洪水地图。另外两种给你一张无法测量的洪水图片

你需要什么方法你会得到什么
法律认可的洪水区Géorisques PPRI 或 TRI layer一张地图,免费,几分钟
可测量的大致范围高程模型加阈值一张地图,免费,5 分钟
真实研究所需的水深和流速水动力模型一张地图,数天,需要专业人员
用于展示的内容,地点无所谓ChatGPT、Gemini 或 Midjourney一张图片,没有坐标
用于展示的内容,且位于你自己的地点AI Edit,我们的 plugin一张始终位于地图上的图片

开始之前

下面所有内容都基于同一个画面:杜河穿过贝桑松市中心的 600 m 河段,左侧是位于台地上的老城,右岸是码头、露天泳池和一座河畔公园。

Aerial view of the Doubs through central Besançon, with dense old town on the left bank, quays, moored boats, a bridge and an open-air pool on the right bank.
The starting point. IGN BD ORTHO, read 31 August 2026. The river runs at 242 m, the quays at 242, the old town on its terrace at 245. Only the wooded slope in the top corner reaches 260.

你还需要地面高程。在法国,IGN 的 RGE ALTI 通过 Géoplateforme 提供服务,以 image/x-bil;bits=32 格式请求时,你得到的是真实高程值,而不是高程的图片。在这个画面范围内,高程从河道中的 240.9 m 到林地斜坡上的 260.1 m,高差为 19 m。先测量这一点,因为它决定了是否值得继续做这件事。在此之前,我曾在 Nemours 用同样的练习,得到相同大小方形范围内 6.3 m 的高差,这对于这些方法来说过于平坦,无法展示任何效果。

注意这 19 m 中只有很少一部分位于城镇内。码头位于 242 m,老城所在的台地位于 245 m,因此历史中心比河流高出三米,而不是二十米。下面的一切都取决于这一点。

The same frame as an elevation model, with the river channel almost black, the quays purple, and the high ground orange and pale yellow.
The same frame as ground height. Black is the channel at 241 m, purple the quays, orange and pale yellow the rising ground. This one layer drives three of the five methods.

方法 1:Géorisques 官方洪水地图

在进行任何建模之前,先检查答案是否已经存在。Géorisques 由相关部委和 BRGM 运营,发布 PPRI 灾害区,以及针对法国 124 个高洪水风险地区的 Directive Inondation 洪水制图,包含三个灾害等级,并以 shapefile 以及 WMS 和 WFS 服务的形式,在开放许可下提供。将 WFS 直接加载到 中。

**适合场景:**问题具有监管性质,或者有人会问国家认定哪些地方容易发生洪水。**不适合场景:**你的地点不在覆盖范围内,或者你需要一个尚未被绘制的情景。

方法 2:高程模型和阈值

五分钟答案。加载高程模型,打开 raster 计算器,保留低于水位的每个栅格单元。在这里,("dem@1" <= 244) / ("dem@1" <= 244) 会在被淹地面上生成由 1 组成的 layer,其他地方为空。将它设置为蓝色,叠加在航拍图上。

The same aerial view with a translucent blue layer covering the river, the quays and the riverside park at a water level of 244 m.
Water level set to 244 m, two metres above the channel. The quays and the riverside park go under, the old town on its terrace stays dry.

它是可测量的:这个 layer 有面积,你可以统计其中包含的内容。但它也有两种粗糙之处,在向任何人展示之前都值得了解。

**第一,它是一个浴缸模型。**它会填满线以下的每个栅格单元,无论水是否真的能够到达那里。那两块孤立的蓝色区域,一块是顶部的停车场,一块是底部的庭院,并不是错误:我测得它们的高程分别为 244.1 m 和 243.9 m,确实低于水位。但它们与河流之间的地面高程为 245 m,因此真实洪水必须爬上一米高的干地才能进入。阈值无法知道这一点。它完全不知道哪些栅格单元与其他区域相连。

第二,把水位调高,粗糙之处就不再隐蔽。

The same view at a water level of 246 m, with blue covering almost the entire frame including streets and building blocks.
The same method at 246 m, two metres higher. Almost the whole frame goes under, because the terrace the town sits on is only at 245 m. Two metres of extra water on the slider is the difference between wet quays and a drowned city centre.

**适合场景:**你需要一个快速、可测量且明确标注性质的第一版结果。**不适合场景:**这个数字会被重要相关方引用。

方法 3:水动力模型

HEC-RAS、TELEMAC 或 Iber 接受河道几何、糙率和流量作为输入,并返回在地点范围内变化的水深和流速。这才是真正的洪水研究,而且有多个 桥接到这些工具。

**适合场景:**交付成果是一项研究。**不适合场景:**你只有三天时间且没有水动力工程师,这其实是大多数时候的情况。

方法 4:询问 ChatGPT、Gemini 或 Midjourney

截取地图画面,粘贴到其中任何一个工具里,描述洪水,然后得到一张图片。速度很快,而且在水的视觉效果上通常很有说服力。但有两个问题。它们不知道你的地面哪里高、哪里低,所以水会流向更适合生成画面的地方。而且返回的是没有坐标的普通图片文件,因此永远无法回到地图上,与其他内容并列显示。

**适合场景:**你想要一种氛围,用于非正式用途。**不适合场景:**有人了解这个地点。

方法 5:QGIS 中的 AI Edit(我们的产品)

一个 plugin,会根据你写下的指令重新绘制屏幕上的航拍图,并将结果作为一个 map layer 返回,精确叠加在原始航拍图上。下面是同一个画面,要求生成一场大洪水,没有附带其他内容。

The same aerial view with brown flood water covering most of the frame, including streets in the old town and ground on the right bank that is well above the river.
A flood prompt on its own. It looks right at a glance, and it is wrong: water has run up the streets of the old town and covered ground on the right bank that stands metres above the river.

现在使用本页开头的高程模型作为参考,附上相同的 prompt,并告诉模型如何读取它:深色表示低处,亮色表示高处,在地面开始升高的位置停止。

A flood covering the whole frame, then the same flood confined to the river corridor with the town on its terrace left dry (after)
A flood covering the whole frame, then the same flood confined to the river corridor with the town on its terrace left dry (before)
BeforeAfter
拖动比较
The same prompt without the elevation model on the left, with it on the right. On the right the water stays in the valley, the edge follows the break in slope, and the old town keeps its dry streets. Drag the handle to compare.

这就是为什么要在 内完成这件事,而不是在浏览器中完成:项目中已经打开的任何 layer 都可以作为指导交给模型。这里使用的是高程模型,但也可以是方法 1 中的 Géorisques 灾害区,或方法 2 的输出结果。

为了诚实起见,还有一件没有奏效的事情。第三次运行在指令中加入了过多的负面规则,“让所有更亮的区域完全保持干燥”,结果返回了原始照片,完全没有变化。描述水要做什么,而不是列出它不能做什么。

**适合场景:**你需要让不懂得阅读灾害地图的人真正看懂洪水。**不适合场景:**交付成果是一个数字。结果是一张图片,在将其转换为形状之前,其中任何内容都无法测量。

应该使用哪种方法

把它们结合起来。方法 1 或 2 给你可以据此辩护的范围,方法 5 给你人们能理解的图像,而第二种方法之所以可信,只是因为你把第一种方法的结果提供给了它。绝不要在没有旁边放置测量范围的情况下发布生成的洪水图,并且始终将其标注为模拟结果。

人们常问的问题

生成的洪水图可以放进公共文件吗?

可以,但必须标注为模拟结果,绝不能标注为照片或预报。我们的输出会因此标记为 AI 生成。将测量范围放在旁边,让人们看到这个数字从何而来。

我可以从生成的图片中测量洪水面积吗?

不可以。它只是像素。请测量方法 1 或方法 2 的结果,它们是真实几何数据,并将生成图片用于它擅长的事情。

阈值应该使用什么水位?

先从高程模型中读取河道高程,然后从这个数值开始逐步上调。这里的河道约为 241 m,因此 244 m 代表上涨三米。不查看实际高程就随意选择一个整数水位,最终可能会意外淹没整座城镇。

这在法国以外也适用吗?

方法适用。数据会改变:你需要所在国家的高程模型,以及该国发布的任何灾害地图。其他部分仍然是同一个 raster 计算器和同一个 prompt。

来源

  1. Géorisques,由生态转型部和 BRGM 运营,2026 年 8 月 31 日阅读。法国 124 个高洪水风险地区的 PPRI 灾害区和 Directive Inondation 洪水制图,三个灾害等级,在 Licence Ouverte 2.0 下提供 shapefile、WMS 和 WFS。
  2. 通过 Géoplateforme 提供的 IGN RGE ALTI,Licence Ouverte。2026 年 8 月 31 日以 image/x-bil;bits=32 格式读取的高程值。
  3. 航拍图:IGN BD ORTHO,Licence Ouverte。
  4. 所有图示均于 2026 年 8 月 31 日在 中制作,使用上述画面范围。

完整的 AI Edit 指南涵盖了这个 plugin 的完整使用流程,如何在 QGIS 中重新设计一条街道则将同样的方法应用于另一项工作。QGIS AI 中心汇总了我们所有的指南。

Try it free in QGIS, no card needed