Pages: 1
- Sujet précédent - Jointure spatiale : extraire data plusieurs points vers un polygone - Sujet suivant
#1 Thu 19 May 2016 10:34
- flo1er
- Juste Inscrit !
- Date d'inscription: 22 Apr 2014
- Messages: 9
Jointure spatiale : extraire data plusieurs points vers un polygone
Bonjour,
j'ai cherché sur le forum mais je n'ai pas réussi à trouver de sujets qui correspondent, je vous expose mon souci.
J'ai :
- une couche de point
- une couche polygone
J'ai compté le nombre de mes points à l'intérieur des polygones.
Je veux récupérer certaines informations de CHAQUE point présent dans mon polygone dans une colonne DIFFERENTE de ma table et là je bloque.
J'arrive à récupérer les élément d'un point en faisant une mise à jour de la colonne via une jointure spatiale, le point en question est choisi par le logiciel, et si je répète la manip' dans la colonne suivante je récupère les données du même point.
Donc si quelqu'un peut m'expliquer comment je demande au logiciel de prendre un point différent de celui traité dans la colonne précédente je serai plus que ravi.
Merci
PS : J'utilise Mapinfo Pro Version 15.0 Releawe Build 18
ah et je suis une bille en Mapbasic
Hors ligne
#2 Thu 19 May 2016 15:25
- CRIGBAB
- Participant assidu
- Lieu: Bayonne
- Date d'inscription: 14 Nov 2005
- Messages: 180
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
Bonjour,
A ma connaissance pas simple sans plusieurs sélections et tables intermédiaires. Effectivement si tu n’élimines pas point déjà pris lors de la première passe pour la suivante tu retrouves les mêmes, et ainsi de suite. En somme il faut identifié les points qui sont déjà "pris" et porter la jointure spatial sur ceux qui restent et cela à chaque fois que tu as fait une jointure.
En gros tu fais ta première mise à jour de colonne COL1.
Tu sélectionne tes points dont l'info n'est pas présente dans la 1ère colonne ajoutée COL1 de ta table polygone et qui est dans ce polygone ton résultat est la table point_non_reference_1
tu refais une mise à jour de colonne COL2 avec la table point_non_reference_1
Tu sélectionne tes points de table_non_reference_1 dont l'info n'est pas présente dans la colonne COL2 et toujours pas dans le polygone ton resultat est dans point_non_reference_2
tu refais une mise à jour de colonne COL3 avec la table point_non_reference_2
...
et ainsi de suite .
Cela devrait fonctionner. Je n'ai pas essayé mais il faut voir dans le concret comment la sélection des points non référencés fonctionne si l'info à transférer n'est pas unique. L'idéal est de passer par un identifiant unique par point que chaque polygone référencera.
Attention toutefois si l'info que tu récupères de la table point est identique pour plusieurs points tu n'auras par cette procédure qu'une fois chaque valeur pour un polygone. En effet enlevant les points qui portent cette même info et qui sont dans le même polygone ceux-ci ne pourront pas être pris en compte lors de la jointure.
Je prendrai le temps ce soir de voir une solution sûre, sauf si quelqu'un la met en ligne avant.
Cordialement.
Dernière modification par CRIGBAB (Thu 19 May 2016 15:35)
Hors ligne
#3 Thu 19 May 2016 15:44
- flo1er
- Juste Inscrit !
- Date d'inscription: 22 Apr 2014
- Messages: 9
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
Finalement je suis passé par une bête requête SQL et au lieu d'avoir mes indications groupées par polygone j'ai plusieurs lignes avec le nom du polygone et je traite la suite sur Excel.
C'est pas la solution optimale que j'espérais mais ça fera l'affaire bien que ça fasse une table un plus longue qu'envisagée initialement.
Hors ligne
#4 Thu 19 May 2016 16:03
- CRIGBAB
- Participant assidu
- Lieu: Bayonne
- Date d'inscription: 14 Nov 2005
- Messages: 180
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
Hello,
Finalement je n'ai pas attendu ce soir car le problème est solutionné soit par ta solution soit par la mienne qui fonctionne très bien aussi, je viens de faire le test.
La requête SQL est obligatoire et peut être très longue si tu as beaucoup de points à remonter.
Avantage de ma solution tu gardes ta table polygone avec le même nombre d’occurrences et seul le nombre de colonnes s'adapte en fonction du nombre d'infos remontées.
Restant à votre disposition.
Dernière modification par CRIGBAB (Thu 19 May 2016 16:04)
Hors ligne
#5 Thu 19 May 2016 17:11
- flo1er
- Juste Inscrit !
- Date d'inscription: 22 Apr 2014
- Messages: 9
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
Ok, j'essaierai demain de faire avec ta solution pour avoir une table propre comme je le voulais au début.
Merci ;-)
Hors ligne
#6 Thu 19 May 2016 18:08
- CRIGBAB
- Participant assidu
- Lieu: Bayonne
- Date d'inscription: 14 Nov 2005
- Messages: 180
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
La suite donc
Si tu y retravailles voici quelques éléments pour le SQL
et la jointure
Exemple sur la table Bidon_p et bidon_s (ponctuels et surfaciques)
structure de bidon_p
Definition Table
Type NATIVE Charset "WindowsLatin1"
Fields 3
id Char (10) ;
info1 Char (10) ;
info2 Char (10) ;
structure de bidon_s
Definition Table
Type NATIVE Charset "WindowsLatin1"
Fields 2
info1 Char (10) ;
info2 Char (10) ;
Si je ne sais pas combien de points au maxi je vais avoir avec une info_1 différentes je fais une mise à jour de colonne je choisis l'option "ajouter une colonne temporaire" et je prends par exemple info1 comme valeur de la table bidon_p a remonter.
ma table bidon_s s'enrichi temporairement d'une colonne info1_2
puis je fais la sélection suivante :
Fields {*}
Tables {bidon_P, bidon_S}
Where {bidon_P.Obj Within bidon_S.Obj and bidon_P.info1 <> bidon_S.info1_2}
Group {}
Order {}
Into {pt_non_ref_2}
Browse
je fais alors un mise à jour de colonne entre bidon_s et pt_non_ref_2 en prenant toujours ajouter une colonne temporaire et alimentée par info1 de pt_non_ref_2
J'obtiens dans bidon_s une nouvelle colonne info1_3
je refais une sélection comme ci-dessous:
Fields {*}
Tables {bidon_P, bidon_S}
Where {bidon_P.Obj Within bidon_S.Obj and bidon_P.info1 <> bidon_S.info2 and bidon_P.info1<>bidon_S.info1_2 and bidon_P.info1<> bidon_S.info1_3}
Group {}
Order {}
Into {pt_non_ref_3}
Browse
et je reprends une nouvelle maj de colonne
je fais alors un mise à jour de colonne entre bidon_s et pt_non_ref_3 en prenant toujours ajouter une colonne temporaire et alimentée par info1 de pt_non_ref_3
J'obtiens dans bidon_s une nouvelle colonne info1_4
je refais une sélection en ajoutant une condition et ainsi de suite tant que la sélection me retourne au moins un ponctuel non traité.
J'espère avoir été clair sinon je ferai la manipulation en l'enregistrant en vidéo....
Bon travaux cordialement.
Hors ligne
#7 Fri 20 May 2016 08:55
- CRIGBAB
- Participant assidu
- Lieu: Bayonne
- Date d'inscription: 14 Nov 2005
- Messages: 180
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
Bonjour,
Petite précision supplémentaire avec la méthode ci-dessus, le résultat de la table dont nous avons ajouté dynamiquement des colonnes doit être sauvegardé sous une nouvelle table, sinon la structure est perdue.
Cordialement.
Hors ligne
#8 Fri 20 May 2016 11:28
- flo1er
- Juste Inscrit !
- Date d'inscription: 22 Apr 2014
- Messages: 9
Re: Jointure spatiale : extraire data plusieurs points vers un polygone
Ca y est j'ai mené la manip à terme (la sql commence à devenir longue quand on a 5 points dans une zone pour obtenir le dernier reliquat de point non pris en compte et des noms de table à coucher dehors ;-) )
Merci pour le coup de main, j'ai une belle table lisible maintenant :-D
Bonne journée.
Cordialement.
Hors ligne
Pages: 1
- Sujet précédent - Jointure spatiale : extraire data plusieurs points vers un polygone - Sujet suivant