#1 Wed 16 May 2012 17:33
- loloi
- Participant actif
- Lieu: rennes
- Date d'inscription: 5 Sep 2005
- Messages: 67
FME 2012 - bd-adresse - nom des type d'axes
Bonjour,
Je souhaite mettre à jour l'attribut du nom des voies de la BD-ADRESSE de l'IGN. En effet, les attributs du type de voie sont « suffixés », ce qui complique leur lecture.
Je veux donc par exemple que « AV des fleurs » devienne « Avenue des fleurs » et que « R de Paris » devienne « Rue de Paris ».
Le hic, c'est que je ne sais pas comment faire pour que seul le premier R soit modifié en RUE et pas tous les R de mon adresse : il ne faut pas que « R sur la plaine » devienne « Rue surue la plaine ».
Si quelqu'un a un workbench miracle, je suis preneur car je ne sais pas quels paramètres passer !
Cordialement
Florent DUCHESNAY
Hors ligne
#2 Wed 16 May 2012 18:28
Re: FME 2012 - bd-adresse - nom des type d'axes
Pas de workbench miracle mais une proposition. Il vous faut travailler avec StringReplacer en utilisant les expressions régulières.
Dans votre exemple :
Texte à rechercher : ^r
Texte de remplacement : Rue
Utiliser les exp reg : oui
Hors ligne
#3 Mon 21 May 2012 08:51
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: FME 2012 - bd-adresse - nom des type d'axes
Aloha,
Ayant procédé à la traduction de la BD_ADRESS (en la confrontant au fantoir pour avoir le rivoli), j'ai utilisé ce bout de TCL (notamment pour modifier la casse) :
Code:
proc CASSE {} { set res [string tolower [FME_GetAttribute "TYPE DE VOIE"] ] switch -nocase $res { "all" {set res "allée"} "rue" {set res "rue"} "ave" {set res "avenue"} "pla" {set res "place"} "rte" {set res "route"} "gr" {set res ""} default {} } append res " " set libel [FME_GetAttribute LIBELLE_VOIE] set ListMots [regexp -inline -all -- {\w+|\'+} $libel] set j -1 foreach _ $ListMots { if {($_ == "'")} { set res [string trimright $res] set j 0 append res $_ } else { switch -nocase $_ { "all" {set _ "allée"} "rue" {set _ "rue"} "ave" {set _ "avenue"} "pla" {set _ "place"} default {} } set i [expr { [string length $_ ] -1 } ] if [regexp (^(DE|DU|D|DES|LE|LA|LES)$) $_ ] { append res [string tolower $_] } else { append res [string tolower $_ 1 $i ] } if {$j==0} {incr j} else {append res " "} } } set res [string trimright $res] set res [string trimleft $res] return $res }
Cordialement,
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