如何在R中模拟河流水位上升
Posted
技术标签:
【中文标题】如何在R中模拟河流水位上升【英文标题】:How to simulate river level rise in R 【发布时间】:2019-12-04 07:54:47 【问题描述】:我需要进行模拟,看看如果海平面上升 X 米,哪些区域会受到影响。任何人都可以给我提示是开始吗?我搜索了嵌入在谷歌地图 API 中的工具,但没有找到任何解决方法。
这个想法是创建一个这样的函数:
isAffected <- function( coordinate, metersRised)
---- return True if it is affected, false otherwise
提前致谢!
【问题讨论】:
查看此资源coast.noaa.gov/digitalcoast/tools/slr @M.Viking 感谢您的回复。唯一需要注意的是我会在美国以外的地方工作 【参考方案1】:第一反应是,我看不到任何快速直接的解决方案,即在现成的 R 库/数据集之上构建这样的函数。其次是想知道您是否想对其进行建模或依赖已经开发的产品,或中间的东西。最严格的方法是应用流体动力学模型,而另一个书挡是对其他人的预期结果网格进行抽样。
仅作为上下文,对于受海岸附近海平面上升影响的河流水位,如果河流水位变化很大,您可能需要考虑它们。如果由于最近的暴风雨或融雪事件而导致河流水位高涨,仅海平面上升就会加剧洪水泛滥。所以也许你可以假设有限数量的河流高度(比如雨季 - 高,旱季 - 低)。潮汐也使事情复杂化,风暴和风暴潮也是如此 - 由于暂时的非常低的压力,基本上高于平均海洋高度。使用这三个组成部分的一个最坏情况的示例是,在风暴潮、涨潮期间,有多少 x 城市(区域海岸线)将被洪水淹没,例如新奥尔良或澳大利亚海岸,并且当地河流因春季融雪而充满水,增加了 5 英尺的额外海平面,因此需要考虑大量数据 - 例如,对于那些河流高度假设,您可能需要某种 x、y、z 数据。许多城市都有洪水地图,您可以在其中获得那些河流阶段的海拔高度。海平面上升的假设越大,河流的影响就越小。例如,巨大的海平面上升情景很容易像今天一样淹没整个城市,无论河流有多高,河口向内陆移动数英里。
简单来说,我想说最重要的数据将是数字高程模型 (DEM),可能是 x、y、z 坐标的光栅文件,其中 z 是关键部分 - 每个像素的高程xy 位置高于某个特定基准。更高分辨率的 DEM 将提供更详细和更真实的淹没。处理后的激光雷达数据可能是理想的——其他人已经产生了非常高分辨率的数据——原始激光雷达数据是一种负担。新西兰至少有一些 - http://opentopo.sdsc.edu/datasets - 但我不确定美国以外的数据是否有好的仓库。
一个基本的工作流程可能是,决定您将考虑哪些液压组件以及有多少个场景。例如,您将通过使用平均海平面忽略潮汐并且只有两个海平面上升场景,并假设河流始终处于 __ 英尺,或者可能是 __ 英尺和 __ 英尺。下载/构建 DEM,然后添加您的河流数字高程模型的高度(不是微不足道的,但搜索 GIS Stack 溢出是一个好的开始)。这是结合海水的参考基线高程。假设海平面上升(例如 10 英尺)并入另一个 DEM,一种方法是以栅格数学为中心,从另一种方法中减去一个,结果将显示新的淹没区域。一旦你完成了光栅数学,你可以有一个二进制 xy 网格,无论是淹没还是不淹没,以应用最终的 xy 搜索函数:xy 是 1 还是 0,但到目前为止最棘手的部分是在那之前。可能有更直接或简化的方法,但系统是如此动态,所以你的模型的复杂程度是无限的。以下是有关河流组件的更多信息,这可能有助于可视化您将添加海水场景的河流起点https://www.usgs.gov/mission-areas/water-resources/science/flood-inundation-mapping-science?qt-science_center_objects=0#qt-science_center_objects
库raster
可能是一个好的开始,它将读取下载的栅格/网格文件,如.tif
,并执行您需要的栅格数学 - 将相同大小的栅格一起添加/减去。或者忘记所有这些处理,也许您可以读取其他人完成的此类场景的预处理栅格,然后对它们进行搜索。对于某些海平面上升可能有一个很好的数字,但如果您想同时假设海平面和河流海拔的情况,它就会变得更加棘手。
【讨论】:
以上是关于如何在R中模拟河流水位上升的主要内容,如果未能解决你的问题,请参考以下文章
GlobalMapper精品教程038:模拟水位上升(洪水淹没分析)案例教程
并查集 | 二分查找 + BFSLeetCode 778. 水位上升的泳池中游泳