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 19 August 2008 10:51

Macaron
Participant assidu
Lieu: Paris
Date d'inscription: 12 Dec 2007
Messages: 244

VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

Bonjour,

Je viens d'extraire les noeuds d'une polyligne. Ils ont un identifiant commun qui correpond au tronçon de polylignes dont ils sont issus. Ainsi, il y a deux noeud qui possèdent le même identifiant, qui est par défaut celui du tronçon dont ils sont issus.
Par aillleurs je possède un raster qui correspond à l'altitude de ces points.

Devant un nombre conséquent de points, j'aimerais construire une boucle sous ArcMAP qui demanderait au logiciel le travail suivant : " Sélectionne-moi parmis deux points qui possèdent le même identifiant celui qui a la valeur altitudinale la plus basse".

Ce serait, non sans votre aide, la première boucle que je programmerais. Quelqu'un peut-il m'aider à me dire où se trouve dans ArcToolBox cette fenêtre de programmation et quel pourrait en être le script ? Je ne connais que Java comme langage de programmation (et encore....mes connaissances s'arrêtent à afficher une tête de clown sur mon ordi !). Alors, toutes vos suggestions sont les bienvenues.

Merci en tout cas,

Alban


Message rédigé intégralement à partir d'électrons recyclés.

Hors ligne

 

#2 Tue 19 August 2008 10:54

Macaron
Participant assidu
Lieu: Paris
Date d'inscription: 12 Dec 2007
Messages: 244

Re: VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

Bon une recherche rapide m'a permis d'entrevoir un peu plus clair.
Alt + F 11 fait apparaître une fenêtre de programmation en VBA.
J'avance, j'avance....

Dernière modification par Macaron (Tue 19 August 2008 10:56)


Message rédigé intégralement à partir d'électrons recyclés.

Hors ligne

 

#3 Tue 19 August 2008 15:14

Macaron
Participant assidu
Lieu: Paris
Date d'inscription: 12 Dec 2007
Messages: 244

Re: VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

problème résolu sans passez par VBA.
Pour des détails complémentaires, me faire signe.
Alban


Message rédigé intégralement à partir d'électrons recyclés.

Hors ligne

 

#4 Tue 19 August 2008 15:28

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

C'est le genre de chose que peut faire la fonction 'récapituler' sur un champ avec l'info du minimum d'un autre champ. Tu as bien utiliser cela ou tu as trouvé plus compliqué (ou plus simple).


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#5 Wed 20 August 2008 09:48

Macaron
Participant assidu
Lieu: Paris
Date d'inscription: 12 Dec 2007
Messages: 244

Re: VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

Salut Jérome,
Je pense que ma solution, qui n'est qu'une bidouille, est peut-être moins rapide que celle que tu proposes.
Je te l'expose dans l'espoir que cela puisse tôt ou tard aider quelques uns d'entre-nous.

1) Au départ j'avais un shape de polylignes dont j'ai cherché grâce à l'outil ET geowizard à ne garder que les noeuds via la fonction « Convert polyligne to point » puis cocher la case node. J'obtiens un shape de noeuds.

2) Il faut maintenant que je puisse attribuer une altitude à chacun de ces noeuds. Pour cela on va dans Arctoolbox > Outils Spatial Analyst > Extraction > Extraction de valeur vers des points. Une nouvelle fenêtre de dialogue apparaît.
        On défini la couche à mettre en entrée : les nœuds de nos polylignes
        Le raster en entrée : Le MNT
        On attribue un nom au fichier de sortie.
        On clique sur le bouton environnement et l’on décide que l’environnement de travail se passe dans la projection de la couche vecteur en entrée (ici les nœuds) sinon le résultat dans la colonne altitude sera –99999,999.
    On obtient un nouveau shape dans lequel à un point est attribuée une valeur d’altitude.

Voili, Voilou,
Merci encore à Cra pour le tuyau.
Alban


Message rédigé intégralement à partir d'électrons recyclés.

Hors ligne

 

#6 Wed 20 August 2008 10:45

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

Il n'y a pas des électrons recyclés qui se sont perdus en route ?

Tu disais dans ton premier message que : "Je viens d'extraire les noeuds d'une polyligne. [...]

Devant un nombre conséquent de points, j'aimerais construire une boucle sous ArcMAP qui demanderait au logiciel le travail suivant : " Sélectionne-moi parmis deux points qui possèdent le même identifiant celui qui a la valeur altitudinale la plus basse"."


Je croyais donc que ce que tu viens de décrire ne te posais pas de problème, et que tu voulais résoudre un autre problème (la deuxième partie). Je me serais trompé ?


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#7 Wed 20 August 2008 11:53

Macaron
Participant assidu
Lieu: Paris
Date d'inscription: 12 Dec 2007
Messages: 244

Re: VBA _ Ne retenir que le noeud qui à l'altitude la plus basse.

Oop's ! En effet j'ai oublié de décrire la troisième étape. Autant pour moi.

3 ) On ouvre sous excel la table attributaire et on fait la différence entre les deux points qui ont le même identifiant (dans une case du tableur on tape "= B2-B1" par exemple). On généralise cette formule à toutes les lignes. Il apparait alors deux solutions : Soit une valeur 0 si la différence est dans l'intervalle ]- l'infini,0]  ; soit le résultat de la différence si le résultat est supérieur à 0. Dans mon cas, comme c'est la valeur la plus basse qui m'interessait, j'ai ensuite remplacé tous les 0 par des 1 par l'outil rechercher/remplacer d'excel qui se trouve dans le menu édition et j'ai enregistré la table.

4) De retour sous ArcMAP, j'utilise l'outil "sélection par attribut" et je demande au programme de ne me sélectionner que les points dont la valeur est égale à 1. J'exporte le résultat de ma sélection dans une nouvelle table que j'enregistre dans le répertoire de mon choix.

NB : Un conseil tout bête : avant d'entamer l'étape 3, je vous conseil de quitter l'application et de commencer le travail sous excel avec une copie de cette table. Cela m'est déjà arrivé de ne plus pouvoir ouvrir mon shape après des transformations des valeurs de la table.

Voili, voilou.


Message rédigé intégralement à partir d'électrons recyclés.

Hors ligne

 

Pied de page des forums

Powered by FluxBB