sf パッケージの使用法

参考URL:Simple Features: Building Spatial Data Pipelines in R

作業を開始する前に、データセットをダウンロードして作業ディレクトリに配置し、このチュートリアルで必要な以下のパッケージをロードします。

sf で R にデータを読み込むことは、比較的簡単な作業です。PostGIS データベースから様々な R データベースツールを使用してシンプル・フィーチャを直接インポートできますが、今回は簡単に作業ディレクトリのシェイプファイルから読み込みます。

このポリゴンに関連する属性を表示や操作するためには、オブジェクトを従来の R データフレームのように扱うことができます。基本の plot 関数を使用すると、すべての属性にマップされたポリゴンを迅速かつ便利に表示することができます。

図 1: SF データフレーム内の全変数の基本プロット

次に、下院の各議員の投票データセットを読み込む必要があります。

各議員が大統領に同調して投票した回数の割合を示す「トランプスコア」(trump_score)を計算しています。今回は、主にこの変数を視覚化することに着目します。この変数をマッピングするには、投票データの表を地区ごとのポリゴンに結合する必要があります。sf オブジェクトは、データフレームとして扱うことができるので、dplyr の join 関数を使用すれば簡単に結合を行うことができます。

両方のデータセットを1つのsfオブジェクトに結合したので、ggplotでマップすることができます。ggplot に sf オブジェクトを渡すと、geom_sf コマンドは、オブジェクトに埋め込まれた well-known text の ‘geom’ フィールドに基づいて、プロットするのが点なのか、線またはポリゴンなのかを理解します。この例におけるその他の sf 固有のggplotコマンドは、マップに使用する代替の投影を指定可能にする coord_sf です。epsg(spatialreference.org)コードによりで座標参照系を選択することができます。


この地図は、議会のひどく党派心の強い性質に関する我々の理解を裏付けるものです。

次のステップは、国の特定の部分を拡大することです。dplyr を使用して、上中西部(ミネソタ州、ウィスコンシン州、アイオワ州)の3州だけをサブセットにしてマップします。sf オブジェクトを再度投影するついでに、ポリゴンの重心を抽き出し、その重心を使用して各地区にラベルを付けます。

この例では、tidyverse パッケージ・ユーザには馴染みの ‘%>%’ 演算子を使用して、sf 関数を magrittr パイプラインにネストする方法を示します。その次に、dplyr を使ってポリゴンを分解する方法を見ていきます。

アメリカ全体の元の地図を見てみましょう。今回はトランプスコアを州レベルで集計します。

精通した dplyr 構文を使用すれば、州ごとに地区をグループ化し、要約統計量を計算することができます。sf オブジェクトは dplyr とうまく統合されるため、この関数は自動的に表と一緒に空間データをグループ化とマージを行います。最終的な結果は、従来のデスクトップ GIS の geoprocessing dissolve tool の結果と似ています。

最後に、st_writeコマンドを使用して、変換した sp オブジェクトをデータベースやローカルのシェイプファイルに出力することができます。

このチュートリアルでは、sf の解析ツールの表面だけを掘り下げています。R でより高度な空間解析を学ぶことに興味がある場合は、このようなビネットやパッケージの完全なドキュメントをチェックすることをお勧めします。