隙間を作らないようにポリゴンを作成する方法

1,520 views
Skip to first unread message

IwaU

unread,
Sep 26, 2022, 11:28:27 PM9/26/22
to QGIS初心者質問グループ
平素よりお世話になっております。

隙間を作らないようにポリゴンを作成する方法はありますでしょうか?

現在私は、スナップツールを使ってポリゴンの頂点や線分上に別のポリゴンの頂点を配置して、ある領域を小さいポリゴンに分割しています。

これらのポリゴンをディゾルブしてみると、膨大な量のゴミ(境界線?)が生じてしまいます。
調べてみると、qgisの座標値は小数点以下16桁の精度となっており、これによって微妙な座標のズレが生じている可能性があるとのことでした。

ならば最初から座標値の精度を落とすことができれば、このような隙間は発生しにくいのではないかと思い設定を探しましたが見つかりませんませんでした。
どなたか、そのような設定が可能であるかご存じの方はいらっしゃいますでしょうか。

よろしくお願いします。

qgis 3.22

福岡

unread,
Sep 27, 2022, 12:17:25 AM9/27/22
to QGIS初心者質問グループ
IwaU 様

こんにちは

以前に精度を落とす方法を投稿したことがあります。
GeoJson形式へエクスポートする際に、精度を設定できることから思いついたものです。

メッシュを統合し1つの図形にしたい
https://groups.google.com/g/qgisshitumon01/c/WC-vDD3ojdc

2022年9月27日火曜日 12:28:27 UTC+9 IwaU:

wata909

unread,
Sep 27, 2022, 12:48:02 AM9/27/22
to QGIS初心者質問グループ
IwaUさま
(書いたメセージがどっかに行ってしまったので、再度投稿します。かぶってたら、すみません)

まず、Shapefileの位置精度ですが、技術的仕様から、位置情報は倍精度(32bit)で格納されるので、精度を少なくすことは難しそうです。

ということで、解決策としては、

◯福岡さんのおっしゃる通り、GeoJSONに出力する
 ただしこの場合、一度出したものを編集した場合に、精度が保たれるかどうか(例えば、5桁のままかどうか)、注意が必要だと思います。

◯GRASSのv.clean toolを使う
 ご指摘の小さなポリゴンのことをsliverというのですが、古いQGISの動画になりますが、それをGRASSのv.cleanを使って削除する動画がありました。
 作ったあとに、削除するという手もあるかもしれません。
 https://www.youtube.com/watch?v=idopIwLhHzA

◯GRASSのベクタデータとして、編集する
 こういう隙間ができる問題には、そもそも隙間ができないフォーマットでデータを作ったほうが、最終的には手間がかからないと思います。
 GRASSのベクタフォーマットは、そうしたフォーマットで、QGISからも編集できます。ただいかんせん、マニュアル的なものがなく、正直、ハードルが高いです・・・・

以上、ご参考までに。

2022年9月27日火曜日 13:17:25 UTC+9 福岡:

ありた

unread,
Sep 27, 2022, 7:59:43 AM9/27/22
to QGIS初心者質問グループ
こんにちは

スナッピングツールで、線分の途中に点を打つのではなく、頂点に対して
スナップしているのであれば、原理的には精度指定の GeoJSON でも
Shapefile などの浮動小数点数でも、きちんと接したデータができるはずです。
もっとも、確認していませんが GeoJSON なども QGIS にレイヤとして読み込めば
浮動小数点数としてロードされる気がします。

一方で、作成したデータに対しディゾルブを行うと、処理の許容精度の問題なのか
小さな孔ができることがあります。

ディゾルブを行ったあとプロセシングツールの「孔 (hole) の削除」を行ったり、
あるいは事前に1 mm など許容できるレベルのわずかに大きさなバッファを作成し
確実に接する(重複する)ようなポリゴンを作成してディゾルブする。などの
回避策はあるかと思います。

IwaU

unread,
Sep 27, 2022, 10:08:23 PM9/27/22
to QGIS初心者質問グループ
返信が遅れて申し訳ありません。たくさんのご回答ありがとうございます。

- 福岡様
> geojsonへの変換で、精度が落とすことができるのは知りませんでした。ありがとうございます。

- わた様
> geojsonの取り扱いも気を付けなければなりませんね。また、やはり後からv.cleanや孔の削除をする必要がありますかね。
> grassのベクターデータは隙間が生じないのですね。驚きました。ただやはりハードルが高いですよね...

- 有田様
> やはり結合する点には必ずノードをつけなければなりませんよね...
> 孔の削除ですが、孔の削除などでも削除しきれない場合や頂点の重複が大量に発生する場合があり、使用を避けたいと考えておりました。

最後に一つ質問なのですが、
arcgisでディゾルブした場合には、ゴミが出ませんでした。
この違いはどこから来るものなのでしょうか?
2022年9月27日火曜日 20:59:43 UTC+9 ありた:

wata909

unread,
Sep 28, 2022, 1:12:59 AM9/28/22
to QGIS初心者質問グループ
IwaUさま

>arcgisでディゾルブした場合には、ゴミが出ませんでした。
>この違いはどこから来るものなのでしょうか?

福岡さんの投稿にある https://groups.google.com/g/qgisshitumon01/c/WC-vDD3ojdc の国土数値情報のメッシュでも、ArcGISだとちゃんとディゾルブできて、QGISだとディゾルブできないと聞いたことがあります。ただ、原因は、正直にいうと、わかりません。
多分、ArcGISでは、精度を落として処理をしているのかなぁと、思っています。
そういう意味では、正しく処理してくれるQGISの方が信用できるのですが、その分、実用上は色々工夫する必要があったりもするなぁと、思っています。


2022年9月28日水曜日 11:08:23 UTC+9 IwaU:
Message has been deleted

IwaU

unread,
Sep 28, 2022, 3:12:28 AM9/28/22
to QGIS初心者質問グループ
わた様

ご返信ありがとうございます。
なるほど、arcgisとqgisではジオメトリ処理の取り扱いが若干違うのですね。知りませんでした。

また、表題のゴミが発生しないようにする方法ですが、自己解決案として
ツールボックスのジオメトリをレイヤにスナップを使う方法を発見しました。
この機能で距離0.01にしてジオメトリを生成しなおすと、ゴミの生まれないポリゴンを作成することができました。

たくさんのご回答、アドバイスをいただきまして誠にありがとうございました。

2022年9月28日水曜日 14:12:59 UTC+9 wata909:

東 雲

unread,
Sep 28, 2022, 8:29:40 AM9/28/22
to QGIS初心者質問グループ
こんばんは。東雲と言います。

ArcGISは、インターセクトやディゾルブ、ユニオン等を行う際に、下の方で目立たなく精度を聞いてきます。
通常は0.001になっています。
0.001未満のズレはないものと見なす、という設定ですが
気をつけないと酷いことになるときがあります。
ポリゴンの数が多いと元々のポリゴンの面積の合計とディゾルブしたポリゴンの面積が違うとか、
経緯度のデータでインターセクトをかけると酷いことになるとか。
この辺はアプリケーションの特性なのでどちらがいいともいえないですね。

ところで、ズレがないようにポリゴンを作りたいとのことですが
先に全域をカバーするポリゴンを作ってから分割していけばズレのないポリゴンができるのですが
それではダメなんでしょうか。
水理解析用のポリゴンなんかはそうして作ります。

2022年9月28日水曜日 16:12:28 UTC+9 IwaU:

IwaU

unread,
Sep 28, 2022, 10:33:46 PM9/28/22
to QGIS初心者質問グループ
東雲さま

ご返信ありがとうございます。
なるほど、私が気づいていなかっただけで
arcでの処理実行時に精度について触れられていたんですね。知りませんでした。
確かにarcでディゾルブしたポリゴンの面積が違うことがあってなんでだろうと
思ったことはありました。今頃になって得心がいきました。

全域をカバーするポリゴンを作成したのちに、分割するという方法ですと、写真1,2のように
相手側にノードができず、ズレが生じてしまいます。これを避けるためには、接合がありそうな点に毎回
ノードを付与する必要があるということでしょうか?

1.png2.png

2022年9月28日水曜日 21:29:40 UTC+9 東 雲:

東 雲

unread,
Sep 29, 2022, 8:36:03 AM9/29/22
to QGIS初心者質問グループ
メニューの「プロジェクト」→「スナップオプション」に「トポロジ編集」というボタン(というのか?)があって
それをオンにすると、ポリゴンを分割したりしてノードを追加したときに、隣接した分割してないポリゴンにもノードが追加されます。
トポロジの概念がないデータ形式(シェープファイルとか)でも
トポロジを扱えるような挙動ができるので便利ですよ。


2022年9月29日木曜日 11:33:46 UTC+9 IwaU:

IwaU

unread,
Sep 29, 2022, 11:56:13 PM9/29/22
to QGIS初心者質問グループ
東雲さま

トポロジ編集を使うと相手側にもノードができました!
これは非常にうれしい情報です。
本当にありがとうございます。


2022年9月29日木曜日 21:36:03 UTC+9 東 雲:
Reply all
Reply to author
Forward
0 new messages