Affichage des lignes générées hors de l'étendue de la carte à l'aide de QGIS?

12

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.

En zoomant sur le hub

Lorsque non zoomé

J'aimerais que toutes mes lignes apparaissent, même en zoomant sur le hub.

mamouthautapis
la source
Cela ne sera pas utile ... mais j'obtiens le même problème avec l'approche de cartographie des flux d'Underdark. Cela doit être quelque chose sur la façon dont la géométrie dense est rendue ... la seule suggestion est de jouer avec la largeur d'attribut pour la carte de niveau local ... rendre les largeurs plus petites?
Andrew Tice
Peut-être que vous pouvez télécharger vos données (shp ...) afin de pouvoir reproduire vos étapes et essayer d'obtenir une réponse.
César Arquero
1
Le Shapefile vient d'ici: IGN et la table jointe de l' Insee
mamouthautapis
Peut-être que la segmentation de la ligne pourrait être un hack pour la faire apparaître sur la carte, si les lignes ne sont affichées que si les deux extrémités sont proches de l'étendue de la carte. Grass-tool 'v.split.length' fait peut-être l'affaire.
Julian
1
Est-ce le même problème que j'ai eu (si c'est le cas, cela donne un moyen simple de comprendre ce problème - sinon, ignorez-moi): je voulais montrer un ensemble de données de points avec l'ensemble des points générés décalés de 300 km à l'est et de 600 km nord par rapport aux points réels. Cela fonctionne - mais uniquement lors d'un zoom arrière afin que les points d'origine se trouvent dans le canevas de la carte. Dès que vous zoomez sur l'ensemble des points générés (en déplaçant les emplacements réels des points à l'extérieur du canevas), les points générés disparaissent. (QGIS 2.14)
Rostranimin

Réponses:

2

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.

  1. Outils de sélection des vecteurs > Extraire par attribut
    • Couche d'entrée: 'LAYER_1'
    • Attribut de sélection: 'ATTRIBUTE_1'
    • Opérateur: =
    • Valeur: 'valeur se référant au polygone du hub'
    • Extrait (attribut): 'HUB'

  2. Outils de sélection des vecteurs > Extraire par attribut
    • Couche d'entrée: 'LAYER_1'
    • Attribut de sélection: 'ATTRIBUTE_2'
    • Opérateur: choisi au besoin
    • Valeur: «valeur (s) faisant référence aux polygones à rayons»
    • Extrait (attribut): 'RAYONS'

  3. Outils d'analyse vectorielle > Distance au hub le plus proche
    • Couche de points source: «RAYONS»
    • Couche de concentrateurs de destination: «HUB»
    • Attribut de nom de couche de concentrateur: crée un champ "Nom de concentrateur" dans la sortie en fonction de l'attribut choisi, au cas où plusieurs concentrateurs sont spécifiés dans la couche d'entrée
    • Type de forme de sortie: ligne vers le moyeu
    • Unité de mesure: mètres
    • Distance du hub: 'OUTPUT_LAYER_NAME'

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.

JoshC
la source
3

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:

select m.FID, make_line(.....) as geometry from my_layer m

(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).

Mesa
la source