Pages: 1
- Sujet précédent - QGIS : Recherche de l'équivalent de la formule "RechercheV" - Sujet suivant
#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: 394
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: 394
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: 394
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: 3885
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)
Hors 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: 3885
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
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)
Hors ligne
Pages: 1
- Sujet précédent - QGIS : Recherche de l'équivalent de la formule "RechercheV" - Sujet suivant