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 Tue 18 March 2008 10:08

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Bonjour,

Je cherche à faire une manip sur une table mais sans succès pour le moment.

Voilà ci-joint un exemple type. Il s'agit de regrouper les lignes (Dissolve) ayant le même ET_ID avec la Length MAX et surtout l'Azimuth correspondant!

L'outil Dissolve me permet bien de regrouper les ET_ID et les Length Max mais pas forcément de récupérer l'Azimuth se trouvant sur la même ligne...

Sans doute qu'il faut faire un code VBA mais s'il existe des scripts, astuces ou outils déjà... Par avance, merci


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Tue 18 March 2008 10:32

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Hello,

Juste une question pour préciser ta question, je reformule pour être sûr : tu veux regrouper les lignes ayant le même ET_ID.
Ensuite tu veux y adjoindre la longueur : de quoi ? du tout ou de la polyligne la plus longue ?
Et tu veux aussi l'azimuth : de quoi ? de chaque polyligne, de la somme, du max ou l'azimuth globale de la polyligne créee ?

Hors ligne

 

#3 Tue 18 March 2008 12:40

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Bonjour Robin,

Il s'agit bien de regrouper les lignes ayant le même ET_ID, en choississant comme attributs la longueur la plus longue (MAX) dans la colonne Length, ET aussi en choississant l'azimuth correspondant (qui n'est pas forcément le MAX ni le MIN dans la colonne Azimuth!). Pas évident ! Merci

Hors ligne

 

#4 Tue 18 March 2008 12:52

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Tu peux essayer de faire une jointure de table à partir de Lenght Max après le dissolve. Si tes données Lenght sont variées et très précises (x,xxxxxx), il y peu de chance qu'il te manque des infos après la jointure.

Vincent

Hors ligne

 

#5 Tue 18 March 2008 12:54

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Merci, quelqu'un m'a suggéré la même idée sur le forum ESRI, mais hélas seul 6 records passent à la jointure... sur des centaines !

Hors ligne

 

#6 Tue 18 March 2008 13:36

vipere
Participant actif
Date d'inscription: 23 Jan 2008
Messages: 100

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

bonjour,
je ne suis pas sur d'avoir bien compris, mais si tu crées un nouveau champ dans lequel tu concatènes les 3 valeurs sur lesquelles  tu veux faire ton dissolve, et qu'après tu lance ton dissolve sur ce champ commun, ça pourrait pas marcher?

Hors ligne

 

#7 Tue 18 March 2008 13:58

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Trotamundos a écrit:

Merci, quelqu'un m'a suggéré la même idée sur le forum ESRI, mais hélas seul 6 records passent à la jointure... sur des centaines !


Tu aurais un extrait ? Si tes longueurs sont trop précises, c'est bizarre, par contre si elle sont trop imprécises (des segments ont la même longueur), il suffit de multiplier par 1000 pour avoir une longueur suffisamment unique.

Hors ligne

 

#8 Tue 18 March 2008 14:06

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Voilà un jeu de données. Ce sont des rectangles qui sont convertis en polylignes. C'est du WGS84 car les longueurs et azimuths sont calculés sur l'ellipsoide pour s'approcher du vrai (et non en projetés). Merci


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#9 Tue 18 March 2008 14:19

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Tiens, avant que je teste ton jeu de données, une autre idée. J'ai testé avec des lignes bidons, ca semble marcher.

Soit un shape-source Poly.shp et une shp agrégé Diss.shp

1. Tu fais ton dissolve avec Length, fonction stat max..
2. Tu fais une jointure via ET_ID entre les deux shapes (Poly.shp et Diss.shp)
3. Tu créé un nouveau champ LM (Length Max) dans Poly.shp
4. Tu renseignes ce champ [LM] avec la valeur du champ joint [Diss].Length_Max
5. Toutes les identités de même ET_ID ont maintenant la même valeur de LM
6. Tu sélectionne les entités où [LM] = Length (à ajuster jusqu'à ce que ca marche)
7. Tu crée un nouveau champ Azimuth_LM
8. Tu le renseigne avec la valeur d'Azimuth uniquement pour les entités sélectionnées
Ca doit donner quelque chose comme ça

[img]http://img98.imageshack.us/img98/9158/lmld7.jpg[/img]

9. Tu relance ton dissolve en cochant ET_ID et LM et tu met dans le champ de stat Azimuth avec la fonction somme.

C'est tarabiscoté et ca revient un peu au même mais ca te permet d'ajuster l'étape 7 jusqu'à ce que ca marche.

Robin.

Hors ligne

 

#10 Tue 18 March 2008 14:35

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Toujours pas! C'est le même principe et la jointure sur les champs Length ne passe pas. Seulement 6 dans mon jeu de données Data Sample !

Faire une "formule égalité" sur des nombres décimaux n'est pas forcément facile et efficace car il se peut qu'il y ait des arrondis quelque part... Franchement, des puristes me recommanderaient une macro VBA mais c'est dommage pour un problème qui parait si simple ! Peut-être qu'il existe des outils qui me faciliterait la tâche, c'est pour cela que j'ai posté sur Georezo. Mais là...

Merci toutefois.

Hors ligne

 

#11 Tue 18 March 2008 14:36

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Re,

Après test, mon conseil : multiplie ton champ length par 100 dans un nouveau champ de type entier et recommence la manip.
J'ai remarqué que ton champ longueur est plus précis que le champ créé par le dissolve, ce qui fait que certaines entités ne sont pas sélectionnées.

Ci joint le résultat de la manip avec les azimuth des troncons max.

Robin.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#12 Tue 18 March 2008 15:11

Trotamundos
Participant assidu
Lieu: Geneva
Date d'inscription: 16 Jan 2007
Messages: 230

Re: ArcView 9.2 SP4 - Faire un Dissolve en conservant des attributs

Merci !

La technique fonctionne bien cette fois-ci. Tout est question de la précision des champs Double, c'est exact. Je vais m'en sortir maintenant...

Hors ligne

 

Pied de page des forums

Powered by FluxBB