隣接する県界線を一本にする方法

3,586 views
Skip to first unread message

ひまわり

unread,
May 25, 2023, 10:14:29 AM5/25/23
to QGIS初心者質問グループ
お世話になります。

QGISの初心者です。
県の境界線は、隣接する県同士、ぴったりと重なっているので、境界線を1本にしたいと思います。これだと思う方法で行ったのですがうまくいきません。

わたしが行った方法です。

日本地図のポリゴンデータを使って、ベクタ>空間演算ツール>融合を行い、県単位のポリゴンデータを作ります。次に、ベクタ>ジオメトリツール>ポリゴンを線に変換を行い、線のみのデータにします。県はクローズパス状態です。その次に、プロセシングツールボックス>ベクタ一般>重複ジオメトリの削除を実行しました。

これで完成かと思ってイラレで確認したのですが、県はクローズパスの状態で、境界同士も2本重なったままで1本になりません。

問題点や方法など、ご指南いただけると幸いです。
よろしくお願いいたします。

wata909

unread,
May 26, 2023, 5:36:15 PM5/26/23
to QGIS初心者質問グループ
ChatGPT先生のお告げに従ってやってみたところ、できたような気がします。
ただ、イラレがないので、最終的に合っているかどうか、不明なのですが・・・

1.使ったデータは、国土数値情報の行政界(神奈川県)
2.GeoJSON形式のファイルを読み込み、以下を実行
  ベクタ>ジオメトリツール>有効性チェック
  有効なジオメトリの出力レイヤと、アルゴリズム終了後に出力ファイルを開くにチェックを入れる
3.ベクタ>ジオメトリツール>ポリゴンを線に変換
4.ベクタ>空間演算ツール>融合を実行
5.プロセッシングtoolboxから、重複ジオメトリを削除を実行
6.プロセッシングtoolboxから、マルチパートをシングルパートに変換を実行

生成された地物を平行移動させても、下に線分が残ってなかったので、多分できていると思います。
参考までに、生成したラインをGeoJSONに変換したのを以下のリンクで共有します。


上手くいくといいのですが・・・

ひまわり

unread,
May 27, 2023, 8:23:40 AM5/27/23
to QGIS初心者質問グループ
wata909さま

ご教授いただいた方法で試したところ、無事に成功しました。
祈るような気持ちで、ひとつひとつ進めたのですが、
イラレで完成を確認したときは感激でした。
本当にどうもありがとうございました。

一部のパスを色分けしたPDFを共有します。これはwata909さまからの神奈川県のデータです。


じつはその後、わたしもChatGPTに聞いてみましたが、
なんど質問をくりかえしても、同じようなお告げにたどりつけません。

wata909さまは、ChatGPTに、どのような質問をなさったのでしょう?
一度の質問で済んだのでしょうか。
それとも何度かの質問を重ねた結果だったのでしょうか。
お聞かせいただけると幸いです。


2023年5月27日土曜日 6:36:15 UTC+9 wata909:

wata909

unread,
May 27, 2023, 7:24:01 PM5/27/23
to QGIS初心者質問グループ
ひまわりさま

確認ありがとうございます。
お役に立ったようで、嬉しいです。

以下、長くなりますが、回答です。
参考になると、幸いです。

--------
ChatGPT先生への指示ですが、以下のような感じです。
・ChatGPTのバージョンは、有料版のGPT-4モデル
・一つの会話をGIS関係の会話に特化させていて、そこで聞いた
・そこでまず、「 geojsonをtopojsonに変換する方法 」という質問をした
 GeoJSONの場合は、ポリゴンは、ポリゴンとして扱うのですが(結果として、境界線は2本ある)
  topojsonは、ポリゴンの境界線を共通境界線としてあつかうので、その変換でいけると考えたため
・出てきた結果がnode.jsを使ってやるものだったため、 QGISを使って変換できますかと質問したところ、Mapshaperという
 ツールを使ってやる方法が回答された https://mapshaper.org/
・最終的に「 QGIS等で隣接するポリゴンの線分を、1本の線分に変えたいのですが、どうすればいいでしょうか」と
 と質問したところ、以下のような回答になった

------
QGISで隣接するポリゴンの境界線(線分)を1本の線に統合するには、「ディゾルブ」(Dissolve)という処理を使用します。
以下に基本的な手順を説明します:

1. **QGISを起動**: QGISを起動し、作業する地図レイヤーを開きます。
2. **ディゾルブ処理を実行**: 「ベクトル」メニューから「地理処理ツール」を選択し、「ディゾルブ」をクリックします。
3. **入力と設定**: 「ディゾルブ」ダイアログで、入力レイヤーに作業する地図レイヤーを選択します。次に、「ディゾルブフィールド」の選択肢はそのまま(何も選択せず)にしておきます。これは全てのポリゴンを1つに統合するためです。
4. **実行**: 最後に「実行」をクリックしてディゾルブ処理を開始します。

これにより、隣接するポリゴンの共有線分は1本の線分に統合されます。ただし、この処理は全てのポリゴンを1つに統合するため、各ポリゴンの個別の属性情報は失われます。

この手順は基本的なものであり、具体的な要件によっては適応できない場合もあります。また、QGISのバージョンによっては手順が異なる可能性もありますので、詳細についてはQGISの最新のユーザーマニュアルを参照してください。
------

基本的に上記の方法でやっていますが、
・国土数値情報のファイルを使う場合、トポロジーエラーがあったので、最初に「ベクタ>ジオメトリツール>有効性チェック」の処理をかませています。
・また、生成されたものがマルチパートのlineだったので、最後にシングルパートに変える当処理をかませています


ためしにGPT 3.5 で質問をしてみたところ、たしかに上記の様な回答は出てきませんでした
「境界を作成」という新しい指示が出てきて、「トポロジカル境界」というコマンドがあることは発見したのですが、それを使ってもうまく行きませんでした。
参考までに、やりとりを共有します。

 
2023年5月27日土曜日 21:23:40 UTC+9 ひまわり:

ひまわり

unread,
May 28, 2023, 9:12:55 AM5/28/23
to QGIS初心者質問グループ
wata909さま

丁寧な回答をいただき、ほんとうにありがとうございました。
なんども読み返しながら、いろいろと試したり、考えたり、反省することができました。
初歩の段階で、このような回答をいただけたことを、感謝しております。

無事に処理はできたものの、
わたしは「なぜ線にしたものを融合したら分断されるのか」という単純な発想で混乱していました。

・線に変換する
 「ベクタ:ポリゴン」→「ベクタ:ライン」
・融合を実行
 「同じクラスに属する地物どうし」の融合  →  一本の線分になる
 この部分を、線の分岐から分岐までは同じクラスと考えれば、分岐のところで分断(一つのつながった線のまとまりに)される(=融合される)、
 のように考えて、納得した感じでおります。

このような理解でよいでしょうか?
いまいちど、お返事いただけますと幸いです。

それから、共有してくださったChatGTPのやりとりですが、あらためて自分のやりとりと並べてみて、
ChatGTP先生が気の毒に思えるほどに、質問が下手くそでおどろきました。
まず、立場を整えてあげることも大事なのですね。
よい例文をいただけたこと、とても良かったです。赤ペンいただけました‼

2023年5月28日日曜日 8:24:01 UTC+9 wata909:

wata909

unread,
May 28, 2023, 9:13:24 PM5/28/23
to QGIS初心者質問グループ
ひまわりさま

お役に立ったようで、なによりです。

>・線に変換する
>  「ベクタ:ポリゴン」→「ベクタ:ライン」
> ・融合を実行
>  「同じクラスに属する地物どうし」の融合  →  一本の線分になる
>  この部分を、線の分岐から分岐までは同じクラスと考えれば、分岐のところで分断(一つのつながった線のまとまりに)される(=融合される)、
>  のように考えて、納得した感じでおります。
>
> このような理解でよいでしょうか?

実はここの部分、私自身もちゃんと理解しないでやっていました(汗
ということで、実際にGrid形状のファイル(国土数値情報の500m気象メッシュ)でやってみて、確認してみました。
添付ファイルのgrid00が元のファイル(気象関係の情報は保存していません)、gird01が不正ジオメトリのチェック後のファイルです。

>・線に変換する
>  「ベクタ:ポリゴン」→「ベクタ:ライン」
これでできたものが、grid02になります。ここの段階では、一つのポリゴン毎に一つのラインのオブジェクトが生成されています。

> ・融合を実行
>  「同じクラスに属する地物どうし」の融合  →  一本の線分になる
この処理後が、grid03になります。MultiLineStringつまり、複数の線から構成される、一つの地物として出力されています。
ただし、この時点でグリッドの各線分は、一つの線分になっています。
なので、以下の考え方であっていると思います。
> 線の分岐から分岐までは同じクラスと考えれば、分岐のところで分断(一つのつながった線のまとまりに)される(=融合される)

で、Dissolve処理をすると、自動的に multi part geometriesになってしまうので、最終的にシングルパート(一つの要素を、一つのジオメトリにする)処理をすると、境界部分毎の線分になる、ということだと思います(grid04ファイル)

説明が今ひとつで、すみません(汗
参考までに、GeoJSONファイルを添付したので、よろしければご確認下さい。

>まず、立場を整えてあげることも大事なのですね。
> よい例文をいただけたこと、とても良かったです。赤ペンいただけました‼

ありがとうございます!
ちなみに、私も以下のページ等を参考にしました。


奥が深いなぁと思いつつ、使っております。

ちなみに、ChatGPT先生の説明によると以下の通りです。私の説明より、わかりやすい(汗

------
Dissolve操作は、特定の属性や地理的接続性に基づいて複数の地理オブジェクトを一つにまとめる操作です。これはベクトル地理データを単純化し、データ処理を効率化するためによく行われます。

Lineのdissolve操作では、通常、以下の2つの基準に基づいてラインが結合されます:

1. 属性に基づく結合:各ラインが特定の属性値を共有している場合、それらのラインは一つのラインフィーチャーに結合されます。この操作では、ライン同士が地理的に接続している必要はありません。結果は、その属性値を共有する全てのラインセグメントを含む一つのMultiLineStringフィーチャーになります。

2. 地理的接続性に基づく結合:ラインが共通のエンドポイントを共有している場合、それらのラインは一つのラインフィーチャーに結合されます。結果として得られるラインフィーチャーは、元のラインの地理的接続性を保持します。

したがって、あなたがLineのgeojsonファイルをdissolveしたとき、共通の境界線を持つラインが一つのラインとして結合されるのは、これらのラインが地理的に接続されているためです。この操作により、共通の境界線は一つの線分に単純化され、データの冗長性が排除されます。
------


2023年5月28日日曜日 22:12:55 UTC+9 ひまわり:
grid02.geojson
grid00.geojson
grid03.geojson
grid04.geojson
grid01.geojson

ひまわり

unread,
May 29, 2023, 12:37:47 PM5/29/23
to QGIS初心者質問グループ
wata909さま

ご回答いただき、どうもありがとうございました。

おおよそ理解が合っていたので、ほっとしました。
wata909さまの解説と、ChatGTP先生の2つの基準から、さらに理解を深めたところです。
丁寧に対応してくださって、ありがとうございます。

添付していただいたgeojsonのデータをQGISに取り込んで、おのおのPDFにエクスポートをし、
イラレでパスの確認をしました。

ちょっと不思議な現象があったので、ご報告します。

wata909さまのファイルは、線がつながったママでした。02〜04ともに同じ結果でした。
(grid04.pdf)

それで、元ファイルの「grid00.geojson」を使って変換作業を行い、PDFをイラレで確認しました。
すると、線は切れていたのですが、1本にならず3本になっていました。
(005-1回目.pdf)

なにか行程を間違えてしまったのかと再試行したところ、線が6本になっていました。
(005-2回目.pdf)

疑問は深まり、さらに施行したところ線が9本に。(005-3回目.pdf)
つぎは12本かと再試行したところ、なぜか13本になっていました。(005-4回目.pdf)

以前いただいた神奈川県のデータ確認したところ、
線は1本になっています。(kanagawa.pdf)

国土数値情報の500m気象メッシュに何か事情がありそう??なのかもしれません。
お手すきの折に、ご確認くださいませ。

データをお送りします。

-------

ChatGPTの参考ページまで教えていただき、どうもありがとうございます。

ほんとに奥が深くて、なんというかスマートな世界ですね!
有料版のChatGPTも導入してみることにしました‼

わたしの関心の幅ですと、すぐにはたどりつけない所まで、
引っ張ってくださいました。
wata909さまには、ほんとうに感謝しております。

がんばってQGISに取り組んでいきます!
ほんとうに、ほんとうに、ありがとうございました。

そして今後とも、どうぞよろしくお願いいたします。

2023年5月29日月曜日 10:13:24 UTC+9 wata909:

ひまわり

unread,
May 29, 2023, 7:22:27 PM5/29/23
to QGIS初心者質問グループ
wata909さま

パスの確認ですが、もしもillustratorで行った方が判明しやすいとあれば、
ぜひお送りください。

2023年5月30日火曜日 1:37:47 UTC+9 ひまわり:

wata909

unread,
May 29, 2023, 8:32:24 PM5/29/23
to QGIS初心者質問グループ
ひまわりさま

あらら、なぜでしょう?
GeoJSONのファイルですが、中身は以下のテキストになっています。これを見る限り、線分はちゃんと切れているようです。

{
"type": "FeatureCollection",
"name": "grid04",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "G02_001": "53392694" }, "geometry": { "type": "LineString", "coordinates": [ [ 139.8, 35.58333333 ], [ 139.8125, 35.58333333 ] ] } },
(略)
{ "type": "Feature", "properties": { "G02_001": "53392694" }, "geometry": { "type": "LineString", "coordinates": [ [ 139.825, 35.6 ], [ 139.8375, 35.6 ], [ 139.8375, 35.59166667 ] ] } }
]
}

試しに、geojson.io(GeoJSONファイルを開けるWebサービス)で確認したところ、以下の画像の通り、別々になっていました。

2023-05-30 09_14_59-geojson.io _ powered by Mapbox - 個人 - Microsoft​ Edge.jpg

以下のURLのサイトに、そちらのGeoJSONファイルをドラッグ&ドロップで表示してみてもらえますか?

考えられる原因としては、以下の感じでしょうか?

・PDFにエクスポートするときに、自動的に線が繋がってしまった?
 →まず、QGISやgeojson.ioで、ちゃんと線分になっているかどうか確認
  なっているのであれば、PDFへの出力が原因
  QGISのバージョンのバージョンや、読み込み手順、PDF出力の手順等を教えて下さい

・3つになってしまう件
 →grid04.pdfを見る限り、なぜかラインの四角のデータと、ポリゴンの四角のデータがある様にみえます。
  そのせいで、再度処理を行ったときに、線が増えてしまったのでは?
 
なお、このグリッドデータは、小数点以下が、「35.58333333」や「35.59166667」となっています。
この小数点の処理を何桁目で行うのかによって、重なってみえる線分が、重なってないこともあったりします。

取り急ぎ、思いつく範囲での回答までに

2023年5月30日火曜日 1:37:47 UTC+9 ひまわり:
wata909さま

ひまわり

unread,
May 30, 2023, 9:42:56 PM5/30/23
to QGIS初心者質問グループ
wata909さま

お世話になっております。
ソースのよみかた、というレベルからやっていたために(汗
すっかり遅くなってしまいました。

改めていろいろと作業をやりなおしてみました。
・QGIS:3.16.12-Hannover
・読み込み手順:grid00.geojsonをドラック&ドロップして、作業手順に従って以下の通り行いました。
 2.有効性チェック、3.「有効なジオメトリの出力レイヤ」を「ポリゴンを線に変換」、4.出来上がった「線レイヤ」を「融合」、5.「融合ポリゴンの出力」を「重複ジオメトリを削除」、6.「クリーニング済み出力」を「シングルパートに変換」して「出力レイヤ」が出来上がる。
・PDFの出力手順:出力したいレイヤーを選択して、プロジェクト>インポートとエクスポート>地図をPDFにエクスポート

という段取りをとりました。

改めて、送っていただいたgrid00.geojsonを読みこんでPDF化を、.geojsonファイルごとに、一つ一つPDF化したところ、問題無かったです。
(grid01_230530.pdf、grid02_230530.pdf、grid03_230530.pdf、grid04_230530.pdf)

もんもんとした挙げ句、はたと気がつきました。
昨日お送りしたPDFは、色々なレイヤーを表示したまんまでPDFにしていました。必要なレイヤーだけ選択したつもりが、表示に✓されているレイヤーが全部PDFになっていた、という訳でした。
すみません、ドジしていました。

−−−−−−−− 
  >・3つになってしまう件
    →grid04.pdfを見る限り、なぜかラインの四角のデータと、ポリゴンの四角のデータがある様にみえます。
     そのせいで、再度処理を行ったときに、線が増えてしまったのでは?

ラインと四角のデータは、grid01_230530.pdfにもありますが、「ポリゴンを線に変換」作業をすると、四角の方はなくなりました。grid02_230530.pdf
線が3→6→9→13と増えてしまったのは、wata909さまの推測にあるように、再度処理を行ったときに増えるのだと思います。(ということで、ひとまずいいかなぁと思ってます)

−−−−−−−
geojson.io を初めて使ってみました。ご紹介していただき、ありがとうございます。
線が重なっているかどうかの確認を、wata909さまの添付画像をみて、おそらくこんなやり方かしら?とやってみました。質問2_230531.pdf 
わたしは適当な数字をいれたので、斜めとかにポイントが飛びまくっています。(使い方はおいおい学習せねば)

−−−−−−−
もう一つ質問があります。
ソースの理解も必要かと、座標の点を打ったりして試していたのですが、その段階で疑問がでてしまいました。
基本的なことだと思うのですが、ちょっと混乱しているので、PDFにしました。
質問230531.pdf


また質問になってしまいました。
いつもすみません。

よろしくお願いします。


質問2_230531.pdf
質問230531.pdf
grid03_230530.pdf
grid02_230530.pdf
grid04-230530.pdf
grid01_230530.pdf

wata909

unread,
May 31, 2023, 9:04:41 AM5/31/23
to QGIS初心者質問グループ
  ひまわりさま

ともあれ問題が解決できたようで、何よりです!

さてご質問については、以下の通りとなります。

1.geojson.ioについて
これは、枠に数値を入れるのではなく、GUIで作業できます。
geojsonを読み込んだあとに、画面の右側にある「Edit geometries」ボタンをクリックすると、GUIで編集できるモードになります。
以下の画像のところです。

2023-05-31 21_33_52-mieru-684-918.secure.cyber.ipa.go.jp_3501 - リモート デスクトップ接続.jpg


2.座標のXYについて
ご指摘のとおり、緯度経度座標は左下が原点になって、経度は右に、緯度は上にいくと数字が大きくなります。
ではなぜ手書きとQGISの形が違うのかというと、手書きの座標値で経度と緯度が逆になっているからですね。
GeoJSON中の座標値は、たとえば以下のようになっていますが、

        "coordinates": [
          [
            139.8,
            35.58333333
          ],
          [
            139.8125,
            35.58333333
          ],

これ、上(139.8と139.8125)が経度(Y軸)で、下( 35.58333333)が緯度です。
PDFの図では南北方向(緯度)に「8.0 8.125」と書いてあるので、経度の数値が入ってしまっています。
普段使うときは「緯度経度」というので、時々その辺が混乱してこういうミスが起きます。
あるあるです。私もcsvを読み込むときに、未だやります(汗

こういう単純ミスで、上手くいくはずのことが上手く行かないことは多々あります。
そういうときは、一晩寝て翌日にもう一度見るようにしています(汗

いかがでしょうか?

2023年5月31日水曜日 10:42:56 UTC+9 ひまわり:

ひまわり

unread,
Jun 2, 2023, 7:28:45 AM6/2/23
to QGIS初心者質問グループ
wata909さま

おそくなってすみません。
わたしも一晩寝かしは、魔法だと思います!

ようやくgeojson.ioを使ってみました。

大地に地図を描いている感覚でした。
地図を手に街あるきをして、地図とあたまが一致する感動を
編集モードでポイントを動かしたときに、ビビビと感じました。
たのしい初体験でした!

「経度緯度」ですね(苦笑
大事なご指摘、ありがとうございます。
それでも今一度、手描きして理解させました。

地図を数字化したり、経度緯度の逆、などなど
身体になじませていかないと!
geojson.ioはソースコードを表示しながらできるので
ちょうど良いアプリケーションですね。

たくさんのお導きをいただきました。
QGISもよいスタートが切れました。

ほんとうにほんとうに、ありがとうございます!

2023年5月31日水曜日 22:04:41 UTC+9 wata909:
Reply all
Reply to author
Forward
0 new messages