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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 04 February 2010 14:02

Get's
Juste Inscrit !
Date d'inscription: 4 Feb 2010
Messages: 6

Mise à jour colonne avec plusieurs valeurs

Bonjour à tous.

Je vais essayer d'être clair pour expliquer mon problème (J'utilise MapInfo 7.5).

J'ai 2 couches: 1 avec des polygones, nommée "ZNIEFF" et 1 avec également des polygones, nommée "Communes".

Je souhaite renseigné une colonne X de ma table "ZNIEFF" par le nom des communes (colonne Z) de ma table "Communes" qui intersecte chacun de mes polygones de ma table "ZNIEFF".

Mon souci, c'est qu'il y a plusieurs communes pour une même ZNIEFF.
- Si je fais une simple mise à jour colonne, mapinfo me choisit par défaut une seul commune (même si plusieurs commune intersecte ma ZNIEFF).
- Si je fais une sélection sql, mapinfo me créé une ligne pour chaque commune qui intersecte chaque ZNIEFF.

Et il possible de demander a mapinfo de me mettre à jour ma colonne X avec, à la suite, le nom de chacune des communes qui intersecte chaque ZNIEFF. Par exemple:
ZNIEFF 1: Commune A Commune B Commune C
ZNIEFF 2: Commune H Commune A
ZNIEFF 3: Commune D Commune E Commune F Commune G
etc...

Je pense être obligé d'utiliser mapbasic pour faire ça, ce qui me fait peur, car je n'y connais (presque) rien ;-)

Si quelqu'un peut me répondre, je lui serais très reconnaissant, car je gagnerais un temps fou. Pour l'instant j'y arrive mais en passant par des manipulations (ou bidouillage) avec excel (Manip extrêment longue).

Hors ligne

 

#2 Thu 04 February 2010 14:37

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

Re: Mise à jour colonne avec plusieurs valeurs

Salut,

Est ce que cela t'aide --> http://georezo.net/forum/viewtopic.php? … concatener
A+
Joël

Hors ligne

 

#3 Thu 04 February 2010 14:52

Bruno MELI
Participant occasionnel
Lieu: Le Tampon - Réunion
Date d'inscription: 7 Apr 2008
Messages: 46
Site web

Re: Mise à jour colonne avec plusieurs valeurs

Bonjour,
Personnellement je ferais un découpage des znieff selon les communes.
Ainsi ma Znieff1 serait composée de trois polygones chacun sur une commune.
Il reste ainsi la possibilité de travailler sur chaque znieff en faisant un sélection du type nom="Znieff1" et également de faire des sélections par commune du type  commune="CommuneA"

BM

Hors ligne

 

#4 Thu 04 February 2010 16:42

Get's
Juste Inscrit !
Date d'inscription: 4 Feb 2010
Messages: 6

Re: Mise à jour colonne avec plusieurs valeurs

Merci à vous deux pour les infos.

Spacejo, le lien que tu me donnes est très intéressant, mais au final, il aboutit à utiliser excel. J'utilisai déjà cette technique (un peu différente, mais résultat identique).
Le souci c'est que les manip sont assez longues et je vais être amené a utiliser cette technique assez souvent. J'espérai donc trouver une solution plus direct avec mapinfo. Apparemment ça va pas être possible.

BM, si j'ai bien suivi ta méthode, je ne pense pas qu'elle résoudra mon problème. J'ai environs 1000 znieff et de 1 à 30 communes par Znieff. Du coup, il n'est pas envisageable de travailler Znieff par Znieff.

En ce moment je procède comme suit:
- selection sql avec ma table znieff et commune en utilisant intersect
(j'obtiens donc, pour chaque znieff, autant de ligne que de commune touchant la znieff (15 en moyenne))
-j'exporte sur excel
-jutilise une formule du type: =si(A1=A2;concatener(B1;" ";C2);B1)
-je copie/colle les valeurs dans une autre feuille
-puis je retire les doublons avec mDF XLdoublons
-je ramène sur mapinfo
-je fais une mise à jour

Ca parait rapide en 7 petits tirets mais qd il faut répéter l'opération plusieurs fois, ça devient vite très agaçant.

Hors ligne

 

#5 Thu 04 February 2010 17:04

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

Re: Mise à jour colonne avec plusieurs valeurs

il n'est pas envisageable de travailler Znieff par Znieff


Si tu travailles avec la FMB couplée avec un générateur de script c'est sans problème.
Connais tu ces 2 outils?
FMB --> Fenêtre MapBasic --> Options --> Voir Fenêtre MapBasic
Générateur de scripts --> J'ai mis en pièce jointe une version récente dans ce post  --> http://www.forumsig.org/showthread.php?t=25483
Tu pourras faire tes sélections par znieff et exporter ces sélections sous forme de tables.
Jusque là c'est faisable.
Pour la concaténation je sèche pour le moment mais je pense qu'avec un "Fetch" cela devrait être faisable aussi.
En espérant avoir orienter tes recherches
A+
Joël

Dernière modification par Spacejo (Thu 04 February 2010 17:04)

Hors ligne

 

#6 Thu 04 February 2010 17:27

Get's
Juste Inscrit !
Date d'inscription: 4 Feb 2010
Messages: 6

Re: Mise à jour colonne avec plusieurs valeurs

J'ai déja utilisé qq fois la FMB mais les formules était déjà construites (juste à changer le nom de la table ou des colonne ;-)
Bref, pour résumer, je n'y connais rien. Idem pour le générateur de script.
Du coup, la méthode de ton dernier post dépasse ma compréhension et mes compétences.

Hors ligne

 

#7 Thu 04 February 2010 17:35

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

Re: Mise à jour colonne avec plusieurs valeurs

Tout d'abord faire une recherche avec le mot clef --> "générateur de scrip"t ou "scritgen"
Tu verras pas mal de posts oû j'explique le fonctionnement de ce petit Log.
Idem sur le forum d'à côté wink
Maintenant avec un peu de précisions je veux bien te donner un coup de main
A+
Joël

Dernière modification par Spacejo (Thu 04 February 2010 17:36)

Hors ligne

 

#8 Fri 05 February 2010 05:17

Bruno MELI
Participant occasionnel
Lieu: Le Tampon - Réunion
Date d'inscription: 7 Apr 2008
Messages: 46
Site web

Re: Mise à jour colonne avec plusieurs valeurs

J'ai environs 1000 znieff et de 1 à 30 communes par Znieff. Du coup, il n'est pas envisageable de travailler Znieff par Znieff


L'opération peut être rapide :
-rendre la couche znieff modifiable (auparavant faire une copie)
-selectionner tout (1000 objets)
-définir comme cible (menu objets)
-sélectionner toutes les communes
-découper (menu objets)
il reste ensuite à faire une mise à jour de la colonne 'nomcommune' avec une jointure et c'est fini.

BM

Hors ligne

 

#9 Fri 05 February 2010 10:23

Get's
Juste Inscrit !
Date d'inscription: 4 Feb 2010
Messages: 6

Re: Mise à jour colonne avec plusieurs valeurs

Bruno, je t'avouerai que j'ai du mal à suivre ton raisonnement, désolé.
Je comprend la manip qui consiste à découper les Znieff en fonction des communes. Mais après je me retrouve avec autant de "bout" de Znieff (donc autant de ligne) qu'il y a de communes dans cette ZNIEFF. Comment fais tu ensuite pour regrouper toutes les communes d'une même Znieff dans une même colonne?

Joël, j'ai regardé ce petit logiciel. J'ai à peu près cerné le principe de base. Je vais essayé de trouvé encore plus d'info, car c'est pas facile pour un minuscule sigiste comme moi. Je vois ce que je veux, mais je n'ai pas le language pour le dire.

Donc je veux qu'il me renseigne toutes les communes qui intersecte chaque Znieff. Si je fais ça:

Add Column "Znieff" (COMMUNES )From communes_bourgogne Set To NOM Where intersects
Browse * From Znieff

ça me renseigne qu'une seule commune par Znieff!

Donc entre temps je souhaite qu'il vérifie s'il existe plus de 1 commune sur la Znieff, et si oui il concatene chacune de ces communes dans une même colonne. Et la, je sèche.

Hors ligne

 

#10 Fri 05 February 2010 10:43

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

Re: Mise à jour colonne avec plusieurs valeurs

Salut,

La difficulté de ton problème est la concaténation en verticale.
Concaténer en horizontale est facile --> champs1+Champs2+etc...
Mais ce que tu cherches c'est une concaténation ---> Enregistrement1+","+Enregistrement2+","+ etc....
C'est pour cela qu'il faut un "fetch"
Il me semble qu'il est plus facile de sortir une table par Znieff avec ses communes.
Puis pour chaque table faire une concaténation.
Pour l'instant pour la première partie du problème (c'est bon)
Pour la 2ème cela est plus compliqué mais il y a un espoir voilà une boucle qui fonctionne aussi dans la FMB ---> http://georezo.net/forum/viewtopic.php?id=14184
Voir le post de Laurent
A+
Joël

Hors ligne

 

#11 Mon 08 February 2010 12:35

Get's
Juste Inscrit !
Date d'inscription: 4 Feb 2010
Messages: 6

Re: Mise à jour colonne avec plusieurs valeurs

Bonjour.
Vivement que MapInfo puisse gérer directement cette concaténation en verticale. Je pense que ça en aidera plus d'un!!

Bon j'ai essayé de chercher des infos, par rapport à tes derniers posts (d'où mon silence ces derniers jours). Et je t'avouerai être désarmé face à tout ça. En fait, je n'ai même pas un semblant de script à proposer pour demander des corrections.

Je vais continuer à chercher des infos pour essayer de comprendre.

A+. Encore merci.
Gaëtan

Hors ligne

 

#12 Mon 08 February 2010 13:26

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Mise à jour colonne avec plusieurs valeurs

Bonjour
Un problème équivalent a été évoqué dans ce sujet, et j'y ai proposé une réponse utilisant Excel, détaillée par une pièce jointe au post #13 ....

Hors ligne

 

#13 Mon 08 February 2010 14:40

Get's
Juste Inscrit !
Date d'inscription: 4 Feb 2010
Messages: 6

Re: Mise à jour colonne avec plusieurs valeurs

Bonjour.
Merci Maurice pour cet info. En fait, actuellement je procède déjà avec excel (technique un peu différente, mais même résultat).
Le but principal de mon post était de trouver une technique plus rapide (car opération répétée plusieurs fois) et je pensais qu'il existait une petite formule magique dans mapbasic qui résoudrait mon problème.

Hors ligne

 

#14 Mon 08 February 2010 15:21

pierre agha
Participant actif
Lieu: TOULOUSE
Date d'inscription: 15 Oct 2005
Messages: 97

Re: Mise à jour colonne avec plusieurs valeurs

Bonjour
Que MI concatène en verticale, cela me paraît un peu difficile dans la mesure où les lignes ne sont pas des variables mais des enregistrements...
je me demande si, pour aller plus vite, même dans excel, on pouvait pas faire ceci : j'avoue que je n'ai pas testé mais puisque vous voulez aller vite, vous ne perdez rien à essayer vous-même !
1 ) dans table ZNIEFF, créer champ logique : si ZNIEFF intersecte COM = "OUI"
2 ) dans table commune; créer champ id_ZNIEFF et récupérer l'identifiant de la ZNIEFF
3 ) dans table ZNIEFF créer CHAMP TXT maxi taille (genre 256 caractères
4 ) si ID_ZNIEFF de T_COM = ID_ZNIEFF de T_ZNIEFF
5) mettre à jour table ZNIEFF, champ TX MAXI TAILLE  par concaténation ID_COM

Hors ligne

 

Pied de page des forums

Powered by FluxBB