交通事故統計情報のオープンデータをQGISに読み込む
はじめに
警察庁から公開されているオープンデータ「交通事故統計情報」には事故が発生した位置情報が記録されています。この位置情報をGISのオープンソースソフトのQGISをつかって地図上にプロットします。
目次
作業のポイント
実施環境及びデータの出典
- PC:MacBook Air (Retina, 13-inch, 2020) OS バージョン 11.4
- QGIS:3.14
- データの出典:警察庁ウェブサイト(
https://www.npa.go.jp/publications/statistics/koutsuu/opendata/index_opendata.html
)
1. データのダウンロード
警視庁の配布サイトから2020年(令和2年)のCSVデータをダウンロードします。
- 配布元URL:オープンデータ|警察庁Webサイト
- ファイル名:本票_01-12月(csv形式:53.9MB)( honhyo_2020.csv )
2. QGISへ読み込み
2.1. CSVテキストレイヤの追加
QGISのメニュー レイヤ→レイヤを追加→CSVテキストレイヤの追加 を選択し、データソースマネージャー(CSVを読み込むウインドウ)を表示させます。
2.2. ヘッダーを読み飛ばしてCSVデータを取り込む
ポイントは3つ
① エンコーディングをShift_JISに指定すること
② 破棄するヘッダ行数に1を指定して、CSVファイルに記載されているフィールド名を取り込まないこと
③ジオメトリ定義を「ジオメトリなし」とすること
データ読み込みが完了すると、レイヤーに「honhyo_2020」が表示されます。
3. データの加工と空間情報へ変換
DBツールを用いて位置情報の数値を空間情報に変換します。
3.1. DBマネージャの起動
QGISメニューからの「データベース→DBマネージャ」を選択し起動します。
3.2. 仮想レイヤをSQLウインドウを起動
DBマネージャでは、QGISがインストールされているPCからアクセス可能なデータベースからデータを取得することができますが、QGISに読み込んだレイヤは「仮想レイヤ」としてSQLを実行することができます。
「仮想レイヤ」を選択、オレンジ色で囲んだアイコン「SQLウインドウ」をクリックします。
3.3. SQLの記述
仮想レイヤでは、レイヤー名がテーブル名として扱われます。
また、列名を付与せずCSVを読み込んだ場合、QGISによってfield_の後に1から始まる列番号の名前が自動的に付与されます。
56列(field_56)が経度、55列(field_55)緯度です。
3.3.1 座標の表記形式
このデータはDMS形式(度分秒形式)で経度10桁、緯度9桁の固定長で記載されています。
<記載例>
経度:139度44分43.55秒 → 1394443550
緯度: 35度39分30.9秒 → 353930900
3.3.2 データ加工クエリ
DMS形式で記載されているデータをSQLでDgree形式(度単位10進数形式)に変換します。度、分、秒の要素を切り出した後、分は60、秒は3600で割ることで度に単位を統一することができます。
秒に関しては今回のフォーマットで上記のピンク色とオレンジ色部分の5桁を抽出すると、0.001秒が1と表現されているため,3600000の商を求めます。
3.3.3 ジオメトリデータの読み込み
- 「実行」ボタンをSQLを実行
- ジオメトリカラム(今回はgeom)を指定
- レイヤ名の入力(今回はhonhyo_2020_geom)
- 「読み込み」ボタンをクリック
3.3.4. 座標参照系の設定
クエリでは座標参照系を指定できていないため、レイヤーに表示されていているhonhyo_2020_geomを右クリックして、プロバティ画面を開き参照座標系を世界測地系(EPSG:4326)を指定します。
4. 地図上にプロット
東京都心
新宿駅付近
© OpenStreetMap contributors