入力マスクを使用してSpatialiteデータベースにフィードするプラグインを作成しました。オブジェクトの最小/最大次元を表す2つのフィールドがあります。
iface.actionMeasure().trigger()
2つのプッシュボタン「メジャー」でメジャーツール()を呼び出した瞬間に、寸法をクリックし、キーボードでフィールドに値を入力します(QLineEdit)。
測定ツールで右クリック(測定の終了)を行った後、値が自動的にフィールド(最小または最大、QLineEdit)にコミットされる可能性はありますか?
- 測定ツールの呼び出し(動作します)
- 左クリック:測定を開始
- 4.一度に:右クリックして、測定ツールの合計値を最小フィールド(QLineEdit)にコミットします。
更新1:
この質問をしたある日、メジャーツール(ST_Length(geom))として使用できるラインストリングレイヤーを作成するというアイデアを思いつきました。利点は、そこからデータを操作および取得することを完全に制御できることです。短所は、プロジェクトに追加の層があることです。
ワークフローは次のとおりです。
測定をクリック:編集を切り替え、「機能を追加」を有効にします
オブジェクトの最小寸法を表す線ストリングを作成します
変更の確認、ラインストリングの長さの計算(ST_Length(geom))、QLineEditへの長さのコミット
ダイアログを閉じてラインストリングを削除(DELETE FROM)
しかし、私の実際の質問は残っています。測定ツールから直接距離値を取得する方法はありますか?
アップデート2:
Jakobの助けを借りて、Measure Tool を閉じるまで、Measure ToolのTotal値でQLineEditを更新できます。次に、値は「0,000 m」に設定されます。私はこれを使用してこの問題を解決しました:
def text_changed(str_measure):
if str_measure == '0,000 m':
pass
else:
self.min.setText(str_measure)
動作しますが、これが適切な解決策であるかどうかはわかりません。