QGIS Atlasの他のレイヤーの機能をフィルタリングしますか?


22

QGIS Atlasツールを使用して、学生の「散布図」を作成しようとしています。215校の学校とその学校に通っている生徒を表示します。

schoolsレイヤーはカバレッジレイヤーであり、SCHNUM(school number)値によって駆動されています。これは正常に機能しています。つまり、ページを正しく駆動しています。

ただし、SCHNUMカバレッジレイヤーの現在のフィーチャに対応する値と一致する他のレイヤー(この場合は学生ポイントレイヤー)のフィーチャのみを表示するにはどうすればよいですか?

また、カバレッジレイヤー(学校)を「非表示」に切り替え、同じ手法を使用して、重複する学校レイヤーから現在の学校のみを表示します。

ここには、を使用したレイヤーレンダリングルール設定の使用を暗示するプレゼンテーションがありますが、$atlasfeatureidどのように機能するかわかりません。

また、これが機能していることを示すこのバグトラッカーページを見つけましたが、再度、データで動作させることができません。


質問ですが、回答として投稿して申し訳ありません。これに推奨されるビデオチュートリアルはありますか?私はそれに沿ってフォローしようとしましたが、どういうわけかいつかどこかで迷子になりました。同じ問題を抱えています。
JRamos

回答:


41

実際、ルールベースのシンボル体系を使用して、目的を達成する必要があります。

表示するもののルールと、その他すべてのELSEルールを作成する必要があります。

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

ELSEルールで、シンボルチェックボックスを選択解除して非表示にします。

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

カバレッジレイヤーから他のフィーチャを非表示にします

現在のアトラス機能のみを表示するルールは次のとおりです。

$id  =  @atlas_featureid 

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

:@atlas_featureid変数は2.12構文であると考えています。2.8.xでは、$ atlas_featureidという関数を使用する必要があると思います。

現在のアトラスフィーチャ以外のフィーチャを非表示にします

レシピは以前と同じで、機能を非表示にするルールと表示するルールがあります。

特定の質問については、SCHNUMと呼ばれる共有属性があるようです。その場合、ルールは次のようになります。

"Layers_field" = attribute (@atlas_feature, 'coverage_layer_field_name')

あなたの特定の場合:

"SCHNUM"  =  attribute( @atlas_feature , 'SCHNUM')

両方のSCHNUMの違いに注意してください。1つ目は二重引用符で囲み、学校コードを格納するフィールドの現在の各レイヤーフィーチャの値を表します。2番目は、単一引用符で囲み、学校コードを格納するカバレッジレイヤーの名前を含む文字列です。

:繰り返しますが、@ atlas_feature変数は「新しい」ものであり、2.8.xでは関数$ atlas_featureを使用する必要があります。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.