Ich habe eine OD-Flusskarte mit dem QGIS-Geometriegenerator mit dem folgenden Ausdruck gezeichnet:
make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
$currentfeature, 'Attribute2') ) ) ) )
Ich habe alles in Ordnung, indem ich die Breite meiner Linien anhand von Attributen definiere.
Wenn ich auf den "Hub" zoome, werden Linien, die mit Orten außerhalb des Kartenbereichs verknüpft sind, nicht angezeigt. Ich denke, das liegt daran, dass die Features nicht auf der Karte angezeigt werden sollen.
Ich habe versucht, die Option "Ausdehnung der Clip-Features auf Leinwand" im erweiterten Menü zu deaktivieren, sowohl im "Geometrie-Generator" als auch in den "Linien" -Ebenen, aber sie wird immer noch nicht angezeigt.
Ich möchte, dass alle meine Linien angezeigt werden, auch wenn ich auf den Hub gezoomt habe.
qgis
symbology
mapcanvas
geometry-generator
mamouthautapis
quelle
quelle
Antworten:
Das Problem dabei ist, dass es keine tatsächlichen Daten gibt, die besagen, dass hier eine Linie ist. Ihr Ausdruck ist Teil des Ebenenstils und wird beim Rendern nur angetroffen, wenn auch zwei anwendbare Punkte gerendert werden.
Verwenden Sie das Werkzeug Abstand zum nächsten Hub , das sich in der Verarbeitungs-Toolbox unter Vektoranalysewerkzeuge befindet. Ich stelle fest, dass Sie bestimmte Polygone für Ihre Speichen auswählen und die Linien gemäß anderen Attributen stylen. Dies ist möglich, aber Sie müssen ein paar Dinge tun, um sich darauf vorzubereiten. Glücklicherweise verwendet das Tool bei der Auswahl von Polygoneingaben automatisch Zentroide.
Die resultierende Ausgabe behält alle Attribute der Ebeneneingabe "SPOKES" bei, sodass die für das Linienstil erforderlichen Attribute weiterhin vorhanden sind. Als eigene Vektorebene bleiben die Linien in allen Zoomstufen sichtbar, unabhängig von der Sichtbarkeit eines der beiden Endpunkte.
Wenn Sie mit dem grafischen Modellierer vertraut sind, können Sie diese Schritte sogar in einen einzigen Prozess integrieren, um Ihren Arbeitsbereich nicht mit unnötigen Ebenen zu überladen.
quelle
Finden Sie die folgende Problemumgehung: Verwenden Sie eine zusätzliche virtuelle Ebene anstelle eines Geometriegenerators , um die Linien anzuzeigen.
Definition der virtuellen Schicht:
(Originalgeometrie kann referenziert werden mit
m.geometry
)Um sicherzustellen, dass der virtuelle Layer aktualisiert wird, wenn my_layer bearbeitet wird, wechseln Sie zu Layereigenschaften | Abhängigkeiten und stellen Sie sicher, dass my_layer aktiviert ist (dies ist standardmäßig ausgegraut).
quelle