属性データ作成の自動化について

583 views
Skip to first unread message

T Yamamoto

unread,
Oct 10, 2021, 3:40:57 AM10/10/21
to QGIS初心者質問グループ
国土地理院の行政区域の属性テーブルを編集しようとしております。
【国土地理院 行政区域データ】

N03_004の市町村文字の後ろに"1"、"2"、”3”を加えて新しい行としたいです。
行政区域データ.PNG
例として上記画像のN03_004にあります天龍村の後ろに”1”、”2”、”3”を加え『天龍村1』『天龍村2』『天龍村3』と新しい行を作成。場所は同じN03_004とします。それ以外のN03_001~N03_007については元のデータと同じものを入れます。

つまり
N03_001→長野県
N03_002→NULL
N03_003→下伊那郡
N03_004→天龍村1~3 と新しい行を作成。それぞれの行に対するN03_001~007の値は同じとする
N03_007→20413

以上の作業を全ての市町村に行いたいのですが、自動化、あるいはフィールド計算機で行う方法を教えて頂きたいです。量が量なので困ってしまいました。
ご教授よろしくお願いいたします。

tomoyuki arai

unread,
Oct 11, 2021, 10:21:04 AM10/11/21
to QGIS初心者質問グループ
山本様

こんにちは。

N03_004のカラムが現在市町村名が入って重複のあるデータとなっているところを、
天龍村1、天龍村2、、、のようにユニークな値の入ったカラムとしたいということでしょうか。

私ならば、このような課題に対してはQGISの外で処理する方法を考えます。
というのも、この課題を実現するコードは分岐を交えながら全列を処理していく必要があるからで、
このような処理はQGIS、ひいてはその技術の基盤となっているデータベースやSQLでは
あまり得意ではない印象があるからです。

従って、手順としては次のようにするでしょう。
1. まずはQGIS上でユニークな属性カラムを追加する(例えば$idを値とするカラム)
2. csv形式でテーブルをエクスポートする
3. python など、テキスト処理の可能なプログラミング言語でデータを作成する
    例えば辞書型オブジェクトで個数カウンターを用意してやれば、
    天龍村1、天龍村2、、、のようなデータは簡単に作成できるでしょう。
4. $id カラムと、天龍村1、天龍村2、、、のデータを含むカラム2列のCSVファイルを作成する
5. QGISでこのCSVファイルをテーブルで読み込み、もとの行政区域データと
    $idカラムでテーブル結合を行う

「自動化、あるいはフィールド計算機で行う方法」というリクエストからはそれてしまいますが、
ご参考まで。

新井 智之

2021年10月10日日曜日 16:40:57 UTC+9 T Yamamoto:

ありた

unread,
Oct 11, 2021, 6:11:11 PM10/11/21
to QGIS初心者質問グループ
こんにちは

・地物の複製
  プロセシングツールの「平行移動した地物の配列」でステップ距離0で可能です。
  また出力結果には instance 属性が追加され、連番が付与されます。

・付与された連番をもとに属性情報の修正
  プロセシングツールの「フィールド計算機」で可能です。
  適用する属性名を N03_004 としたのち、計算式として下記式を指定します。
  "N03_004" || if("instance" > 0, "instance", '')

  if 関数を使っているのは「並行移動した地物の配列」の instance 属性は、
  元のデータは 0 として存在するためで、そうでない場合は不要です。

・不要な属性の削除
  プロセシングツールの「属性の削除」で instance 属性を選択し実行します。

以上の処理は、プロセシングツールのモデル作成でフロー化することができます。



留意点として、国交省(国土地理院ではありません)の国土数値情報の行政区域は
島嶼部や飛地などは異なるポリゴンとして作成されています。
必要に応じて、一番最初に「融合 (dissolve)」でマルチポリゴン化したり、
フィールド計算機で uuid() で一意な ID の付与などを行ってください。


また複製ではなく、島嶼部など同一属性の別の地物に対して連番を振るには
プロセシングツールの「自動インクリメント属性の追加」で可能です。

T Yamamoto

unread,
Oct 20, 2021, 3:28:44 AM10/20/21
to QGIS初心者質問グループ
返信が遅れ、申し訳ございません。

つたない文章にも関わらず、明確な対応を頂いたことに感謝いたします。
結論から申し上げまして、tarai様の案を活用しようかな、、、と思いました。しかし、『地蔵インクリメント属性の追加』は知らない機能であったので、今後活用させてください。

ありがとうございました。
2021年10月12日火曜日 7:11:11 UTC+9 ありた:
Reply all
Reply to author
Forward
0 new messages