都道府県ごとの河川データを1つのcsvファイルに変換する

 河川データを都道府県別ではなく,水域別に抽出したい.そんな動機から QGIS と EXCEL の間を行ったり来たりしている.QGISで都道府県ごとの河川データをマージするではかなり無謀なことをやった.今回はもう少し丁寧にデータを扱ってみたい.

QGIS での作業

レイヤの「エクスポート」「地物の保存…」

 すでに国土数値情報の河川データはレイヤとして取り込んであるものとする.国土数値情報の河川データの属性テーブルを編集してみたで書いたが,北海道のデータも訂正済みであるとする.47 個あるレイヤを一つずつ右クリックして「エクスポート」「地物の保存…」と進む.

レイヤを右クリックして「エクスポート」「地物の保存...」
レイヤを右クリックして「エクスポート」「地物の保存…」

「ベクタレイヤを名前を付けて保存」ダイアログでの注意点

 「ベクタレイヤを名前を付けて保存…」ダイアログでは文字コード,レイヤオプションの CREATE_CSVT および GEOMTRY に注意する.

 Windows 環境では文字コードを Shift_JIS にしておくのが無難である.

 レイヤオプションの CREATE_CSVT は YES にしておく.最も重要な点だが, GEOMETRY を <Default> のままにしておくと,最も重要な座標情報がエクスポートされず,属性テーブルだけがエクスポートされてしまう.必ず AS_WKT など具体的なものを選択すること.

「ベクタレイヤを名前を付けて保存...」
「ベクタレイヤを名前を付けて保存…」

 AS_WKT の他,AS_YX, AS_XY, AS_XYZ などの選択肢があるが,調べていない.

「レイヤオプション」のGEOMETRYをAS_WKTとすること
「レイヤオプション」のGEOMETRYをAS_WKTとすること

エクスポート先は別のフォルダ 1 個にまとめる

 何度も書いている気がするが,エクスポート先は一つにまとめておく方が後で楽である.ファイル名にも規則性を持たせるべきだ.Power Query での一括インポートを念頭に置いている.

EXCEL での作業

EXCEL の Power Query でデータの取得

 ここからは EXCEL での作業となる.新規ブックの「データ」メニューから「データの取得」「ファイルから」「フォルダーから」と進む.

Power Query 「データの取得」「ファイルから」「フォルダーから」
Power Query 「データの取得」「ファイルから」「フォルダーから」

 フォルダーパスを聞かれるのでユーザーインターフェースで指定する.

フォルダーパスの指定
フォルダーパスの指定

ファイル名をフィルター

 いきなり読み込むのではなく「データの変換」をクリックして Power Query エディタを起動する.

 フォルダー内のファイル名がまず並ぶと思う.筆者の環境ではフォルダ内に他の種類のファイルがあるため,ファイル名にフィルターをかけて目的のファイルのみ抽出している.

Name 列を右クリックして「テキストフィルター」「指定の値で終わる...」
Name 列を右クリックして「テキストフィルター」「指定の値で終わる…」

 具体的なフィルター条件は各自の環境で異なるだろう.規則的なファイル名という先程の記述がここで生きている.

行のフィルター
行のフィルター

カスタム列の追加

 カスタム列を追加し,「カスタム列の式」に csv とタイプするとインテリセンスが働いて候補の関数がポップアップする.Csv.Document を選択する.

カスタム列を追加し列の式に Csv.Document とタイプする
カスタム列を追加し列の式に Csv.Document とタイプする

 さらに続けて ([ とタイプすると引数の候補がポップアップするので,[Content] を選ぶ.

引数に ([Content]) とタイプする
引数に ([Content]) とタイプする

 カスタム列の列名の右側に左右に開く矢印のアイコンが見える.これをクリックすると下図のようにテーブルの内容が展開される.ここまで来れば,カスタム列から展開した列以外の列は全て削除して構わない.

カスタム列を展開する
カスタム列を展開する

 ここでは省略しているが,さらに「1行目をヘッダーとして使用」して「閉じて読み込む」.結果は 286483 件.

地物数は 286483 件である
地物数は 286483 件である

フォルダーからの一括インポートでは文字化けする?

 しかしながら,なぜか河川名が文字化けしてしまう.csv ファイルを一つずつインポートすると文字化けしないため,どうもフォルダーからの一括インポートのタイミングで文字化けが発生するらしい.Microsoft には何とかしてもらいたい.

しかし河川名が文字化けする
しかし河川名が文字化けする

 この後,ブックを保存し,さらに「別名で保存」で csv ファイルとして保存する.

再び QGIS に戻る

QGIS でレイヤを追加

 QGIS でその csv テキストファイルをベクタレイヤとして読み込み,レイヤのプロパティを確認してみる.下図の通り,データ長が 0 のままである.よく考えてみると CSVT ファイルを作成していない.シェープファイルに変換するとデータ長が明確になるのはそのためかもしれない.

CSVテキストレイヤのプロパティ
CSVテキストレイヤのプロパティ

 CSVテキストレイヤをベクタレイヤとして追加した結果である.北海道と九州で明らかにおかしいデータがあるが,特定と対処法はまだ分からない.

CSVテキストレイヤをベクタレイヤとして追加した結果
CSVテキストレイヤをベクタレイヤとして追加した結果

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください