(1)引言

本文由SCY翻译自《Geocomputation with R》第一章

这本书是关于使用计算机的力量来处理地理数据的。它教授一系列的空间技能,包括:读、写和操作地理数据;制作静态和交互式地图;应用地理计算解决现实问题;并对地理现象进行建模。通过展示各种地理操作是如何联系在一起的,在穿插的可复制"代码块"中,本书还教授了一个透明而科学的工作流程。学习如何使用R命令行提供的丰富的地理空间工具令人兴奋,但创建新的工具可以真正解放。使用贯穿始终的命令行驱动方法,以及章节所涵盖的编程技术,可以帮助消除软件对您的创造力施加的限制。在读完这本书和完成练习后,你应该对R令人印象深刻的地理能力所开辟的可能性有很强的理解,用地理数据解决现实世界问题的新技能,以及用地图和可复制的代码来交流你的工作的能力。

引言

这本书是关于使用计算机的力量来处理地理数据的。它教授一系列的空间技能,包括:读、写和操作地理数据;制作静态和交互式地图;应用地理计算解决现实问题;并对地理现象进行建模。通过展示各种地理操作是如何联系在一起的,在穿插的可复制"代码块"中,本书还教授了一个透明而科学的工作流程。学习如何使用R命令行提供的丰富的地理空间工具令人兴奋,但创建新的工具可以真正解放。使用贯穿始终的命令行驱动方法,以及11章节所涵盖的编程技术,可以帮助消除软件对您的创造力施加的限制。在读完这本书和完成练习后,你应该对R令人印象深刻的地理能力所开辟的可能性有很强的理解,用地理数据解决现实世界问题的新技能,以及用地图和可复制的代码来交流你的工作的能力。

在过去的几十年中,自由和开源的地理空间软件(FOSS4G)以惊人的速度发展。得益于OSGeo等组织,地理数据分析不再是拥有昂贵硬件和软件的人的专利,现在任何人都可以下载和运行高性能的空间库。开源地理信息系统(GIS),如 QGIS,使地理分析在全球范围内变得可访问。GIS程序倾向于强调图形用户界面(GUIs),但是阻碍可重复性(尽管许多可以从命令行中使用,正如我们在第10章中看到的那样)。而R则强调命令行界面(CLI)。不同方法之间的简单比较见表1.1。

表1.1: 不同软件包(地理信息系统(GIS)的图形用户界面(GUI)和R语言)之间的重点差异。

Attribute Desktop GIS (GUI) R
Home disciplines Geography Computing, Statistics
Software focus Graphical User Interface Command line
Reproducibility Minimal Maximal

编撰本书的动力源于科学研究的可重复的重要性(见下面的注释)。它旨在使可重复的地理数据分析工作流更易于访问,并展示从命令行可用的开源地理空间软件的力量。“其他软件的接口是R的一部分”。这意味着除了出色的“内部”功能外,R还允许访问其他许多空间软件库,这在第1.2节中有解释,在第10章中有示例。然而,在深入软件的细节之前,值得先退一步思考我们所说的地理计算是什么意思。

📌可重复性是命令行界面的一大优势,但实际上它意味着什么?
我们将其定义为:“一个通过使用公开可访问的代码,能够由其他人生成相同结果的过程。”
这听起来可能很简单,也容易实现(如果你仔细地维护你的R代码脚本文件的话),但对于教学和科学过程有着深远的影响。

什么是地理计算?

地理计算是一个年轻的术语,可以追溯到1996年该主题的第一次会议^01-introduction-1。与当时常用术语’量化地理学’不同,其早期倡导者提出,地理计算强调的是"富有创意和实验性"的应用和新工具和方法的开发。 “地理计算是关于使用各种不同类型的地理数据,并在’科学’方法的总体背景下开发相关的地理工具。” 本书的目标不仅是教授方法和代码;在本书结束时,你应该能够使用你的地理计算技能,做出"有益或有用的实际工作"。

第21届地理计算会议也在利兹大学举行,期间Robin和Jakub进行了演讲,主持了一个关于’tidy’空间数据分析的研讨会,并在书中进行了合作(更多关于会议系列和跨越两个世纪的论文/演示,请访问www.geocomputation.org)。

我们的方法与早期采用者如Stan Openshaw的强调点不同,它强调可重复性和合作。在21世纪初,由于无法获得必要的硬件、软件和数据,期望读者能够重复代码示例是不现实的。快进两个世纪,情况发展迅速。任何有足够RAM(至少推荐8GB)的笔记本电脑都可以安装和运行地理计算软件,并重现本书的内容。1990年代和21世纪初,高性能计算机对大多数人来说过于昂贵,因此地理计算的财务和硬件障碍已经消除。[^01-introduction-2]地理计算也更容易访问,因为公开可访问的数据集比以往任何时候都更广泛地可用,我们将在第8章中看到。与该领域的早期作品不同,本书中所有的工作都可以使用代码和与书籍一起提供的示例数据进行重现,例如在R包如spData中,其安装将在第2章中介绍。

[^01-introduction-2]: 在大多数国家,今天可以从如Ebay这类似的网站上以100美元或更低的价格购买合适的二手笔记本电脑。有关在现代操作系统如Ubuntu 22.04上安装R的更多信息,请参见章节空间类

每个术语都强调了受GIS影响的’科学’(即可重复和可证伪)方法,尽管它们的起源和主要应用领域不同。例如,GDS强调’数据科学’技能和大型数据集,而地理信息学则更侧重于数据结构。但是,这些术语之间的重叠比它们之间的差异更大,我们将地理计算用作涵盖所有这些术语的粗略同义词,它们都寻求用地理数据进行应用科学工作。然而,与早期使用这个术语的人不同,我们并不寻求暗示存在任何名为’地理计算’(或’Stan Openshaw称之为’GeoComputation’)的连贯的学术领域。相反,我们将这个术语定义如下:以计算方式处理地理数据,专注于代码、可重复性和模块化。

地理计算是一个新近的术语,但受到了古老观念的影响。它可以看作是地理学的一部分,地理学有2000多年的历史;以及地理信息系统(GIS)的延伸,该系统诞生于1960年代。

地理学在计算机发明之前就在解释和影响人类与自然世界的关系方面发挥了重要作用。例如,亚历山大·冯·洪堡在19世纪初对南美洲的旅行说明了这一点:不仅观察结果为物理和植物地理学的传统奠定了基础,而且还为保护自然世界的政策铺平了道路。本书旨在通过利用现代计算机和开源软件的力量,为’地理传统’做出贡献。

本书与较早的学科之间的联系反映在本书的建议标题中:用R学地理学R用于GIS。每个标题都有优点。前者传达了这样一个信息,即它包含的内容远不止空间数据。非空间属性数据与几何数据不可避免地交织在一起,地理学不仅仅是关于地图上某个东西的位置。后者则传达了这是一本关于使用R作为GI来执行地理数据上的空间操作的书。

然而,GIS这个术语传达了一些含义(见表1.1),这些含义简单地无法传达R最大的优点之一:其基于控制台的能力可以无缝地在地理和非地理数据处理、可视化和建模之间转换。因此,我们选择了一个更中性和包容性的标题。相对而言,地理计算意味着可复制和富有创造性的编程。当然,(地理计算的)算法是强大的工具,可能会变得非常复杂。然而,所有算法都由更小的部分组成。通过教授您其基础和底层结构,我们的目标是赋予您创造自己的地理数据问题创新解决方案的能力。

为什么选择R进行地理计算?

早期地理学家使用各种工具,包括气压计、指南针和六分仪,以增进对世界的了解。直到1761年海洋天文钟的发明,人们才能在海上计算经度,从而使船只能够采取更直接的航线。

如今,很难想象会缺乏地理数据。每部智能手机都有全球定位(GPS)接收器,从卫星和半自动车辆到公民科学家的多种传感器不断测量世界的每一个部分。数据生成的速度是惊人的。
例如,一个自动驾驶车辆每天可以生成 100 GB的数据。卫星的遥感数据已经太大,无法用单台计算机分析相应的数据,因此出现了例如OpenEO之类的计划。

这场“地理数据革命”推动了对高性能计算硬件和高效、可扩展软件的需求,以从噪音中提取信号,了解甚至可能改变世界。空间数据库能够存储和生成大量地理数据集的可管理子集,使得从其中获取知识的界面成为未来的重要工具。R就是这样一种工具,具有先进的分析、建模和可视化能力。在这个背景下,本书的重点不在于语言本身。相反,我们使用R作为理解世界的“行业工具”,类似于洪堡使用工具深入了解自然界所有的复杂性和相互联系。尽管编程看似是一种还原主义活动,目标是教授地理计算与R,不仅仅是为了乐趣,还是为了理解世界。

R是一个多平台的开源语言和环境,用于统计计算和图形(r-project.org/)。通过广泛的包,R还支持先进的地理空间统计、建模和可视化。新的集成开发环境(IDEs})如RStudio已使R对许多人更加用户友好,通过专门用于交互式可视化的面板简化了制图工作。

在其核心,R是一个面向对象的函数式编程语言,特别设计为其他软件的交互式接口。后者还包括许多到GIS软件、“地理库"和功能(见第10章)的"桥梁”。因此,它是快速创建"地理工具"的理想选择,无需掌握低级语言(相对于R)如C、FORTRAN或Java(见1.3节)。这可能感觉像是从基于GUI或专有地理信息系统,以查看GUI的定义,施加的比喻性"玻璃天花板"中挣脱出来(见表1.1GUI定义)。此外,R便于访问其他语言:例如,Rcppreticulate包允许访问C++和Python代码。这意味着R可以用作通往各种地理空间程序的"桥梁"(见1.3节)。

另一个显示R灵活性和不断发展的地理能力的例子是交互式地图制作。如我们将在第9章中看到,R具有“有限的交互式[绘图]功能”的说法已经不再成立。这通过以下的代码块得到证明,该代码块创建了图1.1(生成该图的函数将在第9.4节中介绍)。

1
2
3
4
5
6
7
library(leaflet)
popup = c("Robin", "Jakub", "Jannes")
leaflet() |>
addProviderTiles("NASAGIBS.ViirsEarthAtNight2012") |>
addMarkers(lng = c(-3, 23, 11),
lat = c(52, 53, 49),
popup = popup)

图1.1:蓝色标记指示了作者来自哪里。底图是由NASA提供的夜晚地球的平铺图像。通过在r.geocompx.org上与在线版本进行交互,例如通过放大和点击弹出窗口。

几年前,使用R制作图本身就会很困难,更不用说作为一个交互式地图1.1了。这展示了R的灵活性,以及多亏了如knitrleaflet等发展,它可以用作与其他软件的接口,这是贯穿本书始终的一个主题。因此,R代码的使用使得可以通过参考代表现实世界现象的可复现示例来教授地理计算,而不仅仅是抽象概念。

地理计算软件

R是一个用于地理计算的强大语言,但也有许多其他用于地理数据分析的选项,提供了数千个地理函数。了解其他用于地理计算的语言将有助于决定何时使用其他工具可能更适合特定任务,并将R置于更广泛的地理空间生态系统中。本节简要介绍了用于地理计算的语言C++JavaPython,为第10章做准备。

R(和Python)的一个重要特性是它是一种解释型语言。这是有利的,因为它允许在读取——求值——打印循环(REPL)中进行交互式编程。输入到控制台的代码立即执行并打印结果,而不是等待编译的中间阶段。另一方面,编译型语言如C++和Java倾向于运行更快(一旦它们已经被编译)。

C++为许多GIS软件包(如QGISGRASSSAGA)提供了基础,因此它是一个明智的起点。精心编写的C++速度非常快,使其成为处理大型地理数据集等性能关键应用的好选择,但比Python或R更难学。通过Rcpp包,C++已经变得更容易接近,为R用户提供了一个很好的C编程的’切入点’。熟练掌握这种低级语言增加了创建新的高性能’地理算法’以及更好地理解GIS软件如何工作的可能性(见第11章)。

Java是用于地理计算的另一种重要和多功能的语言。GIS软件包gvSig、OpenJump和uDig都是用Java编写的。Java有许多GIS库,包括GeoTools和JTSJava拓扑套件,(GEOS是JTS的C++的部分)。此外,许多地图服务器应用程序使用Java,包括Geoserver/Geonode、deegree和52°North WPS。

Java的面向对象语法与C++相似。Java的一个主要优点是它是平台独立的(这对于编译语言来说是不寻常的)并且具有很高的可扩展性,使其成为像RStudio这样的IDE的适当语言,用它写了这本书。与Python或R相比,Java在统计建模和可视化方面的工具较少,尽管它可用于数据科学。

Python是用于地理计算的重要语言,特别是因为许多桌面GIS,如GRASS、SAGA和QGIS,提供了Python API(见第10章)。与R一样,它是一个流行的数据科学工具。这两种语言都是面向对象的,并且有许多重叠区域,导致了诸如reticulate这样的项目,促进了从R访问Python,以及Ursa Labs计划,以支持便携式库,使整个开源数据科学生态系统受益。

实际上,R和Python各有优点,某种程度上你使用哪个不如应用领域和结果传播重要。学习其中一个将为学习另一个提供先行优势。然而,R相对于Python在地理计算方面有主要优势。这包括其对语言本身中地理数据模型矢量和栅格的更好支持以及相应的可视化可能性(见第29章)。同样重要的是,R具有无与伦比的统计支持,包括空间统计,有数百个包支持数千种统计方法。

Python的主要优点是它是一种通用编程语言。它用于许多领域,包括桌面软件、电脑游戏、网站和数据科学。Python通常是不同(地理计算)社群之间唯一共享的语言,并可视为许多GIS程序的“粘合剂”。许多地理算法,包括QGIS和ArcMap中的那些,都可以从Python命令行访问,使其非常适合作为命令行GIS的入门语言。^01-introduction-3

然而,在空间统计和预测建模方面,R是无与伦比的。这并不意味着你必须选择R或Python:Python支持大多数常见的统计技术(尽管R倾向于更早地支持空间统计的新发展),许多从Python学到的概念可以应用到R世界。

与R一样,Python还支持地理数据分析和处理,使用诸如shapelygeopandasrasterioxarray等包。

R 空间生态系统

在R中处理地理数据有很多方法,该领域有几十个软件包。^01-introduction-4在本书中,我们努力教授该领域的最新技术,同时确保这些方法是面向未来的。与软件开发的许多其他领域一样,R的空间生态系统正在迅速发展。由于R是开源的,这些发展可以轻易地建立在之前的工作上,正如艾萨克·牛顿在1675年所说的“站在巨人的肩膀上”。这种方法有优势,因为它鼓励合作并避免“重复发明轮子”。例如,sf软件包(在空间数据章中介绍)建立在其前身sp上。

在R协会为支持Simple Features(一种存储和访问矢量几何的开源标准和模型)的开发授予了一笔资金后,“R-spatial”的开发时间(和兴趣)有了激增。这导致了sf软件包的出现。多个场合反映了对sf的巨大兴趣。这一点在R-sig-Geo Archives中尤为明显,这是一个长期开放访问的电子邮件列表,其中包含了多年来积累的大量R-spatial智慧成果。


图1.2: 从2013年初至今,选定的用于处理地理数据的R软件包的下载情况。y轴显示了来自流行的cloud.r-project.org CRAN镜像站的每日平均下载量,采用91天的滚动窗口(对数尺度)。

值得注意的是,更广泛的R社群中的变化,如由数据处理包dplyr(在2014年发布)所示,影响了R的空间生态系统的变化。与其他具有共同风格和强调“整洁数据”的包(包括例如ggplot2)一同,dplyr2016年底被置于 tidyverse '元包’中。 tidyverse方法,其关注长格式数据和快速直观命名的函数,已变得非常受欢迎。这导致了对“整洁地理数据”的需求,这部分需求已经由sf得到满足。tidyverse的一个明显特点是包之间有和谐地工作的趋势。 尚无等同于geoverse的东西,但在r-spatial 组织托管的包之间有着协调的尝试,并且越来越多的包使用 sf(见表1.2)。

表1.2: 截至2022-04-22,有332个软件包导入sf。根据前一个月每天的平均下载量,依赖于sf的前5个最多下载的软件包。

Package Downloads
spdep 1419
lwgeom 1000
stars 940
leafem 863
mapview 760

与此相关的是一组并行的发展,涉及到 rspatial 的一系列包。[^01-introduction-5]其主要成员是用于空间栅格处理的 terra 包。

[^01-introduction-5]: 注意 “r-spatial” 和 “rspatial” 之间的区别,前者是包含如 sf 等包的组织,后者是负责 terra 的组织。

R-spatial 历史

使用如sf这样的最新空间包有很多好处,但也很重要的是要了解R在空间能力方面的历史:许多函数、用例和教学材料都包含在较旧的包中。只要你知道在哪里查找,这些依然是今天有用的。

在1990年代,出现了大量的S脚本和少数几个用于空间统计的包。R包从这些发展而来,到2000年,已经有多个用于各种空间方法的R包,如"点模式分析、地统计学、探索性空间数据分析和空间计量经济学",根据 GeoComputation 2000 上呈现的一篇文章。其中一些,尤其spatialsgeostatsplancs仍然可以在CRAN上找到。

一个后续的 R News 文章(The R Journal的前身)包含了当时R中空间统计软件的概览,其中很多都是基于之前为 S/S-PLUS 编写的代码。这个概览描述了用于空间平滑和插值的包,包括akimageoR,以及用于点模式分析的包,包括splancsspatstat[。

接下来的 R News 期刊(第1卷/第3期)再次将空间包置于聚光灯下,对splancs进行了更详细的介绍,并对空间统计的未来前景发表了评论。此外,该期还介绍了最终成为spdep一部分的两个用于测试空间自相关的包。值得注意的是,评论提到了对空间接口的标准化、与GIS交换数据的高效机制和处理空间元数据(如坐标参考系统(CRS)的需求。

maptools(由 Nicholas Lewin-Koh 编写)是这个时期的另一个重要包。最初,maptools 只包含了一个围绕 shapelib 的包装器,并允许将ESRI Shapefiles读入到嵌套的几何列表中。相应的,现在已经过时的 S3 类名为 “Map”,它将这个列表与一个属性数据框存储在一起。“Map” 类表示法尽管如此重要,因为它直接为sp提供了营养,这是在其发布到 CRAN 之前的事。

2003年,Roger Bivand 发表了一个关于空间包的扩展评论。它提出了一个类系统,以支持 “GDAL 提供的数据对象”,包括 ‘基础的’ 点、线、多边形和栅格类型。此外,它建议与外部库的接口应构成模块化 R 包的基础。在很大程度上,这些想法在 rgdalsp 包中得到了实现。这些为 R 的空间数据分析提供了基础,正如在 Applied Spatial Data Analysis with R (ASDAR)中描述的,该书于2008年首次出版。十年后,R 的空间能力已经大大发展,但它们仍然建立在Bivand (2003)提出的想法之上:例如,GDAL和PROJ的接口仍然是R高性能地理数据 I/O 和 CRS变换能力的动力。

rgdal 包于2003年发布,为R提供了与GDAL(地理空间数据抽象库)的绑定,极大地增强了R从以前无法使用的地理数据格式中导入数据的能力。最初的发布仅支持栅格驱动,但后续的增强功能通过PROJ库提供了对坐标参考系统的支持,重新投影以及导入矢量文件格式。这些额外的功能大部分由Barry Rowlingson开发,并在2006年发布在rgdal的代码库中[参见 B. Rowlingson 等 2003以及R-help 邮件列表以获取上下文信息]。

sp包于2005年发布,解决了R无法区分空间和非空间对象的问题。sp起源于2003年在维也纳举行的一个研讨会,最初托管在sourceforge,后来迁移到R-Forge。在2005年之前,地理坐标通常被视为普通的数字。

sp使用S4类系统在Spatial对象的槽中存储诸如边界框、坐标参考系统和属性等信息,使得数据操作能够应用于地理数据(见第2章)。 此外,sp 为地理数据提供了一些通用方法,如summary()plot()。在接下来的十年里,sp类迅速成为R中地理数据的流行选择,依赖它的包数量从2008年的大约20个增加到2013年的超过100个。现在,依赖sp的包数量已经超过500个(与正在更快增长的 sf 包的数量相似),使其成为R生态系统的重要组成部分。使用sp的著名R包包括:gstat,用于空间和时空地理统计;geosphere,用于球面三角学;以及 adehabitat,用于分析动物对栖息地的选择。

尽管rgdalsp解决了许多空间问题,但直到2010年在Google Summer of Code项目中开发了rgeos,才能在sp对象上进行几何操作。诸如gIntersection()这样的函数使用户能够找到地理对象之间的空间关系,并修改其几何形状(有关使用sf进行几何操作的详细信息,请参见第5章)。

sp生态系统的一个局限性是其对栅格数据的有限支持。这一问题由2010年首次发布的raster得到了解决。raster的类系统和函数使一系列栅格操作成为可能,这些功能现已在terra包中实现,该包取代了raster,如第2章所示。rasterterra的一个重要功能是能够处理过大以至于无法装入RAM的数据集(R对PostGIS的接口也支持对地理矢量数据集的磁盘外操作)。rasterterra还支持地图代数。

与这些类系统和方法的开发并行,是R作为专用GIS软件接口的支持。GRASS和后续的spgrass6rgrass7包(分别用于GRASS GIS 6和7)是这个方向的突出例子。R和GIS之间的其他桥梁例子包括RSAGARPyGeoRQGIS,以及rqgisprocess

最初,可视化并不是重点,大部分R空间开发都集中在分析和地理操作上。sp提供了使用基础和格子绘图系统进行地图制作的方法,但对高级地图制作能力的需求正在增加。2009年首次发布的RgoogleMaps允许将R的空间数据覆盖在来自诸如Google Maps或OpenStreetMap等在线服务的’底图’瓦片上 。随后发布的ggmap包为ggplot2添加了类似的’底图’瓦片功能。尽管ggmap便于使用ggplot2进行地图制作,但其实用性受到需要fortify空间对象的限制,这意味着将它们转换成长数据框。这种方法对点来说效果很好,但对于线和多边形来说计算效率不高,因为每个坐标(顶点)都转换成一行,导致用于表示复杂几何形状的数据框非常庞大。尽管地理可视化倾向于专注于矢量数据,但栅格可视化在raster中得到了支持,并在rasterVis的发布后得到了提升,该包在一本关于空间和时间数据可视化主题的书中有描述。从那时起,R中的地图制作成为了一个热门话题,专用的包如tmapleafletrayshadermapview越来越受欢迎。

自2018年Geocomputation with R的第一版发布以来,地理R包的开发已经加速。terraraster包的继任者,首次在2020年发布,为使用栅格数据集的R用户带来了多个好处:它比前身更快,用户界面也更直接,如第2.3节所示。

在2021年中期,sf包通过整合球面几何计算进行了实质性(在某些情况下是破坏性)的更改。从那时起,默认情况下,许多具有地理CRS的数据上的空间操作使用S2球面几何引擎作为后端,见第2.2.9节。自2018年以来,用R表示和处理地理数据的其他方式还包括starslidR包。starssf紧密集成,处理栅格和矢量数据立方体。lidR处理基于飞机的LiDAR(光探测与测距)点云。

此次现代化有多个动机,包括新技术和标准的出现,以及R环境之外的空间软件开发的影响。最重要的外部因素影响了大多数空间软件,包括R空间包,这些因素是始于2018年的PROJ库的重大更新,其中包括许多破坏性的变化。最重要的是,这些变化迫使用’Well Known Text’替换坐标参考系统的’proj-string’表示,如第2.4节和第7章所示。

自2018年以来,R中空间可视化工具的进展与几个因素有关。首先,开发了新类型的空间图,包括rayshader包,它提供了光线追踪和多种山体阴影方法的组合,以生成2D和3D数据可视化 。其次,ggplot2获得了新的空间功能,主要归功于ggspatial包,该包添加了一些空间可视化元素,包括比例尺和北箭头,以及gganimate,该包允许平滑和可定制的空间动画 。第三,提高了可视化大型空间数据集的性能。这尤其与tmap中自动绘制缩小比例的栅格以及在mapview包中使用高性能交互式渲染平台的可能性有关,例如"leafgl""mapdeck"。最后,一些现有的映射工具已被重写,以最小化依赖性,改进用户界面或允许更容易地创建扩展。这包括mapsf包(cartography的继任者)以及tmap包的第4版,在该版本中大多数内部代码都经过了修订。

在2021年底,Roger Bivand 在R-sig-Geo 邮件列表上宣布了 rgdalrgeosmaptools 将于2023年底退役的计划。这不仅会对现有使用这些包的工作流程产生重大影响,也将影响依赖于 rgdalrgeosmaptools 的包。因此,Bivand 的建议是转向更现代的工具,包括 sfterra,正如本书接下来的章节中所解释的。

练习

E1. 考虑上面描述的’GIS’(地理信息系统)、‘GDS’(地理数据科学)和’地理计算’这几个术语。哪个(如果有的话)最能描述你想通过使用地理*方法和软件来做的工作?为什么?

E2. 提供使用可编程语言(如R)进行地理计算而不是使用基于图形用户界面(GUI)的GIS(如QGIS)的三个理由。

E3. 在2000年,Stan Openshaw写道,地理计算涉及对其他人有"实际益处或用处"的工作。考虑一个实际问题和可能的解决方案,这些解决方案可以通过分析、可视化或模拟地理数据获得新证据来指导。用纸和笔(或其他用于计算的东西)勾画输入和可能的输出,说明地理计算如何有助于解决问题。

-------------已经到底啦-------------