プラグインを用いたラインデータへのM値付与について

126 views
Skip to first unread message

AKIRA

unread,
Dec 14, 2023, 6:34:36 AM12/14/23
to QGIS初心者質問グループ

こんにちは、お世話になります。

表題の件について、QGISでのリニアリファレンスについて質問です。(個別プラグインの話で場違いでしたら申し訳ございません)


 ラインデータにポイントデータのとあるフィールドをM値として付与したいと考えています。QGISに標準では搭載されていないと考えておりまして、「LRS(LinearReferenceSystem)」なるプラグインの「キャリブレート」機能で、上記を実行しようとしています。

 これを試してみたところ、5000点ほどのポイントデータとこれから作ったラインデータ、3000点ほどの同データで実行するとうまくいきましたが、500000点ほどのデータで実行すると処理が途中で停止してしまいます(丸1日経っても1%も進まなくなる)。

 原因を元のデータや操作手順ではなく、プラグインの仕様(読み込む行数などに限度がある?)だと考えたのですが、Pythonに疎く.pyファイル等のどこをどう読んでみればいいかもわかりません…。


①もし上記の方法以外にM値付与の方法があれば教えていただきたいです。

②Pythonや上記プラグインにお詳しい方で、原因がわかる方いらっしゃいましたらご教示願えませんでしょうか。


かなり偏った内容にて恐縮ですが、よろしくお願いいたします。

futoshi kidani

unread,
Dec 14, 2023, 8:02:17 AM12/14/23
to QGIS初心者質問グループ
基本的にこういうプラグインは逐次処理されてそうなので取り急ぎの推測ですが…

吐き出すフォーマットはシェープファイルじゃないですよね?
データ点数によってはファイルサイズの壁に達して止まるような気がします。

後ほどプラグインのテストおよびドキュメント読んでみます。

2023年12月14日木曜日 20:34:36 UTC+9 AKIRA:

ありた

unread,
Dec 14, 2023, 9:46:59 AM12/14/23
to QGIS初心者質問グループ
こんにちは

空間インデックスは作成されていますでしょうか?
(GeoPackage など、ファイル形式によっては自動的に作成されるものもあります)

プラグイン内での処理の内容は確認できていませんが、2レイヤ間で空間演算を
行おうとすると、愚直に工夫なしで行えば計算量は NM のオーダーとなります。
つまり点の数が100倍、線の数が100倍に増えると計算量は10000万倍となります。

インデックス(索引)を作ると、明らかに異なる地点のチェックを避け、
効率よく処理してくれる可能性があります。
空間インデックスは、レイヤプロパティやプロセシングツールから作成できます。

AKIRA

unread,
Dec 14, 2023, 6:04:23 PM12/14/23
to QGIS初心者質問グループ
@kidani様
早速ご回答ありがとうございます。
一時スクラッチレイヤが生成されており、ファイルのフォーマットの確認ができかねております。
確かにシェープファイルだと仮定するとファイルサイズの問題は影響してきそうです・・・。
また、実際にプラグインの方、ご確認いただけるとのことで誠にありがとうございます。
大変お手数おかけいたしますが、何卒お力添えいただけますと幸いです。

@ありた様
早速ご回答ありがとうございます。
元ファイルはGeoPackageもしくはFlatGeobufで試しているところなので、空間インデックスはおそらく作成されているだろうと思います。
念の為、空間インデックス作成ツールを一度実行してみてから再実施してみます。
確かにありた様のおっしゃる通り、よく考えると計算量は単純に倍々というわけではありませんね・・・!
一点気になる点があるとすれば、プラグイン内でもさまざまな処理プロセスがあるのでしょうが、
私の場合ですとステータスが急に30%付近で毎回止まってしまうことです。

あまりご提供できる情報が多くなくて恐縮ではございますが、引き続きご助言いただけますと幸いです。
よろしくお願い致します。
2023年12月14日木曜日 23:46:59 UTC+9 ありた:
Reply all
Reply to author
Forward
0 new messages