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é ?

#1 Fri 03 March 2017 13:17

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

Bonjour à tous et désolé pour le titre qui n'est peut être assez clair.
Depuis quelques jours (je suis au début de ma pratique Qgis) j’essaye de résoudre un problème de relation.
Je vais essayer d'expliquer par un exemple pratique

Je travaille sur la BD fichier fonciers (table bâtiments),  sur la BD Topo et BD Parcellaire.

J’ai plusieurs parcelles sur lesquelles existent plusieurs bâtiments et donc plusieurs points (fichiers fonciers)

je voudrais joindre chaque point au bon bâtiment.

Mon idée est de calculer le Volume des bâtiments BD Topo, j'aurais donc:

Bat1 Vol 10, Bat2 Vol 20, Bat3 Vol 30

Sur les fichiers fonciers j'ai la surface de plancher des batiments :

BatA Surf 5, BatB Surf 15, BatC Surf 20

Je voudrais donc lier les caractéristiques du BatA au Bat1; du BatB au Bat2; du BatC au Bat3

J’ai un champ IdPar commune entre BDTopo et FichiersFonciers, naturellement les trois bâtiments ont le même IdPar.
L’hypothèse que la plus grande surface de plancher corresponde au plus grande volume n’est pas exacte au 100%, mais elle devrait bien se rapprocher de la réalité.

Help
merci
gianluca

Dernière modification par gain-gtr (Fri 03 March 2017 13:24)

Hors ligne

 

#2 Fri 03 March 2017 14:09

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

Je relis ma demande et je ne suis pas sûr d'avoir été clair,

Ce que je voudrais faire c'est de créer un attribut dans chacune des couches avec le IDpar (qui est commun aux deux) plus un chiffre qui dépend du volume (sur la BD TOPO) et de la surface (sur les FichiercFonciers)
Par rapport à l’exemple ci-dessus :
Bat1, IdPar aaaaaaaaaaaaa01
Bat2, IdPar aaaaaaaaaaaaa02
Bat3, IdPar aaaaaaaaaaaaa03
Puis……. Sur la couche fichiers fonciers
BatA, IdPar aaaaaaaaaaaaa01
BatB, IdPar aaaaaaaaaaaaa02
BatC, IdPar aaaaaaaaaaaaa03
Cela permettrait de les joindre.
Merci

Hors ligne

 

#3 Mon 06 March 2017 10:08

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

je vois que j'ai beaucoup de visualisations, mais pas de réponses.

cela est dû à ma question (incompressible) ou au fait que cette manip est impossible à réaliser?

merci
gianluca

Hors ligne

 

#4 Mon 06 March 2017 12:47

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

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

Bonjour,
Pour être sûr de comprendre et essayer de reformuler ton besoin, tu souhaiterais ajouter à chacune de tes couches de bâtiments un (des) champ(s) dans lequel/lesquels on aurait:
- l'information de la parcelle : ça c'est relativement faisable via une jointure spatiale au cas où tu ne l'aurais pas déjà effectué
- un classement croissant selon la surface ou le volume (en fonction de la couche de bâtiments) des bâtiments sur une même parcelle
L'objectif étant, en concaténant ce numéro d'ordre et l'identifiant parcelle, de créer un identifiant unique permettant de relier les deux couches de bâtiments.

Ai-je tout capté?
Si oui, en clic bouton sur QGIS, je ne vois pas.
Par contre, à l'aide des couches virtuelles (notamment si QGIS supporte les fonctions de fenêtrage), tu devrais pouvoir générer ton tableau. Je laisse par ailleurs aux plus expérimentés en SQL le soin de te proposer une requête si besoin. Sinon le forum Geo'BD peut être une bonne source d'informations ou d'aide.

Hors ligne

 

#5 Mon 06 March 2017 13:02

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

c'est exactement mon besoin, bien sur seulement la deuxième partie...

la jointure spatiale est crée, il faut maintenant que je trouve une solution pour joindre le bon bâtiment au bon point.

naturellement ce problème se pose seulement quand il y a plusieurs bâtiments sur la même parcelle...


si quelqu’un a des idées, je suis naturellement preneur.

entre temps je vais étudier les fonctions fenêtrage et chercher sur le forum GeoBD.
Merci
Gianlcua

Hors ligne

 

#6 Mon 06 March 2017 13:19

olivier.eckmann
Participant assidu
Date d'inscription: 14 Dec 2007
Messages: 354

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

Bonjour,

Je vais surement dire une bétise, mais si tu exportes vers Excel
Idbatiment / IdPar / Volume (surface * hauteur)
tu fais un tri sur 2 champs IdPar puis Volume
tu ajoutes une colonne en mettant 1 dans la première cellule, puis pour les cellules suivantes la formule Si IdPar de la ligne courante = IdPar de la ligne précédente alors numero = numéro précédent + 1 sinon numero = 1
tu concatènes IdPar et ton nouveau numéro.

Idem avec les surfaces du BDFoncier.

Olivier

Hors ligne

 

#7 Mon 06 March 2017 13:23

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

Je vais tester de suite si j'arrive avec Excell.
merci

Hors ligne

 

#8 Mon 06 March 2017 14:19

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

bop, c'est un peu la honte, mais sur excell comment je pourrais faire cette opération?
j'ai bien trie sur la colonne IdPar et Surface....
mais maintenant comment trouver une relation entre les deux?
merci

Hors ligne

 

#9 Mon 06 March 2017 14:53

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

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

tu fais un tri sur 2 champs IdPar puis Volume


Effectivement Excel est une bonne option (parfois, on va chercher loin...quoique) mais attention avec le tri car vous modifiez les séquences et le format shape n'aime pas ça. Ne le faites pas sur vos données source mais sur une copie de votre dbf que vous joindrez à votre shape une fois l'opération finie. En d'autres termes:
- s'assurer d'avoir dans le shape (donc sous GIS) un champ de numérotation unique des entités, genre 1,2,3.....
- ouvrir le dbf sous Excel, enregistrer sous
- dans la copie, faire un tri sur les deux champs,
- créer une nouvelle colonne "ordre"
- indiquer 1 pour la première ligne
-sur la deuxième ligne saisir la formule de comparaison/remplissage (pour préciser la formule d'Olivier)

Code:

=si(celluledecolonneIdpar=celluledecolonneIdpardelalignedavant; celluledudessus+1 ;1)

- faire une copie incrémentée sur les autres lignes
- calculer le VRAI champ identifiant unique thématique en concaténant le champ idpar et ordre.
- Enregistrer le fichier, l'ouvrir dans QGIS et faire la jointure sur la base du champ de numérotation pour rapatrier l'identifiant unique thématique

Hors ligne

 

#10 Tue 07 March 2017 11:51

gain-gtr
Participant actif
Lieu: MARSEILLE
Date d'inscription: 2 Mar 2017
Messages: 51

Re: QGIS: joindre 2 couches par une relation entre 2 valeurs differentes

MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI ! :-)

ça marche...

j'ai encore un peu de problèmes ici et là, mais le gros est fait
gianluca

Hors ligne

 

Pied de page des forums

Powered by FluxBB