一. Basin Length的概念
Basin length是一个常被用来对流域形态进行定量分析的基础概念,在计算elongation ratio/伸张比、relief ratio/地形起伏比等变量时都要用到它。但是它的定义却众说纷纭,甚至在有peer review 的SCI论文中也没有一个非常明确的定义。
在一些资料(百度百科等)里,它被定义为"流域长度是指流域的轴长,即以河口为中心作同心圆,在同心圆与流域分水线相交处绘出许多割线,各割线中点的连线即为流域长度。" 按照这个说法,Basin length就不一定是一条直线。然而,在有的资料里它也会被定义为 " the maximum distance from the watershed boundary to the pour point / 从流域倾泻点到流域边界的最大直线距离(见图一)" (https://gis.stackexchange.com/questions/44307/how-to-find-out-the-basin-length)。这种对Basin length定义众说纷纭的解释让人苦恼。在硕士论文中,我采用了后一种较为简单的解释方法。对此有研究的盆友们请留言,让我们一起对这个概念进行进一步的总结。
二. Basin Length在ArcGIS中的实现
一些文献里提到,Basin Length的计算可以通过在ArcMap里使用measure工具进行简单的肉眼测量来实现。但是这种方法有局限性: 1) 肉眼判断出的最大长度可能并不是真的最大长度,进而measure工具的测量结果也不一定是正确的;2) 当被研究的流域数量非常多时,一个个手动测量劳心劳力。
那么如何不费力地准确量出Basin Length呢?我在网上没有找到满意的答案。最近,在整理硕士论文的时候,突然来了灵感: "将流域边界的矢量面状要素转(polygon)为矢量点状要素(points),然后计算这些points到pour point的距离,其中最大距离即为Basin Length"。
顺着这样的思路,我在ArcGIS中进行了如下操作:
1. 将流域边界的矢量面状要素(polygon)转为点状要素(points)
在ArcToolBox中,使用Data Management Tools -> Features -> Feature Vertices to Points (图二)。待转换好后,将流域边界放大,发现流域边界已经被转换为红色的points了(图三)。
2. 计算pour point到流域边界points的距离
将pour point矢量图层载入到ArcMap中。在ArcToolBox中,使用Analysis Tools -> Proximity -> Point Distance (图四)。将pour point数据和边界点(points)数据分别填入 Input Features、Near Features,它们填入的顺序并没有太大区别;Search Radius可以不填写具体数值,但需要选择合适的单位,如米或千米。
完成这一步骤后,Table of contents中会出现一个table,打开table即可看到求得的pour point到流域边界各点的距离(图五)。将表格用table to table或table to excel输出,选出其中的最大值,即为Basin Length。
理解了这个思路,不管是直接在arcgis用model builder还是在python中用arcpy,都可实现批量计算多个流域的Basin length了。此步骤很简单,就不再赘述。