Skip to content

Commit

Permalink
ch11-16
Browse files Browse the repository at this point in the history
  • Loading branch information
babayoshihiko committed Feb 25, 2024
1 parent fde0313 commit da90ce9
Show file tree
Hide file tree
Showing 11 changed files with 1,116 additions and 297 deletions.
89 changes: 44 additions & 45 deletions 11-algorithms-ja.Rmd

Large diffs are not rendered by default.

175 changes: 88 additions & 87 deletions 12-spatial-cv-ja.Rmd

Large diffs are not rendered by default.

145 changes: 72 additions & 73 deletions 13-transport-ja.Rmd

Large diffs are not rendered by default.

11 changes: 5 additions & 6 deletions 14-location-ja.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -212,12 +212,11 @@ reclass # 出力は一部省略
#> max values : 8000, 3, 3, 3
```


## 大都市圏を定義 {#define-metropolitan-areas}

大都市圏とは、50万人以上が住む 20 km^2^ のピクセルと定義している。
大都市圏とは、50 万人以上が住む 20 km^2^ のピクセルと定義している。
この粗い解像度のピクセルは、Section \@ref(aggregation-and-disaggregation) で紹介したように、`aggregate()`\index{aggregation}、速やかに作成することができる。
以下のコマンドは、引数 `fact = 20`結果の解像度を20倍にしている (元のラスタの解像度が1km^2^であったことを思い出してみよう)。
以下のコマンドは、引数 `fact = 20`結果の解像度を 20 倍にしている (元のラスタの解像度が 1 km^2^ であったことを思い出してみよう)。

```{r 14-location-11, warning=FALSE, cache=TRUE, cache.lazy=FALSE}
pop_agg = aggregate(reclass$pop, fact = 20, fun = sum, na.rm = TRUE)
Expand All @@ -233,7 +232,7 @@ pop_agg = pop_agg[pop_agg > 500000, drop = FALSE]
これをプロットすると、8 つの大都市圏 (Figure \@ref(fig:metro-areas)) が見えてくる。
各領域は、1つ以上のラスタセルで構成される。
1つのリージョンに属するすべてのセルを結合できればコマンドは、
**terra**\index{terra} の `patches()` である。
**terra**\index{terra (package)} の `patches()` である。
その後、`as.polygons()` でラスタオブジェクトを空間ポリゴンに変換し、`st_as_sf()``sf`. オブジェクトに変換する。

```{r 14-location-13, warning=FALSE, message=FALSE}
Expand Down Expand Up @@ -294,7 +293,7 @@ metro_names = metro_names$city |>
- `map()`\index{loop!map} (`lapply()`\index{loop!lapply} の **tidyverse** 相当)。これは、OSM \index{OpenStreetMap} クエリー関数 `opq()` (Section \@ref(retrieving-data) 参照) のバウンディングボックス\index{bounding box} を定義する、8 つの大都市名すべてを繰り返し処理するものである
- `add_osm_feature()` で、キー値が `shop` の OSM\index{OpenStreetMap} 要素を指定する (共通のキー:値のペアの一覧は [wiki.openstreetmap.org](https://wiki.openstreetmap.org/wiki/Map_Features) を参照)
- `osmdata_sf()`、これは OSM\index{OpenStreetMap} データを空間オブジェクト (クラス `sf`) に変換するものである
- `while()`\index{loop!while}、1 回目のダウンロードに失敗すると繰り返し (今回は 3 回) ダウンロードを試みる。^[OSM-downloadは1回目で失敗することもあるようである
- `while()`\index{loop!while}、ダウンロードに失敗すると、さらに 2 回ダウンロードを試みる。^[OSM-download は 1 回目で失敗することもあるようである
]

このコードを実行する前に: 約 2 GB のデータをダウンロードすることを考慮してみよう。
Expand Down Expand Up @@ -457,6 +456,6 @@ if (knitr::is_latex_output()) {
## 演習

```{r, echo=FALSE, results='asis'}
res = knitr::knit_child('_14-ex.Rmd', quiet = TRUE, options = list(include = FALSE, eval = FALSE))
res = knitr::knit_child('_14-ex-ja.Rmd', quiet = TRUE, options = list(include = FALSE, eval = FALSE))
cat(res, sep = '\n')
```
145 changes: 67 additions & 78 deletions 15-eco-ja.Rmd

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions 16-synthesis-ja.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ identical(nz_u1, nz_u3$geom)
Base R の `aggregate()` 関数を使うか、**dplyr**`summarise()` を使うかは好みの問題であるが、後者の方が読みやすいだろう。

つまり、R で地理データを扱う場合、たとえ 1 つのパッケージであっても、複数の選択肢から選ぶことができる場合が多いということである。
R のパッケージが増えれば、さらに選択肢は広がる。例えば、古いパッケージの **sp** を使っても同じ結果を得ることができる。
R のパッケージが増えれば、さらに選択肢は広がる。例えば、古いパッケージの **sp** を使っても同じ結果を得ることができる。\index{sp (package)}
しかしながら、良いアドバイスをしたいという本書のゴールに従うと、パフォーマンスもよく将来性のある **sf** パッケージを推奨する。
このことは、本書のすべてのパッケージに当てはまるが、他の手段の存在を知って自分の選択について正当化できることは、(邪魔にならない程度に) 役に立つことがある。

Expand Down Expand Up @@ -113,22 +113,22 @@ length(spdeps) # 463

## ギャップとオーバーラップ {#gaps}

ジオコンピュテーションは巨大な分野であり、多くのギャップがあることは避けられない。
ジオコンピュテーションは巨大な分野であり、多くのギャップがあることは避けられない。\index{じおこんぴゅてーしょん@ジオコンピュテーション}
特定にトピックやテクニック、パッケージを意図的に強調し、あるいは省略するなど、選択的に行っている。
地理データの操作、座標参照系の基本、データの読み書き、可視化技術など、実際のアプリケーションで最もよく必要とされるトピックを重視するよう努めた。
また、本書は、ジオコンピュテーションに必要なスキルを身につけ、さらに高度なトピックや特定のアプリケーションに進む方法を紹介することを目的としており、いくつかのトピックやテーマは何度も登場する。

また、他で深く取り上げられているトピックをあえて省略した。
例えば、点パターン解析、空間補間 (クリギング)、空間回帰といった空間データの統計的モデリングは、機械学習の文脈で Chapter \@ref(spatial-cv) で触れているが、詳細には触れていない。
例えば、点パターン解析\index{てんぱたーんかいせき@点パターン解析}、空間補間\index{くうかんほかん@空間補間} (例えばクリギング)、空間回帰\inde{くうかんかいき@空間回帰}といった空間データの統計的モデリングは、機械学習の文脈で Chapter \@ref(spatial-cv) で触れているが、詳細には触れていない。
これらの手法については、@pebesma_spatial_2023 の統計学的指向の章や、ポイントパターン分析に関する書籍 [@baddeley_spatial_2015]、空間データに適用するベイズ手法 [@gomez-rubio_bayesian_2020;@moraga_spatial_2023]、健康 [@moraga_geospatial_2019][山火事深刻度分析](https://bookdown.org/mcwimberly/gdswr-book/application---wildfire-severity-analysis.html) など特定のアプリケーションに焦点を当てた書籍といった優れた資料がすでに存在している [@wimberly_geographic_2023]
その他の話題としては、リモートセンシングや、GIS 専用ソフトと並行しての R の利用 (ブリッジとしてではなく) などが挙げられるが、これらは限定的である。
これらの話題については、[R におけるリモートセンシングについての議論](https://github.com/r-spatial/discuss/issues/56)、@wegmann_remote_2016 や [Marburg University](https://geomoer.github.io/moer-info-page/courses.html) から入手できる GIS 関連教材など、多くの資料がある。

Chapter \@ref(spatial-cv) と Chapter \@ref(eco) で空間統計推論よりも機械学習に焦点を当てたのは、このトピックに関する質の高いリソースが豊富にあるためである。
Chapter \@ref(spatial-cv) と Chapter \@ref(eco) で空間統計推論よりも機械学習に焦点を当てたのは、このトピックに関する質の高いリソースが豊富にあるためである。\index{とうけいすいろん@統計推論}
これらのリソースには、生態系のユースケースに焦点を当てた @zuur_mixed_2009、@zuur_beginners_2017、そして [css.cornell.edu/faculty/dgr2](https://css.cornell.edu/faculty/dgr2/teach/) でホストされている *Geostatistics & Open-source Statistical Computing* の自由に利用できる教材とコードがある。
[*R for Geographic Data Science*](https://sdesabbata.github.io/r-for-geographic-data-science/) では、地理データサイエンスとモデリングのための R の紹介をしている。

また、「ビッグデータ」(ハイスペックなラップトップに収まらないデータセットという意味) に対するジオコンピュテーションはほとんど省略している。
また、「ビッグデータ」(ハイスペックなラップトップに収まらないデータセットという意味) に対するジオコンピュテーションはほとんど省略している。\index{びっぐでーた@ビッグデータ}
この決定は、一般的な研究や政策アプリケーションに必要な地理的データセットの大部分は、個人用ハードウェアに収まるという事実によって正当化される (Section \@ref(cloud) 参照)。
コンピュータの RAM を増やしたり、[GitHub Codespaces: 本書のコードを実行可能](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=84222786&machine=basicLinux32gb&devcontainer_path=.devcontainer.json&location=WestEurope) のようなプラットフォームで利用できる計算能力を一時的に「借りる」ことは可能である。
さらに、小さなデータセットで問題を解くことを学ぶことは、巨大なデータセットで問題を解くための前提条件であり、本書で強調しているのは「始めること」であり、ここで学んだスキルは大きなデータセットに移行したときに役立つものである。
Expand Down Expand Up @@ -187,13 +187,13 @@ Chapter \@ref(gis) で紹介した空間データベースは、メモリで処
- 大型・汎用プログラミングQ&Aサイト [stackoverflow.com](https://stackoverflow.com/)
- [RStudio Community](https://community.rstudio.com/)[rOpenSci Discuss](https://discuss.ropensci.org/) ウェブフォーラム、 [Stan](https://discourse.mc-stan.org/) フォーラムなど、特定のソフトウェアツールに関連するフォーラムなど、特定のエンティティに関連するオンラインフォーラム。
- GitHub などのソフトウェア開発プラットフォームは、R-spatial パッケージの大半の課題トラッカーや、最近では **sfnetworks** パッケージに関する議論 (バグ報告だけでなく) を促すために作られた議論ページなどをホストしている ([luukvdmeer/sfnetworks/discussions](https://github.com/luukvdmeer/sfnetworks/discussions/)を参照)。
- チャットルームやフォーラム [rOpenSci](https://ropensci.org/blog/2022/09/13/contributing-ropensci/)[geocompx](https://geocompx.org) コミュニティ (これには質問をすることができる [Discord server](https://discord.com/invite/PMztXYgNxp) もある)。本書もここに関係している。
- チャットルームやフォーラム [rOpenSci](https://ropensci.org/blog/2022/09/13/contributing-ropensci/)[geocompx](https://geocompx.org) コミュニティ (これには質問をすることができる [Discord server](https://discord.com/invite/PMztXYgNxp) もある)。本書もここに関係している。\index{geocompx}
- [OSGeoJapan のメーリングリスト](https://www.osgeo.jp/mailing_list) (日本語)
- [r-wakalang Slack](https://github.com/tokyor/r-wakalang) (日本語)

### **reprex** による再現性の例 {#reprex}

良い質問とは、明確に述べられた質問で、さらにアクセスしやすい完全に再現可能な例があるとよい (https://r4ds.hadley.nz/workflow-help.html も参照)。
良い質問とは、明確に述べられた質問で、さらにアクセスしやすい完全に再現可能な例があるとよい (https://r4ds.hadley.nz/workflow-help.html も参照)。\index{さいげんせい@再現性}
また、ユーザーの視点から「うまくいかなかった」コードを示した後、何を見たいかを説明することも有効である。
再現可能な例を作成するための非常に便利なツールが、**reprex** パッケージである。
予期せぬ動作を強調するために、問題を示す完全に再現可能なコードを書き、`reprex()`関数を使って、フォーラムや他のオンラインスペースに貼り付けられるようなコードのコピーを作成することができる。
Expand Down Expand Up @@ -256,7 +256,7 @@ Chapter \@ref(intro) で紹介されているように、ジオコンピュテ
R の強みは、科学的な再現性を重視し、学術研究において広く使用され、地理データの統計的モデリングを比類なくサポートすることから、特にジオコンピュテーションの定義に関連しています。
さらに、他の言語やフレームワークを学ぶのはコンテキストスイッチというコストが発生するため、ジオコンピュテーションのための 1 つの言語を深く学ぶことを推奨する。
]
*Python**C++**JavaScript**Scala*\index{Scala}、*Rust*\index{Rust} を使っても、同じ深さでジオコンピュテーションを勉強することができる。
*Python*\index{Python}*C++**JavaScript**Scala*\index{Scala}、*Rust*\index{Rust} を使っても、同じ深さでジオコンピュテーションを勉強することができる。
それぞれが進化した地理空間能力を有している。
例えば、Pythonのパッケージ [**rasterio**](https://github.com/rasterio/rasterio) は、この本で使われている **terra** パッケージを補足/置換できるものである。
Python のジオコンピュテーションについては、[*Geocomputation with Python*](https://py.geocompx.org/) を参照。
Expand Down
Loading

0 comments on commit da90ce9

Please sign in to comment.