Tous les sites de l'IGN | Le portail de l'IGN | Fil d'actualités
Accueil du site > Les logiciels > maDiffXML > Exemple de filtre

Exemple de filtre

mercredi 7 mars 2012, par Jean-Marc Viglino

Fonction de filtrage des évolutions insignifiantes i.e. des évolutions qui modifie la valeur d’un attribut sans impacte sur les données métier.

Ce filtre permet de filtrer les évolutions non significatives, c’est à dire les changement de valeur d’un attribut qui n’apporte pas d’information.

Par exemple :
- Le passage de ’NC’ (non communiqué) à ’NR’ (non renseigné) , qui correspond à une mise en conformité du modèle.
- Le changement de sens de circulation de ’NC’ (non communiqué) à ’Double’, car on suppose ici que la valeur par défaut est ’double’.

Le filtre comporte un fonction insignifiante(e, att, v1, v2) qui effectue le filtrage sur l’attribut att de l’évolution e, lorsque celui-ci passe de la valeur v1 à v2.
Ainsi insignifiant(e, "SENS", "NC", "Double") filtre l’attribut SENS lorsqu’il passe de ’NC’ à ’Double’.

  1. /****************************************************
  2. **  @brief Script de filtrage des evolutions insignifiantes
  3. **  @author Jean-Marc Viglino
  4. **  @version 0.1
  5. **  @date mercredi 12 mai 2010, 16:15
  6. ** 
  7. ****************************************************
  8. ** Fonction de filtrage des evolutions insignifiantes
  9. *  i.e. des evolutions qui modifie la valeur d'un attribut
  10. *  sans impacte sur les données métier.
  11. *  l'objet est passé de la valeur 1 à la valeur 2 (ou inversement)
  12. */
  13. function insignifiant
  14. (   e,      ///< l'evolution objet
  15.     att,    ///< l'attribut a filtrer
  16.     v1,     ///< valeur 1
  17.     v2      ///< valeur 2
  18. )
  19. {   // Parcourir les evolution
  20.     for (j=0; j<e.evol_obj.length; j++)
  21.     {   // l'attribut est bien present
  22.         if (!e.evol_obj[j].attributs.hasOwnProperty(att)) return false;
  23.         // avec une valeur significative
  24.         if (e.evol_obj[j].attributs[att]!=v1 && e.evol_obj[j].attributs[att]!=v2) return false;
  25.     }
  26.     // Filtrer
  27.     evol.filtreAtt(att);
  28.     // Valeur insignifiante ?
  29.     return true;
  30. }  
  31. // Afficher ce qu'on fait
  32. evol.patience ("Filtrage des évolutions insignifiantes");
  33. // Parcourir les evolutions
  34. var e;  // evolution courante
  35. for (e=evol.first("TRONROUT"); !evol.last(); e=evol.next("TRONROUT"))
  36. {   insignifiant(e, "INSEECOM_G", "NC", "NR");
  37.     insignifiant(e, "INSEECOM_D", "NC", "NR");
  38.     insignifiant(e, "NOM_RUE_D", " ", "NR");
  39.     insignifiant(e, "NOM_RUE_G", " ", "NR");
  40.     insignifiant(e, "NOM_RUE_D", "<Sans valeur>", "NR");
  41.     insignifiant(e, "NOM_RUE_G", "<Sans valeur>", "NR");
  42.     insignifiant(e, "SENS", "NC", "Double");
  43.     insignifiant(e, "TYP_ADRES", "NC", "NR");
  44.     insignifiant(e, "TYP_ADRES", "NR", "Classique");
  45.     insignifiant(e, "MISE_SERV", "1000-01-01", "NR");
  46.     insignifiant(e, "MISE_SERV", "1000-01-01", "<Sans valeur>");
  47.     insignifiant(e, "IT_VERT", "NC", "Non");
  48. }

maDiffXML

Licence :
CeCILL-B
Catégorie :
Différentiel
OS :
Win32
Type de logiciel :
Application
Langage :
C/C++
Télécharger
Télécharger :
maDiffXML
Version :
0.1b6
System :
Win32
Date :
13 décembre 2012
Taille :
6.7 Mo
Téléchargé :
725 fois
  • L'IGN a pour vocation

  • de décrire la surface du territoire national
  • et l'occupation de son sol, et d'élaborer
  • et de mettre à jour l'inventaire permanent
  • des ressources forestières nationales.
  • Découvrir l'institut