从自然科学方法到社会经济问题——借用水流工具,来进行"客流"的分析(上)

栅格分析 Feb 27, 2017

在我的求学经历中,大多具体的空间分析方法是学自于统计学工程学背景的教授——怎样分析点状空间数据、连续型空间数据,怎样做空间回归、空间优化。我一直很感恩于这些严谨的训练。

不过对我影响最深的,却是一位很浪漫的、出身于景观设计学的教授。他研究自然资源、水文地理,他会写一个新的地图算法作为给夫人的周年纪念礼物,也会给我们留作业让我们分析人类和”鱼人”打仗的最优战略。他就是**Map Algebra(地图代数学)**的奠基人——Dana Tomlin教授。

Map Algebra,顾名思义,就是在地图上算算数。这就牵涉到GIS分析的两个思路:矢量分析栅格分析。如果我们研究的是社会学问题,往往会更关注跟人类活动有关的POI(Point of Interest)——先看"是什么东西",再看"它在哪里",这是矢量分析的思路。自然科学则原生是栅格分析,给空间里所有的点标注上"有哪些属性",然后就可以"算算数"了。而Tomlin教授得益于他跨学科的背景,先是根据自然科学的学科需求,建立了最初的空间计算方法(已是几十年前的事);又致力于填补它和社会学分析之间的断裂,就像打通任督二脉,把空间分析融汇为一体。

下面,我就举个小小的例子,先以水文学(Hydrology)的计算展示下地图上算数的乐趣,再看怎样借用"水流"的概念,来解决"客流"的问题。

上面这张图,是我随意截取的一块高程栅格。这里唯一的数值就是海拔,白色为高,黑色为低。你可以把它想象成一个m*n的矩阵——每一点代表了山体的高度,可以从图中看到有峰有谷有洼地。

那么有了海拔高度,接下来怎么算算数呢?首先想到的是,可以求变化率

想象下,简化到2d,山体的轮廓是一根曲线,我们肯定想求个导,得到每一点的梯度。而到了3d的实际情况中,山体每一点到四面八方的梯度都不同,那怎样提取出有意义的信息呢?我们可以提取最陡峭的下降方向——如果有降水的话,水就会流向这个方向。

上图就是经过计算得出的,从每一点出发下降最陡峭的方向。根据矩阵的特性,每一点有八个邻居,方向也是简化为八个,分别用一个颜色渲染。

好了,得到了水流的方向,我们就可以模拟降水了。尽管我们可以引入降水的分布栅格,但为了体现单个数据源(高程)能产生千变万化的趣味性, 这里我们就假设降水都是一致的,那么想象一下,降水会产生水流,汇聚成河、湖。怎样来计算和表述这件事?就是求每一点累积经过的水量了。

上图为水流量的局部渲染。黑色越深,表明累积流过这一点的水量越大。可以看到形成了一条条的水流。

然而通过观察,我们发现了一个问题:有些时候,因为某一局部的高程低,汇流而来的水断掉了。这种情况往往是由高程栅格数据的原生缺陷导致,而我们可以做的是将断点"补上"(上图右)。

更新数据后,再次计算水的流量情况,结果如下图。我们把它放到3d山体(将高程栅格打上光影,半透明叠加在山体高度上)来观察,可以更清晰地察看。

这里,我们用数字来说明认知和处理断点的作用:原先的汇流量最大点,汇聚了来自近2万格子的降水;而调整后的汇流量极值,是来自28万个格子的降水。

像这样在计算中随时检查—发现问题—返回解决问题—重新计算—再次检查是非常重要的。很多时候模型方法都斟酌适当,结果却不对,就可能是输入的数据不符合算法的假设预期,有坑需要去填。

——不过这就扯远了。回到主题,从高程栅格,能生成这些黑色的"河流";而反过来,白色的零值(降水只会流出/没有流入)的部分,其实是一条条**"山脊"**。通过栅格运算,还可以筛选出不同级别的主要山脊。

能从水流量衍生出的信息有很多,下面我们放一组图吧:

这是渲染的每一点上的降水要流到局部最低点有多远。

这是通过计算划分了河流的主流和支流。

这是计算出每个河段的流域范围。

除了按自然河段求流域,还可以算任意一点的流域,如上图。

以上都是由高程栅格出发,通过简化模型创造出的一些新的栅格。在农学、林学等自然科学中,基于地表数据会有更复杂的模型,更实际的计算。而这些计算归根结底,依然是这几个Map Algebra的基本思路:

我自己/Local

四周的邻居/Focal

同一区、同一国的人/Zonal

所有人/Global

这种地图上的运算,也是解决许多问题的基本思路。Tomlin教授课上就会给我们抛出各种问题,让我们思考解题的办法:

如果餐馆对客流的吸引力是距离的函数,怎样在地图上计算其中一家餐馆份额的分布

如果有一个道路栅格,其中道路粗细、间隔都各不同,怎样最准确地找到所有的道路交叉口

如果要在森林中从A点到B点开辟一条公路,森林中散布的树要砍掉各有不同的代价,那总代价最小的路怎么选取?

怎样实现有障碍(河流/墙/黑人白人聚居分界线)情况下的密度分布计算?

想实现平面形状的平滑,和3d表面的平滑,分别应做怎样的栅格运算?

……

这些都是虽简单却非常有益的训练。

下一篇中,我们将着手解决一个具体的问题——大学校园里,因下雪导致交通成本变化时,几个餐车的份额/客流量是如何变化的。而解题用到的,就是水沿着最陡峭的梯度下降,求水的累积量这一思路。

我们将把山体的"梯度"抽象成任何**"成本"(时间、金钱、风险、环境影响……),而在"成本"的平面上,从一点到另一点"距离"**的含义则为成本的累积。借由校园餐车的案例,看看这一经典的算法是怎样应用的。

Comments

Not using Html Comment Box  yet?

No one has commented yet. Be the first!

rss
Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
分享