QGISのフィールド計算機で国土数値情報の河川データの属性を修正する

 国土交通省の国土数値情報の河川データには不備がある.テーブル構造の不一致についてはテーブル構造の修正には「属性のリファクタリング」で修正方法を述べた.今回は属性テーブルの値を修正する.

 値を修正するだけのつもりでいたが,結局「属性のリファクタリング」まで手を出してしまった.おかでげ国土数値情報の河川データはほぼ修正できたと思う.

流下方向判定

 流下方向判定のコードは W05_005 である.そもそも定義が真偽値型であるのに,true または 1, false または 0 という定義が曖昧である.ざっとデータを眺めたところ,データ長が 4 または 1 のフィールドだけのようであり,true か 1 かで揺れている.これを統一するなら数字に揃えたほうが良さそうである.

フィールド計算機を開く

 レイヤの属性テーブルを開いた状態で下図のように「編集モード切替」「フィールド計算機を開く」ボタンをクリックする.

フィールド計算機を開く
フィールド計算機を開く

フィールド計算機の設定

 下図に示したように設定する.「既存のフィールドを更新する」にチェックを入れ,ポップアップメニューから目的とするフィールド(今回は W05_006 )を選択し,「条件」の CASE をダブルクリックすると「式」に CASE 式の概要が入るので,条件と処理をタイプして入力する.

フィールド計算機
フィールド計算機

 これは SQL において下記コードのような処理を行うものである.

UPDATE TABLE SET [W05-07_02-g_Stream].[W05_006] = SELECT CASE WHEN "W05_006" = 'true' THEN '1' END

 続いて河川端点のフィールドについて変更を行う.

河川端点

 河川端点は具体的には 4 列ある.河川始点 (W05_007), 河川終点 (W05_008), 流路始点 (W05_009), 流路終点 (W05_010) である.

河川端点コードの構造

 河川端点コードのデータ長は北海道が 7 桁で最短であり,四国地方が 10 桁,その他は 13 桁である.しかし,コードをよく見てみると,ユニークな値は右から 7 文字のみであることが分かる.

北海道の属性テーブルの河川端点コード
北海道の属性テーブルの河川端点コード
四国地方の属性テーブルの河川端点コード
四国地方の属性テーブルの河川端点コード
北海道・四国地方以外の属性テーブルの河川端点コード
北海道・四国地方以外の属性テーブルの河川端点コード

 レイヤのマージの際に発生したエラーはデータ長が長すぎる,というものであった.おそらく,ユニークな文字列を残せば外部キーとしての役割は果たせるだろう.

 ということで,河川端点コードは右から 7 文字だけ取り出せば良い,という方針が立つ.

具体的な手順

 フィールド計算機で「既存のフィールドを更新する」をチェック (1) し,編集対象のフィールドを選択 (2) する.

フィールド計算機で「既存のフィールドを更新する」をチェックし編集対象のフィールドを選択する
フィールド計算機で「既存のフィールドを更新する」をチェックし編集対象のフィールドを選択する

 「条件」のCASEをダブルクリック (3) する.

「条件」のCASEをダブルクリック
「条件」のCASEをダブルクリック

 condition を選択しておいて「文字列」から length をダブルクリック (4) する.引数に “W05_009” とタイプしてカッコを閉じ,> 7 とタイプして condition の入力は完了である.

condition を選択しておいて文字列からlengthをダブルクリック
condition を選択しておいて文字列からlengthをダブルクリック

 result を選択しておいて「文字列」の right をダブルクリック (5) する.続けて引数に “W05_009”, 7 とタイプしてカッコを閉じれば result の入力は完了である.

result を選択しておいて文字列の right をダブルクリック
result を選択しておいて文字列の right をダブルクリック

 CASE式の全文は下図のとおりである.日本語に訳すと,「フィールド “W005_009” の文字列長が 7 より大きければ,右から 7 文字取り出して置換する」である.to_string 関数で包んだ目的は,先頭の文字が 0 であった場合の桁落ちを防ぐことである.

CASE WHEN length("W05_009") > 7 THEN to_string(right("W05_009", 7)) END
CASE式の全文
CASE式の全文

 この処理を W05_007, W05_008, W05_009, W05_010 に行い,さらにレイヤの数だけ繰り返す.地道な作業である.

原典資料種別

 原典資料種別 (W05_005) も最後の方で引っかかったフィールドである.リンク先にあるように,本来 1 桁のコードであるからデータ長も 1 であるべきなのだが,データ長 3 のレコードがあるようで,鹿児島県と沖縄県がベクタレイヤのマージの際にエラーで引っかかる.

鹿児島県の属性テーブルの原典資料種別コードのデータ長がエラーの原因
鹿児島県の属性テーブルの原典資料種別コードのデータ長がエラーの原因

 おそらく複数の原典資料を記録しているものと思われる.データベースの正規化という点ではテーブルを分けるのが正解であるが,そこまでする必要があるとも思えない.

 方法は 2 つある.何らかの手段で値を一つだけに限定するか,フィールドそのものを削除してしまうかである.

 今回はフィールド計算機の練習も兼ねているため,一つの値を取り出すことにする.具体的には,最初の値だけを抽出する.

属性テーブルを開く

 レイヤを右クリックして「属性テーブルを開く」.

レイヤを右クリックして「属性テーブル」
レイヤを右クリックして「属性テーブルを開く」

 「編集モード切替」ボタンをクリックする.

編集モード切替
編集モード切替

 「フィールド計算機を開く」ボタンをクリックする.

フィールド計算機を開く
フィールド計算機を開く

 「既存のフィールドを更新する」をチェック (1) する.

既存のフィールドを更新する
既存のフィールドを更新する

 ポップアップメニューから更新したいフィールドを選択 (2) する.

ポップアップメニューからフィールドを選択する
ポップアップメニューからフィールドを選択する

  「文字列」から left をダブルクリックして選択 (3) する.

 
「文字列」からleftをダブルクリック
「文字列」からleftをダブルクリック

 left 関数の引数をタイプ (4) する.

引数をタイプする
引数をタイプする

 最後に OK ボタンをクリックする.「編集モード切替」ボタンをクリックすると保存するか聞かれるので「保存」ボタンをクリックする.

編集を終了
編集を終了

度重なるエラー

 ここまで来るとエラーにも慣れてどう対処すればいいのか見当がつくようになる.今度もデータ長が足りないというものだ.

QGIS version: 3.16.2-Hannover
QGIS code revision: f1660f9da5
Qt version: 5.11.2
GDAL version: 3.1.4
GEOS version: 3.8.1-CAPI-1.13.3
PROJ version: Rel. 6.3.2, May 1st, 2020
プロセシングアルゴリズム...
アルゴリズム 'ベクタレイヤのマージ' を開始しています...
入力パラメータ:
{ 'CRS' : None, 'LAYERS' : ['C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-06_36-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-06_37-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-06_38-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-06_39-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_02-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_03-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_04-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_05-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_06-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_07-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_15-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_16-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_17-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_18-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_40-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_41-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_42-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_43-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_44-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_45-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_46-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-07_47-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_09-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_10-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_11-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_12-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_13-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_14-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_19-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_20-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_22-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_23-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_24-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_31-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_32-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_33-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_34-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-08_35-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-09_25-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-09_26-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-09_27-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-09_28-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-09_29-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-09_30-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-21_01-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-21_08-g_Stream.shp','C:/Users/USER/Dropbox/20210211RIVER/ShapeFiles/Streams/W05-21_21-g_Stream.shp'], 'OUTPUT' : 'TEMPORARY_OUTPUT' }

出力タイプをMultiLineStringに設定しています
レイヤをパッケージ中 1/47: W05-06_36-g_Stream
レイヤをパッケージ中 2/47: W05-06_37-g_Stream
レイヤをパッケージ中 3/47: W05-06_38-g_Stream
レイヤをパッケージ中 4/47: W05-06_39-g_Stream
レイヤをパッケージ中 5/47: W05-07_02-g_Stream
レイヤをパッケージ中 6/47: W05-07_03-g_Stream
レイヤをパッケージ中 7/47: W05-07_04-g_Stream
レイヤをパッケージ中 8/47: W05-07_05-g_Stream
レイヤをパッケージ中 9/47: W05-07_06-g_Stream
レイヤをパッケージ中 10/47: W05-07_07-g_Stream
レイヤをパッケージ中 11/47: W05-07_15-g_Stream
レイヤをパッケージ中 12/47: W05-07_16-g_Stream
レイヤをパッケージ中 13/47: W05-07_17-g_Stream
レイヤをパッケージ中 14/47: W05-07_18-g_Stream
レイヤをパッケージ中 15/47: W05-07_40-g_Stream
レイヤをパッケージ中 16/47: W05-07_41-g_Stream
レイヤをパッケージ中 17/47: W05-07_42-g_Stream
レイヤをパッケージ中 18/47: W05-07_43-g_Stream
レイヤをパッケージ中 19/47: W05-07_44-g_Stream
レイヤをパッケージ中 20/47: W05-07_45-g_Stream
レイヤをパッケージ中 21/47: W05-07_46-g_Stream
レイヤをパッケージ中 22/47: W05-07_47-g_Stream
レイヤをパッケージ中 23/47: W05-08_09-g_Stream
レイヤをパッケージ中 24/47: W05-08_10-g_Stream
レイヤをパッケージ中 25/47: W05-08_11-g_Stream
レイヤをパッケージ中 26/47: W05-08_12-g_Stream
レイヤをパッケージ中 27/47: W05-08_13-g_Stream
レイヤをパッケージ中 28/47: W05-08_14-g_Stream
レイヤをパッケージ中 29/47: W05-08_19-g_Stream
レイヤをパッケージ中 30/47: W05-08_20-g_Stream
レイヤをパッケージ中 31/47: W05-08_22-g_Stream
レイヤをパッケージ中 32/47: W05-08_23-g_Stream
レイヤをパッケージ中 33/47: W05-08_24-g_Stream
レイヤをパッケージ中 34/47: W05-08_31-g_Stream
レイヤをパッケージ中 35/47: W05-08_32-g_Stream
レイヤをパッケージ中 36/47: W05-08_33-g_Stream
レイヤをパッケージ中 37/47: W05-08_34-g_Stream
レイヤをパッケージ中 38/47: W05-08_35-g_Stream
レイヤをパッケージ中 39/47: W05-09_25-g_Stream
レイヤをパッケージ中 40/47: W05-09_26-g_Stream
レイヤをパッケージ中 41/47: W05-09_27-g_Stream
レイヤをパッケージ中 42/47: W05-09_28-g_Stream
レイヤをパッケージ中 43/47: W05-09_29-g_Stream
レイヤをパッケージ中 44/47: W05-09_30-g_Stream
レイヤをパッケージ中 45/47: W05-21_01-g_Stream
地物を 出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b: 属性 "W05_004": 文字列の長さ 17 はフィールドの上限(14)を超えています を格納できませんでした に書き込めませんでした
地物を 出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b: 属性 "W05_004": 文字列の長さ 17 はフィールドの上限(14)を超えています を格納できませんでした に書き込めませんでした
地物を 出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b: 属性 "W05_004": 文字列の長さ 17 はフィールドの上限(14)を超えています を格納できませんでした に書き込めませんでした
地物を 出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b: 属性 "W05_004": 文字列の長さ 17 はフィールドの上限(14)を超えています を格納できませんでした に書き込めませんでした
地物を 出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b: 属性 "W05_004": 文字列の長さ 17 はフィールドの上限(14)を超えています を格納できませんでした に書き込めませんでした
地物を 出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b: 属性 "W05_004": 文字列の長さ 16 はフィールドの上限(14)を超えています を格納できませんでした に書き込めませんでした
レイヤをパッケージ中 46/47: W05-21_08-g_Stream
レイヤをパッケージ中 47/47: W05-21_21-g_Stream
実行は19.75秒で完了しました
結果:
{'OUTPUT': '出力レイヤ_42fd1a3b_9255_4991_b013_88554f1f1a3b'}

出力レイヤの読み込み
アルゴリズム 'ベクタレイヤのマージ'が終了しました

 問題になっている W05_004 は河川名である.データ長の不足はテーブルの構造に関する問題であるため,フィールド計算機ではなく,属性のリファクタリングで対応すべき問題だろう.

属性のリファクタリングでフィールドのデータ長を変更する

 さて,国土数値情報の河川データの属性テーブルを編集してみたが…では属性テーブルのデータ長の揺れを指摘した.河川名のデータ長の最大値は 40 と見てよいだろうが,安全マージンとして 255 としておこう.

 「プロセシング」メニューの「ツールボックス」へと進む.

「プロセシング」「ツールボックス」
「プロセシング」「ツールボックス」

 「ベクタテーブル」「属性のリファクタリング」へと進む.

「ベクタテーブル」「属性のリファクタリング」
「ベクタテーブル」「属性のリファクタリング」

 「始点ID」「終点ID」フィールドはそれぞれ 9 番目,10 番目に来るべきものである.

「始点ID」「終点ID」フィールドの順序を入れ替える
「始点ID」「終点ID」フィールドの順序を入れ替える

 「始点ID」「終点ID」が正しい順序となった.

「始点ID」「終点ID」の正しい順序
「始点ID」「終点ID」の正しい順序

 フィールド名を修正する.

フィールド名を修正する
フィールド名を修正する

 河川名 (W05_004) のデータ長を修正する.

河川名 (W05_004) のデータ長を修正する
河川名 (W05_004) のデータ長を修正する

 この後「実行」ボタンをクリックすると「再構成レイヤ」として修正されたレイヤがパネルに出現する.

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

「再構成レイヤ」を「エクスポート」「地物の保存...」
「再構成レイヤ」を「エクスポート」「地物の保存…」

 「ベクタレイヤを名前を付けて保存…」ダイアログではフルパス付きのファイル名で保存する.

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

 「再構成レイヤ」は不要となるので「削除」する.

「再構成レイヤ」は不要となるので「削除」
「再構成レイヤ」は不要となるので「削除」

ベクタレイヤのマージ

 さて,ここまで来てやっと全てのレイヤをマージできる.プロセシングツールボックスの「ベクタ一般」から「ベクタレイヤのマージ」と進んでも,「ベクタ」メニューの「データ管理ツール」から「ベクタレイヤのマージ…」と進んでも良い.

「プロセシングツールボックス」「ベクタ一般」「ベクタレイヤのマージ」
「プロセシングツールボックス」「ベクタ一般」「ベクタレイヤのマージ」
「ベクタ」「データ管理ツール」「ベクタレイヤのマージ」
「ベクタ」「データ管理ツール」「ベクタレイヤのマージ」

「ベクタレイヤのマージ」ダイアログ

 「ベクタレイヤのマージ」ダイアログが開くので,「入力レイヤ」右のボタンをクリック (1) する.

「入力レイヤ」右のボタンをクリック
「入力レイヤ」右のボタンをクリック

 ここまでの操作でレイヤパネルに読み込んだレイヤが表示されているはずである.「すべて選択する」をクリック (2) する.

「すべて選択する」
「すべて選択する」

 OKをクリックするか左向きの三角形ボタンをクリック (3) する.

OKをクリックするか左向きの三角形ボタンをクリック
OKをクリックするか左向きの三角形ボタンをクリック

 「変換先の座標参照系(CRS)」を指定 (4) する.ここは任意である.この後,「実行」ボタンをクリックすると,マージされた結果が「出力レイヤ」としてレイヤパネルに表示される.

「変換先の座標参照系(CRS)」を指定
「変換先の座標参照系(CRS)」を指定

 「出力レイヤ」を右クリックして「エクスポート」「地物の保存…」と進む.フルパス付きのファイル名で保存するとレイヤパネルに表示される.「出力レイヤ」は不要となるので削除する.

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

ログ

 「レイヤのマージ」ダイアログのログを示す.ここまで来るのに随分時間と手間をかけた.得られたデータをどう活用していくか,考えている.

QGIS version: 3.16.2-Hannover
QGIS code revision: f1660f9da5
Qt version: 5.11.2
GDAL version: 3.1.4
GEOS version: 3.8.1-CAPI-1.13.3
PROJ version: Rel. 6.3.2, May 1st, 2020
プロセシングアルゴリズム...
アルゴリズム 'ベクタレイヤのマージ' を開始しています...
入力パラメータ:
{ 'CRS' : QgsCoordinateReferenceSystem('EPSG:4326'), 'LAYERS' : ['C:/Users/User/Dropbox/20210217RiverBLOG/Stream01.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream02.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream03.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream04.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream05.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream06.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream07.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream08.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream09.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream10.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream11.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream12.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream13.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream14.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream15.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream16.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream17.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream18.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream19.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream20.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream21.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream22.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream23.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream24.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream25.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream26.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream27.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream28.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream29.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream30.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream31.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream32.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream33.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream34.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream35.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream36.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream37.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream38.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream39.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream40.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream41.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream42.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream43.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream44.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream45.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream46.shp','C:/Users/User/Dropbox/20210217RiverBLOG/Stream47.shp'], 'OUTPUT' : 'TEMPORARY_OUTPUT' }

指定されたCRS EPSG:4326を使用しています
出力タイプをMultiLineStringに設定しています
レイヤをパッケージ中 1/47: Stream01
レイヤをパッケージ中 2/47: Stream02
レイヤをパッケージ中 3/47: Stream03
レイヤをパッケージ中 4/47: Stream04
レイヤをパッケージ中 5/47: Stream05
レイヤをパッケージ中 6/47: Stream06
レイヤをパッケージ中 7/47: Stream07
レイヤをパッケージ中 8/47: Stream08
レイヤをパッケージ中 9/47: Stream09
レイヤをパッケージ中 10/47: Stream10
レイヤをパッケージ中 11/47: Stream11
レイヤをパッケージ中 12/47: Stream12
レイヤをパッケージ中 13/47: Stream13
レイヤをパッケージ中 14/47: Stream14
レイヤをパッケージ中 15/47: Stream15
レイヤをパッケージ中 16/47: Stream16
レイヤをパッケージ中 17/47: Stream17
レイヤをパッケージ中 18/47: Stream18
レイヤをパッケージ中 19/47: Stream19
レイヤをパッケージ中 20/47: Stream20
レイヤをパッケージ中 21/47: Stream21
レイヤをパッケージ中 22/47: Stream22
レイヤをパッケージ中 23/47: Stream23
レイヤをパッケージ中 24/47: Stream24
レイヤをパッケージ中 25/47: Stream25
レイヤをパッケージ中 26/47: Stream26
レイヤをパッケージ中 27/47: Stream27
レイヤをパッケージ中 28/47: Stream28
レイヤをパッケージ中 29/47: Stream29
レイヤをパッケージ中 30/47: Stream30
レイヤをパッケージ中 31/47: Stream31
レイヤをパッケージ中 32/47: Stream32
レイヤをパッケージ中 33/47: Stream33
レイヤをパッケージ中 34/47: Stream34
レイヤをパッケージ中 35/47: Stream35
レイヤをパッケージ中 36/47: Stream36
レイヤをパッケージ中 37/47: Stream37
レイヤをパッケージ中 38/47: Stream38
レイヤをパッケージ中 39/47: Stream39
レイヤをパッケージ中 40/47: Stream40
レイヤをパッケージ中 41/47: Stream41
レイヤをパッケージ中 42/47: Stream42
レイヤをパッケージ中 43/47: Stream43
レイヤをパッケージ中 44/47: Stream44
レイヤをパッケージ中 45/47: Stream45
レイヤをパッケージ中 46/47: Stream46
レイヤをパッケージ中 47/47: Stream47
実行は4.51秒で完了しました
結果:
{'OUTPUT': '出力レイヤ_ffd1df4c_09ca_4fdb_bf45_99a7f2fc986e'}

出力レイヤの読み込み
アルゴリズム 'ベクタレイヤのマージ'が終了しました

まとめと課題

 国土交通省の国土数値情報の河川データを修正した.フィールド計算機による値の修正,属性のリファクタリングによるテーブル構造の修正を要した.

 ベクタレイヤのマージにより全都道府県の河川データを一つのシェープファイルに結合した.

 河川データはリレーショナルデータベースという観点から見ると,特異な構造を有していることが分かる.ノードを有しており一見,木構造のように思えるが厳密な木構造ではない.単純化して上下対象の木構造として考えても,矛盾する点が出てくる.

 現実をどう扱うのが良いか,再帰クエリを使うのが良いのか,考えあぐねている.位相幾何学やネットワーク構造を学んだ人なら思いつくのかもしれない.

コメントを残す

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

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