1.3 地理数据处理
地理数据处理是处理空间数据的总称,不管处理的是栅格数据,还是矢量数据。可以想象一下,地理数据处理的覆盖面相当广泛。我一直认为,使用GIS的地理数据处理工具就像做数据统计一样,几乎可以应用于所有事情中,甚至在日常生活中也会用到地理数据处理,不管你是否意识到这一点。例如,我会根据是开车还是骑自行车来选取不同的出行路线,当我骑自行车上班时,我会选择避开没有护栏的高流量道路。对于有陡峭山坡的路线,开车时我不会顾虑太多,但骑自行车时就会比较关心。像这种基于上班所做的路线选择,不仅考虑到道路方向、高程等空间因素,还有交通流量和道路宽度等属性,这就是一种地理数据处理,可能你每天都在做类似的决定。
除了简单的选择一条上班路线,你有很多理由对地理数据处理产生兴趣。让我们看几个相关的应用实例。早期空间分析比较著名的例子是John Snow的故事,他是一位生活在19世纪初的英国医生。虽然故事的部分内容一直存在争议,但故事的要点是,他使用空间分析的方法确定了1854年爆发的霍乱疫情的形成原因。他绘制的地图一角已经在图1.6中进行了展示,在地图上布罗德大街上的水泵位于中间。你可以看到许多看起来像条形块的符号被固定在附近的街道上,每一个条形块由一个与道路平行的线条构成,代表一个霍乱受害者。Snow意识到,大多数受害者可能从布罗德大街上的水泵取水,因为这个水泵是离他们最近的一个,于是他说服当局关闭水泵。这个故事非常重要,不仅仅是因为它是早期使用空间分析的案例,还因为当时并不知道霍乱是通过受污染的水进行传染的。正因为如此,John Snow被认为是现代流行病学的奠基人之一。
空间分析目前仍然是流行病学研究的重要组成部分,除此以外,它还被广泛应用于其他领域。我做过的空间分析项目包括:研究濒危物种的生活习性,模拟大面积区域的植被覆盖,比较洪涝前后不同时间的数据查看河道是如何变化的,模拟森林的碳汇。你也许可以在自己感兴趣的领域找到其他空间分析相关的例子。下面再看一些其他的例子。
中国的研究人员骆磊等人使用空间分析的方式,结合历史记录,来查明丝绸之路沿线已经消失的驿站位置。史籍资料记录了有关路线的描述,包括行驶的距离和驿站之间的大致方位。目前几个驿站的位置已经确定,研究者们认为,古代旅客们不太可能沿着一条直线行进,而是会随着河流或者其他地貌前行。他们使用所有这些信息来确定那些仍未发现的驿站的可能地理位置区域,然后再使用高分辨率的卫星影像来搜索可能是驿站遗址的区域几何形状。实地考察后,他们发现其中一个是古代的驿站,另外两个可能是汉朝时期的军事设施。
另一个完全不同的应用领域是,Moody等人着力于研究利用微藻作为生物燃料。他们利用微藻的生长模型和来自世界各地不同地点的气象数据模拟生物的生产能力。由于气象数据只是特定站点的数值,分析的结果使用空间插值的方式绘制出一副全球的生产能力图。图中显示最有潜力的区域位于澳大利亚、巴西、哥伦比亚、埃及、埃塞俄比亚、印度、肯尼亚和沙特阿拉伯。
更有趣的是,空间分析同样影响着人们的日常生活。你是否注意到你的汽车保险费用会根据你所生活的区域而有所不同?同样的空间分析也可能影响着你喜欢的咖啡馆或杂货店的位置。我所在的社区准备建造一些新的小学和中学,在考虑到适宜地块可用性的同时,还要部分考虑未来学生的空间分布情况。
空间分析不仅仅局限于地理方面,Rose等人论证了地理信息系统(Geographic Information System,GIS)可以被用来分析骨骼中纳米结构和微结构的分布情况。他们使用GIS来查看骨骼的重塑事件是如何与承受了高密度压缩和拉伸的骨骼部分相对应的。
你个人可能需要处理一下数据,使其更适合地图的展示,如去除不想要的要素或者化简复杂的线段,以便在网络地图上快速地绘制显示;你可能会分析人口统计数据来规划未来的交通运输需求;也许你对植被是如何响应不同的土地管理方式感兴趣,如指定焚烧或者修建,或者对此完全不感兴趣。
虽然地理数据处理技术有时候相当复杂,但大多都非常简单。在本书中,你会学到一些简单的应用,但它们是其他所有分析的基础。当你大功告成之时,你将学会读写多种格式的空间数据(矢量和栅格)。可以根据矢量数据的属性值或空间位置对其进行裁剪。你将学会如何进行叠加分析和邻近分析等简单的矢量地理数据处理。此外,你会知道如何处理栅格数据集,包括调整像素、基于多个数据集进行像素计算以及移动窗口分析。
你将学会使用Python来做所有的这一切,而不仅仅是通过单击软件程序中的某些按钮来实现。能够将处理流程写成脚本(这一点)非常强大,不仅可以非常简单地一次批量处理多个数据集(我经常这么做),而且可以让你自定义分析操作,而不是受限于软件的用户界面。你可以根据自己的工作流程自定义工具包,并重复使用。自动化是脚本的另一大优势,这也是我一开始就爱上脚本的原因。我不喜欢单击按钮一遍又一遍地做同样的事情,但我会非常高兴地花时间搞清楚它是如何自动执行的,这样我就不用再想它了。最后一个我要提到的优势是,只要你没把脚本弄丢,总会知道自己做了什么,因为所有的一切都在那里。