Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Mon 05 January 2015 12:23

Julien Gondellon
Participant actif
Date d'inscription: 17 Apr 2014
Messages: 67

QGIS : Recherche de l'équivalent de la formule "RechercheV"

Bonjour et bonne année à tous et à toutes.

Je suis à la recherche d'une solution qui me permette de répondre à cette problématique.

J'ai deux tables :
Table 1 : Tronçon
Table 2 : Regard

Dans la table 1, j'ai deux entrées correspondant aux ID des Regards Amont et Aval qui sont accrochés au tronçon.
Dans la table 2, j'ai l'Id, connaissez vous un moyen d'automatiser la récupération sur la table 1 les deux ID.

J'ai une solution en :
- Récupérant les coordonnées X et Y des regards,
- Récupérant les coordonnées Xat et Yat des débuts et fins de tronçons.
- Basculant les données sous excel et lançant une recherche verticale sur un arrondi des coordonnées,
- Rejointant le tout.

Mais la méthode est complexe est longue.

Merci d'avance.

Hors ligne

 

#2 Mon 05 January 2015 14:23

cyrille
Participant assidu
Date d'inscription: 7 Feb 2006
Messages: 386

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Bonjour,
Vous pouvez dans ce cas utiliser spatialite +une requete SQL ?

Hors ligne

 

#3 Mon 05 January 2015 15:28

Julien Gondellon
Participant actif
Date d'inscription: 17 Apr 2014
Messages: 67

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Merci de la réponse.

Je connais un peu le spatialite mais je ne maitrise pas beaucoup et je sais pas comment on compile le spatialite et le sql.

Avez-vous une explication plus précise ?

Merci

Hors ligne

 

#4 Tue 06 January 2015 16:38

cyrille
Participant assidu
Date d'inscription: 7 Feb 2006
Messages: 386

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

vous pouvez reprendre votre formulation, je crois qu'il y a une erreur
je dirais que vous voulez ajouter des données de table 2 aux champs de table 1 non ?
ou sont les  ID des Regards Amont et Aval ? dans quelle table ?

Hors ligne

 

#5 Tue 06 January 2015 16:41

cyrille
Participant assidu
Date d'inscription: 7 Feb 2006
Messages: 386

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

ca pourrait donner
select table1*, table2.id_amont, table2.id_aval
from table2, table1
where table2.id_troncon=table1.id_troncon

au final vous recuperez 1 seul shape avec toutes les colonnes de table1 et deux colonnes supplémentaires de table2

Hors ligne

 

#6 Tue 06 January 2015 18:00

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

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Bonjour,
Effectivement, j'ai aussi du mal à comprendre quelles données se trouvent dans quelle table. Et qu'est-ce qui à la fin doit être regroupé?
Une petite précision aiderait à proposer une solution adéquate.

Dernière modification par SANTANNA (Tue 06 January 2015 18:02)

En ligne

 

#7 Thu 08 January 2015 14:17

Librius
Participant actif
Lieu: Créteil
Date d'inscription: 9 Nov 2012
Messages: 67

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Bonjour,

Une jointure sur l'ID du regard (table 2) devrait vous permettre de récupérer l'ID du tronçon (table 1) si j'ai bien compris votre demande ? C'est ce qui me semble le plus s'approcher d'un "quivalent "rechercheV"

Bien cordialement,
Lib'

Dernière modification par Librius (Thu 08 January 2015 14:17)

Hors ligne

 

#8 Wed 14 January 2015 13:00

Julien Gondellon
Participant actif
Date d'inscription: 17 Apr 2014
Messages: 67

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Bonjour,

je vais reprendre ma demande en étant plus clair.

Shape n°01 : tronçon dans lequel j'ai deux champs : IDRVAmont et IDRVAval
Shape n°02: regard dans lequel j'ai un champ : IDRV

Je trace un tronçon (shape n°01). Et de part et d'autres de ce tronçon j''accroche un regard (shape n°02) qui ont tout deux un identifiant distinct, par exemple 21 et 22.

Je souhaite, par l'intermédiaire d'une formule ou autre, intégrer directement dans mon shape n°01 (tronçon) les ID de ces deux regards dans les champs du shape n°01 IDRVAmont et IDRVAval.

J'espère avoir été plus clair.

Merci de vos réponses.

Hors ligne

 

#9 Wed 14 January 2015 14:10

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Salut,

Est ce que ceci réponds à ta question?
Voir --> Joindre les attributs par localisation
dans --> http://docs.qgis.org/2.0/fr/docs/user_m … tools.html
A+
Joël

Hors ligne

 

#10 Wed 14 January 2015 19:37

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

Re: QGIS : Recherche de l'équivalent de la formule "RechercheV"

Bonjour,

Une démarche possible est de générer pour chaque tronçon ses sommets amont et aval et, pour chacun des sommets de récupérer le regard le plus proche. Après avec des jointures on rapatrie les infos dans les bons champs.

De façon plus opérationnelle, tu vas avoir besoin de deux extensions : QChainage et SpatialJoin (qui requiert l'extension RefFunctions, donc une troisième). Ensuite:
1/ Créer un champ "id_interne" que tu calculeras avec $id dans ta couche tronçon.

2/ Générer une couche de points des tronçons, contenant les début et fin de chaque tronçon. Si un tronçon est obligatoirement en une ligne, l'outil Vecteur > Outils de géométrie > Extraction de noeuds devrait faire l'affaire. Sinon, l'extension QChainage le fait (le seul paramètre à modifier est d'indiquer (divide feature into : 1 part) dans l'onglet Advanced **). QChainage ne renvoie pas dans la couche résultat tous les champs de la couche de lignes, juste le $id (nommé fid, je crois) des entités. Par contre, l'avantage de QChainage est qu'il crée dans la table résultat un champ Cng_(Meters) qui indique la position du point sur la ligne (donc valeur 0 pour le départ et $length pour le point à la fin).
Tu obtiens donc une couche de points "sommets" avec un champ $id du tronçon (tu pourras vérifier si c'est bien ça?) et un autre champ Cng_(Meters) identifiant la position sur le tronçon. Chaque id du tronçon apparaît sur deux lignes.

3/ensuite utiliser l'extension SpatialJoin entre la couche de regards et celle des sommets. Tu récupères donc sur la couche des sommets, avec l'opérateur nearest, le plus proche regard et son identifiant (entre autres colonnes). Ce sont des champs virtuels qui vont se rajouter à ta couche de sommets.
Tu peux aussi ouvrir la calculatrice de champ et utiliser la fonction geomnearest du nouveau groupe Référence pour calculer dans la couche des sommets les valeurs ID des plus proches regards.
Tu peux aussi utiliser l'extension NNJoin ou faire "joindre les attributs par localisation" via une couche de petit buffer (un peu plus long).

4/ Tu filtres cette nouvelle couche avec une requête dans l'onglet Général du menu propriétés pour ne conserver que les "Cng(Meters)"=0. Tu la joins à la couche tronçon via le champ "id_interne" <--> fid, et avec la calculatrice de champ récupère dans le champ IDRVAmont (ou Aval? je ne sais pas trop) le contenu du champ IDRV. Tu enregistres et fais de même avec l'autre champ après avoir filtré sur "Cng(Meters)"<>0.

Désolé pour le pavé mais c'est ce que j'ai trouvé applicable sans requête SQL dans QGIS. Il doit y avoir plus compact et je pense qu'à l'aide des fonctions de RefFunctions (notamment en combinant dbquery avec xat, yat, buffer, within), on doit pouvoir maintenant calculer directement dans la table attributaire en une commande mais après moults tentatives, j'abandonne; je tiens à garder mes cheveux.
Si quelqu'un est aventureux, je serais curieux de connaître la formule qui gagne smile
Si pas suffisamment clair ou étape pas bien expliqué, fais-le moi savoir...

** Attention par contre à la taille des données; ça peut mouliner! Il y a aussi un script Chainage dans la boîte à outils Traitements mais je n'ai pas réussi à le paramétrer pour n'avoir que sommet de départ et celui de fin. Dommage car il aurait pu servir pour enchaîner les traitements.

Dernière modification par SANTANNA (Thu 15 January 2015 12:37)

En ligne

 

Pied de page des forums

Powered by FluxBB