QGISの列ごとにソートされたテーブルの行番号を割り当てる方法はありますか?


13

フィールド計算機には、「$ rownum」と呼ばれる「レコード」の下に、現在の行の番号を返す(割り当てる)優れた機能があります。

並べ替えと一緒に動作させる方法はありますか?テーブルを列の「長さ」でソートし、行の順序(シーケンス)を最短から最長までの長さで取得したいとします。

このために、いくつかのオフィススプレッドシートソフトウェアを簡単に使用して、列ごとに並べ替え、新しい列に順序(シーケンス)を設定できることを知っています。しかし、私はQGISですべての仕事をしたいと思います。

更新:回避策として、シェープファイルの機能の順序を変更する方法ありますか?-mmqgisプラグインと関数modify / sortを使用し、その後、新しい保存ファイルで「$ rownum」を使用します。

回答:


19

そこで、問題を解決するためのプラグイン(SortおよびNumber)をコーディングしました。最大3つのフィールドを選択し、これらのフィールドに従って属性テーブルを順序付けることができます。次に、1から始まる新しいフィールド(デフォルトでは「order」という名前)の属性テーブルに番号を付けます。

ここに画像の説明を入力してください


すごいですね。今、このプラグインをテストします、ありがとう。
ミロ

2.8で初めてインストールした場合、何らかのエラーが発生しましたが、2.14でテストしてから2.8に戻した後、非常に優れた動作をします。ありがとうございました。
ミロ

@ミロ:どういたしまして。他の人にも役立つことを願っています。
-ArMoraer

@ArMoraer-素晴らしいプラグイン!
ジョセフ

1
これをボン3向けに再コーディングできますか?->このツールが気に入りました!
18

7

フィールド計算機を使用できるかどうかはわかりませんが、次のようなクエリで仮想レイヤーを使用できます。

SELECT 
    * ,
    (SELECT count(*) FROM your_layer AS b WHERE a.length >= b.length) AS length_position
FROM your_layer AS a 
ORDER BY a.length

ありがとう、私はまだ長期リリース2.8で作業しているので、2.14で初めて仮想層を発見しました。それとは別に、非常に非常に遅く、動作しました。一般的にはこれは受け入れられますが、他の回答がある場合はもう少し待ちます。
ミロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.