#1 Thu 08 October 2009 10:50
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Identifier les noeuds d'une ligne 3D posant problème
Aloha
Voici mon besoin : identifier les noeuds d'une ligne 3D ayant un z "farfelu".
Si j'arrive bien à construire une boucle pour tester le z de chaque noeud, je ne sais comment faire pour identifier l'objet ayant un/des noeuds posant problème.
Quelqu'un a-t'il déjà eu à répondre à ce besoin ?
D'avance, merci,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#2 Sun 11 October 2009 14:16
Re: Identifier les noeuds d'une ligne 3D posant problème
Utilisez BoundsExtractor pour lire les zmin et zmax de chaque entité.
Ca devrait vous permettre de trouver les z "farfelu" avec un Tester.
Hors ligne
#3 Sun 11 October 2009 19:19
- Pierre Dolez
- Participant assidu
- Lieu: Proville
- Date d'inscription: 14 Aug 2008
- Messages: 519
- Site web
Re: Identifier les noeuds d'une ligne 3D posant problème
Boujour,
J'essayerais aussi de calculer la pente entre deux points successifs. Si la pente (en valeur absolue) dépasse une certaine limite, le second point a un z "douteux".
Il est possible aussi que certains points n'ont pas de z, alors il y a peut-être une valeur de remplacement.
Hors ligne
#4 Mon 12 October 2009 14:13
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Identifier les noeuds d'une ligne 3D posant problème
Bonjour,
Merci pour vos réponses. Cependant, je cherchais la méthodes pour obtenir "tous" les points posant problème et non les lignes posant problèmes.
j'ai donc coder ceci en TCL :
Code:
proc ListeZ {} { set retvalZ [list] set num_coords [FME_Coordinates numCoords] ; set listIndex 0 ; # Get Original Coordinates while { $listIndex < $num_coords } { ; set z($listIndex) [FME_Coordinates getCoord z $listIndex] ; if {(50 >= $z($listIndex) || 180<= $z($listIndex) )} \ then {lappend retvalZ $listIndex} ; incr listIndex ; } ; FME_SetAttribute liste_z $retvalZ ; }
Qui me renvoie la liste des ponctuels posant problèmes.
Bonne journée.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne