学习更多Python & GIS的相关知识,请移步公众号GeodataAnalysis
。
之前写论文的时候看到过一个计算城市边界的方法,其大致流程是这样的,先是识别建成区单元;然后去除农村建成区单元;之后为每个单元创建缓冲区,缓冲区后各个单元的面积是原面积的 125%;最后将某个建成区单元设为城市核心(主城区),判断其他的建成区单元的缓冲区是否与主城区的缓冲区相交,相交的话就把它和主城区一同视为城市的一部分,他们的边界就是城市的边界。流程图大致如下:
我当时正好需要用其中的一个方法,也就是本文的主题,按面积比例创建缓冲多边形。
创建缓冲区很简单,不管是用 ArcGIS 还是什么工具,指定一个距离,点运行就可以了。但关键是怎么确定这个距离呢?光知道面积比例是不容易确定缓冲距离的,因为原始多边形不一定是规则的。
正好今天通过了 New Bing 的内测,就用这个问题试一下它的搜索和总结归纳的能力吧。
先直接问它一下,看一下结果发现,每句话都对,连在一起就不对了。也就是说它的回答和我的问题完全不相关,没法解决我的问题。
再详细的问它一下试试。这次的回答看上去详细了很多,跟了用两个不同的工具的解决方法。先看它给出的 ArcGIS 的解决方法,说了要用 ArcGIS 的哪个工具创建缓冲区,还知道按字段创建缓冲区,但是问题还是没能解决最关键的问题,也就是只知道面积比例是无法确定缓冲距离的。再看一下它给出的 QGIS 的解决方法,说了一堆,还是同样的问题。
把这个问题翻译成英文在谷歌搜一下,第一个网页里就有我们这篇文章要介绍的实现按面积比例创建缓冲多边形的工具。
同样的英文再问它一下,可能他的英文数据库更全一点。这次它同样没有给出解决办法,但有一点却说对了,既需要使用数学公式根据原始多边形面积和所需的面积比来计算缓冲距离。
最后介绍一下实现该功能的工具,他是一个 QGIS 的插件,叫Buffer by Percentage
。该插件提供了两个工具,第一个工具是固定比例缓冲(Fixed percentage buffer
),输入是一个指定的图层,以及需要的面积比例,按照这个比例输出一个新的图层。
第二个工具是可变比例缓冲(Variable percentage buffer
),输入是一个指定的图层,以及输入图层的某个字段,按字段确定面积比例并为每个要素分别创建缓冲区,最后输出一个新的图层。
这就是这篇文章的全部内容了,虽然 New Bing 没能解决我们的问题,但是从它的回答能够看出来它在搜索、归纳上的能力还是很强的,用在日常工作中肯定会如虎添翼。