AnderPijoan / cat2osm

Do What The F*ck You Want To Public License
11 stars 11 forks source link

Código para clasificar elemtex por rótulo. #28

Closed javiersanp closed 12 years ago

javiersanp commented 12 years ago

Hola

Según lo que hablamos en la lista y en import sobre los ELEMTEX, he añadido al programa la opción de asignar etiquetas a los nodos de elemtex en función del contenido del rótulo. También la de filtrar un poco más los rótulos correspondientes a CONSTRU y metidos por error en ELEMTEX.

Funciona creando un fichero que contendrá las reglas. Se trata de un fichero de texto plano con este formato:

regla etiqueta ... ... regla ...

Regla es una expresión regular. Hay dos tipos de reglas, las que tienen etiquetas sirven para agregar etiquetas, las que no tienen etiquetas para validar. Las etiquetas van separadas por tabuladores y tienen la forma key=value. Para cada nodo de elemtex, se comprueba con cada regla de etiquetado. Si la cumple se añaden las etiquetas. También se comprueba con las reglas de validación. Si cumple alguna de las reglas se considera no válido y se descarta. El fichero elemtex.rules sirve de ejemplo. Todo esto sólo se aplica si se define en el fichero de configuración la entrada ElemtexRules=elemtex.rules

Los cambios en el programa son:

=Main.java= Línea 136: Cuando archivo es * o ELEMTEX lee el fichero de reglas si está definido en la configuración.

=ShapeElemtex.java= Línea 15: Se añade la librería org.apache.commons.lang3.text.WordUtils [1] Línea 55: Si el rótulo está en mayúsculas, lo "capitaliza" usando la librería anterior. Se añaden los tags que dependan del rótulo. Línea 240-4: Se valida en función del rótulo.

=Rules.java= Nueva clase que se encarga de leer el fichero de reglas almacenándolo en una variable de clase de forma similar a Config. Los métodos de clase getTags e isValid son llamados desde ShapeElemtex

[1] http://apache.rediris.es//commons/lang/binaries/commons-lang3-3.1-bin.tar.gz

Un saludo