1 はじめに

本書は、コンピュータの力を使って地理データで何かを行う方法について書かれている。 地理データの読み書きと何らかの処理、静的およびインタラクティブな地図の作成、実世界の問題を解決するためのジオコンピュテーション の適用、地理現象のモデリングなど、交通や環境系など多様な空間スキルを教える。 本書は、様々な地理的操作をどのようにリンクさせることができるかを、文章に挟まれた再現可能な「コードチャンク」で示す。このことにより、透明性のある、したがって科学的なワークフローも教えてくれる。

本書は、ジオコンコンピュテーションのために既存のツールの利点を活用することだけにとどまらない。地理データ構造、および地理データ処理によってソフトウェアを理解し、新しいツールを開発する際に必要なソフトウェアを理解する。 本書全体で解説するコマンドライン駆動のアプローチと、Chapter 11 で解説するプログラミングにより、ソフトウェアによって課された創造性の制約を取り除くことができる。 本書を読み、演習問題を解いた後は、読者が現実の課題に取り組むためにスキルを応用し、地図とコードで作業をこなし、再現可能かつフリーソフトウェア活動に参加する準備ができることを期待している。

地理空間用のフリー&オープンソースソフトウェア (FOSS4G) はここ数十年の間に驚くほどのスピードで進歩している。 OSGeo のような組織のおかげで、応用地理技術はもはや高価なハードウェアやソフトウェアを持つ人だけのものではなくなり、誰でも高性能なジオコンピュテーション向けソフトウェアをダウンロードして実行することができるようになったのである。 QGIS などのオープンソースの地理情報システム (geographical information system, GIS) により、世界中で地理分析にアクセスできるようになった。 GIS プログラムは強力であるが、本書で解説するコマンドライン・インターフェース (CLI) よりも、グラフィカル・ユーザー・インターフェース (graphical user interface, GUI) を重視する傾向がある。 多くの GIS にみられる GUI 偏重は、完全な再現性のある作業を難しくするという、意図しない副作用がある。Chapter 10 で見るように、この問題は「ジオアルゴリズム」を呼び出すことで解決することができる。 大きく異なる二つのアプローチを単純に比較すると、Table 1.1 に示すようになる。

TABLE 1.1: ソフトウェアパッケージによる重点の違い (地理情報システム (GIS) の GUI と R の GUI)。
属性 デスクトップ GIS (GUI) R
主要分野 地理学 計算機学、統計学
焦点 グラフィカル コマンド
再現性 低い 高い

R だけがジオコンピュテーションのための CLI を提供する言語ではない。 Python (Geocomputation with Python で解説)、Julia、JavaScript など、強力なジオコンピュテーション機能を持つコマンド環境は他にも存在する。 しかし、R にはジオコンピュテーションを学ぶこと、さらに応用することに適した利点がある。Section 1.2 で説明するように、特に、統計学、モデル化、可視化の用途である。

本書を執筆する動機は、科学研究における再現性の重要性 (下記注参照) である。 再現性のある地理データ解析ワークフローをより身近なものにし、コマンドラインから利用できるオープンな地理空間ソフトウェアの力を実証することを目的としている。 R は、他の言語へのインターフェースを提供し (Eddelbuettel and Balamuta 2018)、多くの空間ソフトウェアライブラリにアクセスすることができる。これについては、Section 1.3 で簡単に説明し、Chapter 10 で実行してみたい。 しかし、ソフトウェアの詳細に触れる前に、一歩下がってジオコンピュテーションとは何かを考えてみる価値がある。

再現性はコマンドラインインターフェースの大きな利点だが、実際にはどのような意味があるのだろうか。 ここでは、次のように定義している。「一般にアクセス可能なコードを用いて、他の人が同じ結果を生成できるプロセス」 これは単純で簡単に思えるかもしれないが (Rのコードをスクリプトファイルで注意深く管理すれば) 、教育や科学的プロセスにとって深い意味を持つ (Pebesma, Nüst, and Bivand 2012)

1.1 ジオコンピュテーションとは?

ここでは、ジオコンピューテーションを以下のように定義する。

再現性、柔軟性、ツール開発に重点を置き、地理データを使って問題を解決する研究、ソフトウェア開発、実用化の分野。

ジオコンピューテーションという用語は比較的新しく、1996年の第 1 回学術会議で用いられた。1 ジオコンピュテーションを (当時) 一般的に使われていた「計量地理学」と区別したのは、その初期の提唱者が提唱した、「創造的・実験的」応用 (Longley et al. 1998) と新しいツールや手法の開発に重点を置いたことである (Openshaw and Abrahart 2000)。 この用語を提唱 (かつ、おそらく定義も) した Stan Openshaw によると、「ジオコンピュテーションは、様々な異なるタイプのジオデータを使用し、「科学的」アプローチという全体的な文脈の中で、関連するジオツールを開発することである」(Openshaw and Abrahart 2000)。 この初期の定義に基づき、R によるジオコンピューテーションは、データ分析やモデリングにとどまらず、学術的に興味深いだけでなく、有益な仕事のための新しいツールや手法の開発を含む。

しかし、私たちのアプローチは当初の定義とは一点異なり、再現性とコラボレーションに重点を置いている。 21世紀初頭は、まだ必要なハードウェア、ソフトウェア、データの入手が困難で、読者がコード例を再現することは非現実的だった。 それから今日まで、解析環境は急速に進展している。 RAM を十分に (少なくとも 8 GB 以上) 搭載したノートパソコンがあれば、一般に公開されているデータセットにジオコンピュテーション用のソフトウェアをインストール・実行し、また本書を再現することができるはずである。 1990年代から2000年代初頭にかけて、高性能なコンピュータが一般の人々にとって手の届かないものであったために存在したジオコンピュテーションに対する金銭的・ハード的な障害は、現在では取り除かれている。2 また、公的に入手できるデータセットが広く普及してきたことも、ジオコンピュテーションはより身近になってきた理由の一つである。この点については、Chapter 8 で扱う。 この分野の初期の作品とは異なり、本書で紹介するすべての研究は、本書と一緒に提供されるコードと spData のサンプルデータを使って再現可能である。spData などの R パッケージのインストールは Chapter 2 で解説する。

ジオコンピュテーションは、地理情報科学 (GIScience) 、ジオマティクス、ジオインフォマティクス、空間情報科学、地理情報工学 (Longley 2015)、空間データサイエンス (Spatial Data Science, SDS) といった他の用語と密接に関連している。 それぞれの用語は、起源や主な適用分野は異なるものの、GIS の影響を受けた「科学的」 (再現性と反証可能性を意味する) アプローチに重点を置いている点で共通している。 例えば、SDS は「データサイエンス」のスキルと大規模なデータセットを重視し、ジオインフォマティクスはデータ構造に焦点を当てる傾向がある。 しかし、用語間の違いよりも重複の方が大きいため、すべてを包含する大まかな同義語としてジオコンピュテーションを使用している。 これらはすべて、地理データを応用科学的な作業に利用することを目的としている。 しかし、この用語の初期の使用者とは異なり、私たちは「ジオコンピュテーション (Geocomputation) 」 (または Stan Openshaw が呼んだ「ジオコンピュテーション (GeoComputation、C が大文字になっている) 」) というまとまった学術分野があることを示そうとするものではない。

ジオコンピュテーションは最近の言葉であるが、古い考えに影響を受けている。 2000年以上の歴史を持つ地理学 の一部と見ることができる (Talbert 2014)。 また、1960年代に登場した GIS (Neteler and Mitasova 2008) の延長線上にあるものでもある (Coppock and Rhind 1991)

地理学は、コンピュータが発明されるずっと以前から、人類と自然界との関係を説明し、影響を与える上で重要な役割を担ってきた。 著名な探検家・地理学者であり博識であった Alexander von Humboldt (彼の名前を冠した種、地物、大学などがある) が、この役割を以下のように説明している。 1800年代初めに南米を旅行した際に自然地理学や植物地理学の伝統の基礎を築いただけでなく、自然界を保護するための政策への道も開いたのである (Wulf 2015)。 本書は、現代のコンピュータとオープンソースソフトウェアの力を活用し、進化し続ける「地理学の伝統」 (Livingstone 1992) に貢献することを目的としている。

本のタイトル案には Geography with RR for GIS があったが、これらは古い学問分野とリンクしていることが分かる。 それぞれに利点がある。 前者は、単なる空間データ以上のもので構成されているというメッセージを伝えている。 後者は、この本が GIS として R を使い、地理データの空間演算を行うための本であることを伝えている (Bivand, Pebesma, and Gómez-Rubio 2013)。 しかし、GIS という言葉には、R の最大の強みを伝えきれない意味を含んでいる (Table 1.1 参照)。 すなわち、地理データと地理以外のデータの処理、モデル化、可視化をシームレスに行うことができ、かつ再現性は GIS の能力を超えている。 ジオコンピュテーションは、再現可能なコード主導の環境で地理データを扱い、結果・方法・ツールをプログラムすることを示している。これが本書の狙いである。

1.2 なぜオープンソースをジオコンピュテーションに使うのか?

初期の地理学者は、気圧計、コンパス、六分儀 などのさまざまな道具を使って、世界に関する知識を深めてきた (Wulf 2015)。 海上での経度計算が可能になったのは、1761年に発明されたマリン・クロノメーターからで、これにより船はより直進的な航路をとることができるようになった。 今世紀に入る前、地理分析のためのデータやツールは不十分であった。

現在では、研究や実務に際して、地理データの不足ではなく、逆に多すぎるデータと多すぎるツールに悩まされている。 ほとんどのスマートフォンに全地球測位 (GPS) 受信機が搭載されている。 人工衛星や半自動運転車、市民科学者に至るまで、数多くのセンサーが世界のあらゆる場所を絶え間なく測定している。 データの生成速度が圧倒的に速く、自律走行車のような新技術は、毎日数百から数千ギガバイトのデータを生成する。 人工衛星からのリモートセンシングデータが膨大になり、対応するデータを 1 台のコンピュータで解析することが難しくなったため、Chapter 10 で扱うように一台のコンピュータでは処理しきれない。 この「ジオデータ革命」によって、高性能なコンピュータ・ハードウェアと、ノイズから信号を処理・抽出するための効率的でスケーラブルなソフトウェアに対する需要が高まっている。 オープンソースツールの進化により、膨大な地理データストアから直接またはアプリケーションプログラミングインターフェイス (Application Programming Interface, API) を介して地理データをインポートし処理することができる。

急速に変化するハードウェア、ソフトウェア、およびデータ環境では、将来性のあるツールを選択することが重要である。 オープンソースソフトウェアの大きな利点は、何千人もの潜在的な貢献者がいることによる開発速度と寿命である。 毎日何百人もの人々がオープンソースプロジェクトにバグレポートを提出し、新機能やドキュメントの改善を提案している。

このことと関係して、相互運用性が利点となる。 プロプライエタリな製品は、保守が難しいモノリシックな「帝国」になりがちだが (先に述べた利点と関連している)、オープンソース・ソフトウェアは、組み合わせることができるため、モジュール化されたツール「連合」と言えるだろう。 このため、R のようなオープンソースのデータサイエンス言語は、高性能な可視化ライブラリやファイル形式へのインターフェースといった新しい開発を迅速に取り入れることができる。一方、プロプライエタリなソリューションは遅れを取らないように苦労している。

もうひとつの大きな利点は、再現性である。 発見を再現できることは科学研究にとって不可欠であり、オープンソースソフトウェアは、他の人が同じツールを使ってあなたの発見をチェックしたり、新しい文脈であなたの方法を適用したりすることを可能にするため、再現性という重要な障壁がない。 誰でも無料でアクセスできるツールを使い、コードやデータを共有すると、研究結果を他の人がチェックし、それを基に構築できるようになる。これは、自分の作品を使ってもらったり、引用されたいと思うのであれば、大きなアドバンテージとなる。

多くの人にとって、再現可能なコードの共有と組み合わされたオープンソースソフトウェアの最大の利点は、コミュニティである。 プロプライエタリ・ソフトウェアのサポートは非常に使いづらいことが多い。一方、コミュニティでは質の高いサポートをすぐに得ることもある。 コミュニティはフィードバックやアイデアを提供してくれ、Chapter 16 でも取り上げるように、独自のツールや手法を開発する手助けをしてくれる。

R はオープンソースソフトウェアプロジェクトで、強力な言語であり、統計学者や開発者のコミュニティは常に進化し続けている (Wickham 2019)。 R はオープンソースソフトウェアで再現可能なジオコンピュテーショ ンを可能にする唯一の言語ではない。 R を使う理由の多くは、Python や Julia など、再現可能なデータサイエンスのための他のオープンソース言語にも当てはまる。 しかし、R 独自の重要な利点がいくつかある。

1.3 なぜ R をジオコンピュテーションに使うのか?

R は、統計計算とグラフィックスのための、マルチプラットフォームなオープンソース言語・環境である (r-project.org/)。 R は、幅広いパッケージによって高度な地理空間統計学 、モデリング、可視化もサポートしている。 RStudio のような新しい統合開発環境 (integrated development environment、IDE) のおかげで、より多くの人が R を使えるようになった。特に、インタラクティブな視覚化専用のパネルがあることで地図の作成が容易になった。

R の核は、オブジェクト指向の関数型プログラミング言語 (Wickham 2019)である。これに加えて、他のソフトウェアとの対話型インタフェースも設計されている (Chambers 2016)。 後者には、GIS ソフトウェア、「ジオライブラリ」、関数の宝庫への「ブリッジ」も多く含まれている (Chapter 10 を参照)。 そのため、C 言語、FORTRAN、Java などの (R と比較して) 低レベルな言語を習得する必要がなく、「ジオツール」を素早く作成するのに理想的である (Section 1.4 を参照)。 これは、GUI ベースの地理情報システムやプロプライエタリな地理情報システムが課す比喩的な「見えない壁」からの脱却のように感じられるだろう (GUI の定義については Table 1.1 を参照)。 さらに、R は他の言語へのアクセスを容易にしている。 例えば、パッケージの Rcpp は C++ の、reticulate は Python のコードを実行できるようにする。 つまり、R はさまざまな地理空間プログラムへの「橋渡し役」として使用できるのである (Section 1.4 参照)。

R の柔軟性と進化する地理的機能を示すもう一つの例は、インタラクティブな地図作成である。 Chapter 9 で見るように、R には「限られた対話型 (プロット) 機能しかない」 (Bivand, Pebesma, and Gómez-Rubio 2013) というのは、もはや真実ではない。 これは、Figure 1.1 を作成する以下のコードチャンクで実証されている (プロットを生成する関数は、Section 9.4 でカバーされている)。

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

FIGURE 1.1: 青いマーカーは著者の出身地を示している。ベースマップは、NASAが提供する夜の地球のタイル画像。オンライン版 (geocompr.robinlovelace.net) では、ズームインしたりポップアップをクリックするなどして、インタラクティブに楽しむことができる。

インタラクティブな地図としてならともかく、数年前に R (あるいは他のどのプログラミング言語でも) を使って Figure 1.1 を作成するのは困難だっただろう。 これは R の柔軟性と、knitrleaflet などの開発のおかげで、他のソフトウェアへのインターフェースとして使用できることを示すもので、本書を通じて繰り返し出てくるテーマである。 そのため、R コードを使用することで、抽象的な概念だけでなく、現実の現象を表す再現性の高い事例を参考にしながらジオコンピュテーションの教育を行うことができる。

R-spatial stack はインストールが簡単で、包括的でメンテナンスが行き届き、相互運用性の高いパッケージを備えている。 R には、基本インストールに含まれる統計関数と、多くの最先端手法を実装した何百ものよくメンテナンスされたパッケージがある。 R を使えば、驚くほど少ないコード行数で作業を開始することができ、デバッグやパッケージの依存関係の管理よりも、地理メソッドやデータに集中することができる。 R の特に優れた点は、優れた地図作成パッケージのおかげで、出版物のような品質のインタラクティブマップを簡単に作成できることである。

1.4 ジオコンピュテーションのためのソフトウェア

R は地理計算のための強力な言語であるが、地理データ解析のための他の多くの選択肢があり、何千もの地理関数を提供している。 地理計算のための他の言語を理解することは、特定のタスクに別のツールがより適切である場合を決定し、より広い地理空間エコシステムに R を配置するのに役立つだろう。 本節では、Chapter 10 に向けて、ジオコンピュテーションのための言語 C++JavaPython を簡単に紹介する。

R (と Python) の重要な特徴として、インタプリタ型言語であることが挙げられる。 REPL (Read-Eval-Print Loop) で対話的にプログラミングできるのがメリットである。 コンソールに入力されたコードは、コンパイルという中間段階を待たずに、即座に実行され、結果が表示される。 一方、C++ や Java などのコンパイルされた言語は、 (一度コンパイルされると) 動作が速くなる傾向がある。

C++ は、QGISGRASS GISSAGA などの多くの GIS パッケージの基礎を提供しているので、賢明な出発点であると言えるだろう。 よく書かれた C++ は非常に高速で、大規模な地理データセットを処理するようなパフォーマンスが重要なアプリケーションに適しているが、Python や R に比べて習得が困難である。 C++ は、Rcpp パッケージによってよりアクセスしやすくなり、R ユーザーのために C プログラミングへの良い「入り方」を提供している。 このような低レベルの言語を使いこなすことで、新しい高性能な「ジオアルゴリズム」を生み出す可能性や、GIS ソフトウェアの仕組みをより深く理解することができる (Chapter 11 を参照)。 しかし、R を使用してジオコンピュテーションを行う際には、必ずしも C++ を学ぶ必要はない。

Python は、特に GRASS GIS、SAGA、QGIS などの多くのデスクトップ GIS が Python API を提供しているので、ジオコンピュテーションには重要な言語である (Chapter 10 を参照)。 Python は、R と同様、データサイエンスでよく使われているプログラミング言語である。 両言語はオブジェクト指向であり、重複する部分が多いため、R から Python へのアクセスを容易にする reticulate パッケージや、オープンソースデータサイエンスエコシステム全体の利益のためにポータブルライブラリをサポートする Ursa Labs イニシアチブなどの取り組みに繋がっている。

実際には、R と Python のどちらにも強みがある。 どちらを使うかは、ある程度、応用や結果の伝達の領域よりは重要ではない。 どちらかを習得することで、もう一方を習得するためのスタートラインに立つことができるのである。 しかし、ジオコンピュテーションにおいては、Python よりも R の方が大きな利点がある。 R 言語自体の地理ラスタデータモデルのサポートが大幅に向上したこと (Chapter 2)、それに対応する可視化の可能性 (Chapter 2 と Chapter 9 参照) が含まれる。 同様に重要なこととして、R は空間統計 を含む統計のための比類ないサポートを持っており、何百ものパッケージ (Python の比ではない) が何千もの統計手法をサポートしている。

Python の大きな利点は、汎用プログラミング言語であることである。 デスクトップソフトウェア、コンピュータゲーム、Web サイト、データサイエンスなど、多くの領域で使用されている。 Python は、異なる (ジオコンピュテーション) コミュニティ間で唯一共有される言語であることが多く、多くの GIS プログラムをまとめる「接着剤」と見なすことができる。 QGIS や ArcMap を含む多くのジオアルゴリズムは、Python のコマンドラインからアクセスできるため、コマンドライン GIS のスターター言語として適している3

しかし、空間統計と予測モデリングでは、R は他の追随を許さない。 これは、R と Python のどちらかを選ばなければならないということではない。Python は、ほとんどの一般的な統計手法をサポートしており (ただし、空間統計の新しい開発は R の方が早くサポートする傾向がある) 、Python で学んだ多くの概念は R の世界にも適用することができる。 R と同様に、Python も地理データの解析と操作をサポートしており、shapelygeopandasrasterioxarray などのパッケージがある。

1.5 Rの空間エコシステム

R で地理データを扱う方法はたくさんあり、この分野では何十ものパッケージがある。4 本書では、この分野の最先端を学ぶと同時に、将来的にも通用する手法を確保するよう努めることとした。 ソフトウェア開発の多くの分野と同様に、R の空間エコシステムは急速に進化している (Figure 1.2)。 R はオープンソースであるため、Isaac Newton が 1675 で述べたように、「巨人の肩の上に立つ」ことによって、これらの開発は容易に過去の研究の上に構築することができるのである。 この方法は、コラボレーションを促進し、「車輪の再発明」を避けることができるという利点がある。 例えば、sf (Chapter 2 で取り上げている) というパッケージは、前身の sp の上に構築されたものである。

R-spatial の開発時間が急増し、R コンソーシアムから、ベクタ形状の保存とアクセスのためのオープンソースの標準とモデルであるシンプルフィーチャのサポートの開発に対する助成金が授与された。 その結果、sf パッケージ (Section 2.2.1) が誕生したのである。 複数の場所で sf への絶大な関心を反映している。 特に、長年にわたって蓄積された R-spatial の知恵を多く含むオープンアクセスのメールリストである R-sig-Geo Archives がそうである。

2013年初頭から現在までの、地理データを扱うための R パッケージのダウンロード数。y軸は、よく使われる cloud.r-project.org CRAN ミラーからの日次ダウンロードの平均数を91日間ローリングウィンドウ法で示している (対数スケール)。

FIGURE 1.2: 2013年初頭から現在までの、地理データを扱うための R パッケージのダウンロード数。y軸は、よく使われる cloud.r-project.org CRAN ミラーからの日次ダウンロードの平均数を91日間ローリングウィンドウ法で示している (対数スケール)。

データ処理パッケージ dplyr (2014年にリリース) に代表されるように、より広い R コミュニティのシフトが R の空間エコシステムのシフトに影響を与えたことは注目に値する。 dplyr2016年 の後半に tidyverse という「メタパッケージ」に配置され、スタイルを共有する他のパッケージ (例えば、ggplot2 など) と並び、「整えられた (tidy) データ」に重点を置いている。 ロング型データと直感的な名前の関数に焦点を当てた tidyverse アプローチは、絶大な人気を誇っている。 そのため、「整えられた地理的データ」が求められ、その一部を sf が担ってきている。 tidyverse の明らかな特徴として、パッケージが調和して動作する傾向がある。 同等の geoverse はないが、R-spatial エコシステムは、sfterra を中心に集約されており、本書では両者を解説する。sf に依存するパッケージ は Table 1.2 の通りである。 Chapter 10 で解説する通り、パッケージ間でも他の言語との間でも相互運用性が高い。

TABLE 1.2: sf に依存するパッケージで、前月の 1 日あたりの平均ダウンロード数が多い上位 5 位。 2023-11-14 時点で、 526 件のパッケージが sf をインポートしている。
パッケージ ダウンロード数
r5r 4774
stars 1354
leafem 1013
spdep 881
tmap 873

1.6 R-spatial の歴史

最新の空間パッケージである sf を使うメリットはたくさんあるが、R の空間機能の歴史を知っておくことも重要である。 古いパッケージには機能、ユースケース、教材が多いため、今でも十分役に立つ。

R の空間機能は、S 言語の初期の空間パッケージが起源である (Bivand and Gebhardt 2000)。 1990年代には、数多くの S スクリプトが開発され、空間統計のためのパッケージも数多く開発された。 2000 年までに、「点パターン解析、地球統計学、探索的空間データ解析、空間経済学」という様々な空間手法のための R パッケージが誕生した (Bivand and Neteler 2000)。 これらのうち、特に spatialsgeostatsplancs は CRAN でまだ利用可能である (B. S. Rowlingson and Diggle 1993; B. Rowlingson and Diggle 2017; Venables and Ripley 2002; Majure and Gebhardt 2016)。 主要な空間パッケージは Ripley (2001) で説明されており、空間平滑化と補間と点パターン分析の R パッケージの概要が述べられている。 そのうちの一つ(spatstat)は、最初のリリースから 20 年以上経った今でも活発にメンテナンスされている。

続く解説では、空間統計の将来の展望を概説し (Bivand 2001)、人気のある spdep パッケージ (Bivand 2017) の開発の舞台を設定した。 特筆すべきは、空間インターフェースの標準化、GIS とのデータ交換の効率的なメカニズム、座標参照系 (CRS) などの空間メタデータの取り扱いの必要性に言及したことである。 これらの目的はほぼ達成されている。

maptools (Bivand and Lewin-Koh 2017) もこの時期の重要なパッケージで、 Shapefile を読むための shapelib ライブラリへのインタフェースを提供し、sp に供給していた。 空間パッケージの拡張レビューでは、基本的な点、線、多角形、ラスタ型と外部ライブラリへのインタフェースを含む「GDALが提供するデータオブジェクト」をサポートするクラスシステムが提案された (Bivand 2003)。 これらのアイデアは rgdal パッケージと sp パッケージで実現され、2008 年に初版が出版された Applied Spatial Data Analysis with R (ASDAR) (Bivand, Pebesma, and Gómez-Rubio 2013) の基礎となった。 R の空間機能はそれ以来大幅に進化しているが、初期のパイオニアたちのアイデアの上に成り立っている。 例えば、GDAL と PROJ へのインターフェースは、R の高性能な地理データ I/O と CRS の変換機能を可能にしている。それぞれ Chaptger 7 と Chapter 8 で解説する。

2003 年にリリースされた rgdal は、R 用の GDAL バインディングを提供し、以前は利用できなかった地理データ形式からインポートする機能を大幅に強化した。 最初のリリースではラスタドライバのみをサポートしたが、その後の機能強化により、CRS (PROJ ライブラリ経由)、再投影、ベクタのインポートをサポートした。 これらの追加機能の多くは Barry Rowlingson によって開発され、2006 年に rgdal コードベースでリリースされた。

2005 年にリリースされた sp は、R の空間対応を大きく進展させた。 sp は、クラスとジェネリック関数を採用し、属性データだけでなく地理座標、点、線、ポリゴンやメッシュ (grid) を扱えるようになった。 sp は S4 クラスであり、バウンディングボックス、座標参照系 (CRS) 、属性などの情報を Spatial オブジェクトのスロットに格納する。 これにより、データ操作で地理データを扱えるようになった。 さらに、sp では、地理データのための summary()plot() などのジェネリックメソッドが用意されている。

その後の 10 年間で sp クラスは R の地理データ用として急速に普及し、これに依存するパッケージの数は2008年の約 20 から 2013 年には 100 以上に増加した (Bivand, Pebesma, and Gómez-Rubio 2013)。 2019年までに sp に依存するパッケージは 500 を超えた sf やその他のパッケージに移行するためその数は減少しているが、sp を使用する主な R パッケージには、空間・時空間地球統計学の gstat 、球面三角法の geosphere などの著名なパッケージもある (Pebesma and Graeler 2023; Calenge 2006; Hijmans 2016)

rgdalsp は空間に関する多くの問題を解決したが、2010年の Google Summer of Code プロジェクト ((Bivand and Rundel 2023)) で rgeos が開発されるまで、sp オブジェクトでジオメトリ操作を行うことができなかった。 gIntersection() などの機能により、地理的なオブジェクト間の空間的な関係を見つけたり、その形状を変更したりすることが可能になった (sfによる幾何学的な操作の詳細については、Chapter 5 を参照)。

sp エコシステムの限界は、ラスタデータのサポートが限定的であることであった。 これを克服したのが、2010年に初めてリリースされた raster である (Hijmans 2023b)。 Section 2.3 にあるように、raster クラスシステムと関数によって、さまざまなラスタ操作が可能になり、現在では terra パッケージに実装されている。 rasterterra の重要な機能は、RAM に収まらないほど大きなデータセットを扱うことができることであり、ディスク外操作でサポートしている。 raster および terra は、Section 4.3.2 で説明されているように、マップ代数もサポートしている。

このようなクラスシステムや手法の開発と並行して、専用の GIS ソフトのインターフェースとして R がサポートされるようになった。 GRASS (Bivand 2000) とそれに続くパッケージ spgrass6rgrass7rgrass は、この方向性の顕著な例であった (Bivand 2016a, 2016b, 2023)。 R と GIS の橋渡しの例としては、他に QGIS には qgisprocess (Dunnington et al. 2024)、SAGA には Rsagacmd (Pawley 2023)RSAGA (Brenning, Bangs, and Becker 2022)、ArcGIS には RPyGeo (Brenning 2012a, first published in 2008) がある (Chapter 10 参照)。

R-spatial の開発の大部分は解析と地理的な操作に集中しており、当初は可視化には焦点が当てられていなかった。 base と lattice の両方のプロット方式で地図を作る方法を提供していた sp であるが、高度な地図作成機能への要望が高まっていた。 2009 年にリリースされた RgoogleMaps は、Google Maps や OpenStreetMap (Loecher and Ropkins 2015) などのオンラインサービスの「ベースマップ」タイルの上に R 空間データを重ね合わせることができる。 その後、ggplot2 (Kahle and Wickham 2013) に同様の「ベースマップ」タイル機能を追加した ggmap パッケージがリリースされた。 gpmapggplot2 で地図を作ることを容易にしたが、fortify 空間オブジェクトをロング形式のデータフレームに変換する必要があるため、その実用性は限られていた。 これは点に対してはうまくいくが、線やポリゴンに対しては計算効率が悪く、各座標 (頂点) が行に変換されるため、複雑な形状を表現するためには巨大なデータフレームが必要となるのである。 地理的な可視化はベクタデータを中心に行われる傾向があるが、ラスタの可視化は raster でサポートされ、rasterVis のリリースでさらに盛り上がった (Lamigueiro 2018)。 それ以来、R での地図作成は話題となり、Chapter 9 で強調されているように、tmapleafletmapview などの専用パッケージがよく使われている。

Geocomputation with R 第 1 版が出版された 2018 年以降、地理系 R パッケージの開発が加速している。 raster パッケージの後継である terra は、2020 年に初めてリリースされ、ラスタデータセットを扱う R ユーザーにいくつかの利点をもたらしている [@-terra]。Section 2.3 で説明されているように、前任者よりも高速でより分かりやすいユーザーインターフェースを持っている。

Section 2.2.9 で説明する通り、sf パッケージは、2021 年半ばより非投影データに対しては S2 球面幾何学計算を取り入れた。 また、2018年以降の R で地理データを表現し作業する方法として、starslidR パッケージが追加されている。

この展開は、R 環境外の新技術、新標準、ソフトウェアによるものである (Bivand 2021)。 2018 年に始まった PROJ ライブラリ の変更により、CRS の proj-string 表現を、Section 2.4 と Chapter 7 で説明するように、Well Known Text に置き換えられなければならなくなった。

2018 年に Geocomputation with R の第 1 版が出版されて以来、空間データ可視化のためのいくつかのパッケージが開発・改良されてきた。 例えば、rayshader パッケージは、レイトレーシングと複数のヒルシェーディング (Morgan-Wall 2021) を介して、印象的でアニメーションしやすい 3D ビジュアライゼーションの開発を可能にする。 非常に人気のある ggplot2 パッケージは、ggspatial パッケージで、スケールバーと北矢印という新しい空間機能を得た (Dunnington 2021)gganimate はスムーズでカスタマイズ可能な空間アニメーションを可能にする (Pedersen and Robinson 2020)

既存の可視化パッケージも改良されたり書き直されたりしている。 大きなラスタオブジェクトは tmap で自動的に縮小され、leafglmapdeck を含むパッケージのおかげで、高性能なインタラクティブマップが可能になっている。 mapsf パッケージ (cartography の後継) は依存関係を減らし、パフォーマンスを向上させるために書き直された (Giraud 2021)。また、tmap はバージョン 4 で大きなアップデートが行われ、内部コードのほとんどが改訂された。

2021 年後半に、rgdalrgeosmaptools の引退計画が発表され、2023 年 10 月に CRAN にアーカイブされた。 この 2023 年末の引退は、これらのパッケージを適用する既存のワークフローに大きな影響を与えただけでなく、それらに依存するパッケージにも影響を与えた。 Chapter 2 で説明する sfterra のような最新の R パッケージは、本書で紹介するジオコンピュテーションのための強力で将来性のある基礎である。

1.7 演習

E1. GIS、GDS、ジオコンピュテーションという用語について考察しなさい。あなたが行おうとしている内容は、どれが最も当てはまるか、理由とともに説明しなさい。

E2. QGIS のようなグラフィカルユーザーインターフェース (GUI) ではなく、R のようにスクリプトでジオコンピュテーションを行う理由を 3 つ答えなさい。

E3. 2000年に、Stan Openshaw が、ジオコンピュテーションは「便利で有益な実務」な面があると述べた。現実の課題と、地理データの解析、可視化、モデル化から得られるエビデンスから得られる解決策の例を考えなさい。紙と鉛筆 (またはコンピュータ) で、入力と出力を描き、ジオコンピュテーションがどのように役に立つかを示しなさい。