J'ai dessiné une carte de flux OD à l'aide du générateur de géométrie QGIS, en utilisant l'expression suivante:
make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
$currentfeature, 'Attribute2') ) ) ) )
J'ai tout bien compris, définissant la largeur de mes lignes en fonction des attributs.
Mais lorsque je fais un zoom sur le "hub", les lignes liées à des endroits en dehors du canevas de carte n'apparaissent pas. Je suppose que c'est parce que les fonctionnalités ne sont pas censées apparaître sur la carte.
J'ai essayé de décocher l'option "Couper les fonctionnalités dans l'étendue du canevas" dans le menu avancé, à la fois dans les niveaux "Générateur de géométrie" et "Ligne", mais cela n'apparaît toujours pas.
J'aimerais que toutes mes lignes apparaissent, même en zoomant sur le hub.
qgis
symbology
mapcanvas
geometry-generator
mamouthautapis
la source
la source
Réponses:
Le problème ici est qu'il n'y a pas de données réelles disant "il y a une ligne ici". Votre expression fait partie du style de calque et n'est rencontrée dans le processus de rendu que lorsque deux points applicables sont également rendus.
Essayez d'utiliser l' outil Distance au concentrateur le plus proche , qui se trouve dans la boîte à outils de traitement sous Outils d'analyse vectorielle. Je note que vous sélectionnez des polygones particuliers pour vos rayons et que vous stylisez les lignes en fonction d'autres attributs. C'est possible, mais vous devrez faire quelques choses pour vous y préparer. Heureusement, l'outil utilise automatiquement les centroïdes lorsque les entrées de polygone sont choisies.
La sortie résultante conserve tous les attributs de l'entrée de couche 'SPOKES', donc les attributs nécessaires pour le style de ligne seront toujours présents. En tant que son propre calque vectoriel, les lignes resteront visibles à tous les niveaux de zoom, quelle que soit la visibilité de l'un ou l'autre point d'extrémité.
Si vous êtes à l'aise avec le modeleur graphique, vous pouvez même intégrer ces étapes dans un seul processus afin de ne pas encombrer votre espace de travail avec des couches inutiles.
la source
Solution de contournement suivante: utilisez une couche virtuelle supplémentaire au lieu d'un générateur de géométrie pour afficher les lignes.
Définition de la couche virtuelle:
(la géométrie d'origine peut être référencée en utilisant
m.geometry
)Pour garantir l'actualisation de la couche virtuelle lorsque my_layer est modifié, accédez aux propriétés de la couche | dépendances et assurez-vous que my_layer est coché (qui est grisé par défaut).
la source