banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoDataDays 2025

#1 Fri 24 January 2025 12:51

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 111

QGIS: Attribut par intersection des extremites d'une polyligne

Bonjour,

J'ai une couche de polylignes sous Qgis (en l'occurence des axes de voie). J'aimerai créer deux champs "voies_amont" et "voies_aval" qui indiquent les noms de voie concaténés des voies qui intersectent le point de départ et le point d'arrivée de chaque axe de voie.

Je me suis inspiré de précédents sujets de ce forum et j'ai utilisé ce type de requete dans la calculatrice de champ pour le champ "voies_amont":

Code:

Aggregate(@layer, aggregate:='concatenate',expression:="voie_nom_c",concatenator:=',',
  filter:=intersects($geometry,start_point(geometry(@parent))))

Cela fonctionne pas trop mal, les noms de voie intersectées sur le startpoint de chacune des mes voies remontent dans mon champ. Petit souci, pour chaque voie, son propre nom remonte aussi dans le champ. (voir ex en PJ)


Comment peut-on faire en sorte que Qgis ignore la propre voie en question dans la requete ?

Merci d'avance de votre aide


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Fri 24 January 2025 17:31

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 4119

Re: QGIS: Attribut par intersection des extremites d'une polyligne

Bonjour,
Peut-être en comparant le id des entités dans le filtre. Non testé:

Code:

filter:=intersects($geometry, start_point(geometry(@parent))) AND @id != feature_id(@parent)

Hors ligne

 

#3 Sat 25 January 2025 11:46

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 111

Re: QGIS: Attribut par intersection des extremites d'une polyligne

SANTANNA a écrit:

Bonjour,
Peut-être en comparant le id des entités dans le filtre. Non testé:

Code:

filter:=intersects($geometry, start_point(geometry(@parent))) AND @id != feature_id(@parent)


Re,
c'était effectivement dans l'esprit, la réponse m'a été soufflée, la voici:

Code:

aggregate(@layer, aggregate:='concatenate',expression:="voie_nom_c",concatenator:=',',
  filter:=intersects($geometry, start_point(geometry(@parent))) AND "voie_nom_c" != attribute(@parent, 'voie_nom_c'))

Cette modification ajoute une condition AND "voie_nom_c" != attribute(@parent, 'voie_nom_c') au filtre, ce qui exclut la voie courante de la concaténation.

Merci pour votre aide

Dernière modification par guibouvier (Sat 25 January 2025 11:46)

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo