QGIS 3.0ポイントクラスターレンダラー、レンダリングの順序(zオーダー)を制御することは可能ですか?


19

私はQGIS 3.0.2の新しいポイントクラスターレンダラーで遊んでいますが、それは素晴らしいです-自分でクラスタリングを行うよりもずっと簡単(かつ高速)です。

私の言いたいことを示すために、STATS19データと半径30mを使用したエジンバラの交通事故の例を示します。

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

最大のクラスターが小さなクラスターの前に描画されるようにzオーダーを設定する方法を見つけることはできません。

私は@cluster_size変数を知っています。これは、シンボルのスケーリングと色付けに使用しているものです。このために、サイズと色のアシスタントを使用しています。フォントマーカーを削除して、各クラスターからテキストを削除しました。

マーカーのサイズは次のように定義されます:

coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)

マーカーの色は次のように定義されます:

coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')

私が今までに試したこと:-

  • シンボルレベル -運はありません。変数名を選択できません。
  • レイヤーのレンダリング>フィーチャーのレンダリング順序制御し@ cluster_sizeをソートとして選択します。効果がないようです。
  • 式として@cluster_sizeを使用した段階的なスタイルは機能しません。

これが可能かどうか誰もが知っていますか、またはこれはこの特定のレンダラーの制限ですか?

これを行う方法は他にもたくさんあります(バッファ/空間結合、プラグイン)が、新しいレンダラーはもっと速くなるはずです。または、私は明白な何かを見落としましたか?:)


おそらく、属性テーブルの順序を考慮して機能します。おそらく、最大のものが最新のものとしてレンダリングされるように、それらを昇順で配置しますか?何の関数「ソート属性によって特徴が」存在しない場合、あなたはMMQGISプラグイン(QGIS 3のためにその使用可能な場合)してみてください
Revoの

ありがとう@Revo。属性(クラスターポイントレンダラーを含む)でサイズと並べ替えを行うことは可能と思われますが、1つのスケールでのみ機能します。クラスターポイントレンダラーを使用してズームイン/ズームアウトすると、クラスターサイズが動的に変化するため、cluster_sizeを使用しようとしました。MMQGISを見てみましょう(QGIS 3で利用可能です)
スティーブンケイ

回答:


2

ポイントクラスターの実装では、これをネイティブに許可していないようです。

ポイントクラスターレンダラーを検討してください。これは、本質的にレンダリング時にポイントデータを分析およびクラスター化し、新しい擬似レイヤーを作成します。ユーザーはこのレイヤーにアクセスできません。クラスター化されたポイントを照会することはできません。@cluster_size属性をフィールド計算することはできません。

ポイントクラスターレンダラーは、コントロールフィーチャーのレンダリング順序QgsFeatureRequest :: OrderByClause)を使用してソースからレンダリング順序を継承しますが、属性と式を使用した巧妙な回避策の可能性は残されていますが、特定の順序スキームは一貫性が保証されていません。

例として、「Latitude」属性によって昇順でレンダリングされたポイントレイヤーを考えます。より北のポイントは、より南のポイントの上にレンダリングされます。ポイントクラスターレンダラーには、その新機能の「緯度」属性はありませんが、ソースからその順序の類似性を継承します。元のポイントの順序が原因で、より南のクラスターがより北のクラスターの上にレンダリングされる場合があります。


ありがとう。これは非常に明確な説明であり、クラスター化されたポイントから属性、つまり各元のポイントに関連付けられた母集団の合計を計算できるかどうかという質問にも答えています。明らかにそうではない...まだ?ただし、これは非常に便利な機能です。静的な方法でも、スマートな回避策(これはコーディングを必要としませんが、私は(まだ、それでも良いですか?)私はそれがクラスタレンダラによって行われている方法と同様にポイントをクラスタ化するためのツールを見つけるのに苦労しています
dorakiara

一般的に言えば、属性を使用して「機能のレンダリング順序を制御」機能とともにクラスターレンダラーの動作を複製することで、これにアプローチできます。大まかな最初のパスは、ポイントレイヤーをバッファリングし、バッファリングされたポリゴンのポイントをポイントレイヤーの属性としてカウントすることです。この属性の昇順でレンダリング順序を制御します。少し面倒で、必ずしも異なる規模で機能するとは限りません。
CrystallineEntity

また、機能のリクエストを行うことをお勧めします。これにより、@ cluster_sizeメソッドが「機能のレンダリング順序の制御」関数に公開されます。
CrystallineEntity
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.