Twitter Yopaseopor

Movilidad

Pinterest

diumenge, 6 d’abril de 2014

#yomapeo Cómo crear un preset para JOSM

Antes de empezar diré que "es fácil",todo lo que necesitais es a vuestro amigo JOSM, y un editor de texto  en condiciones como es Notepad++ , que nos destacará por colores parámetros, etc. todo está hecho con modificaciones sencillas, y además de estar colgado en sus sitios "oficiales" está en Github para quien quiera bajarse la última versión o aportar mejoras.
Lo que me ha llevado a crear mis propias adaptaciones para trabajar no es otra cosa que la facilidad de trabajo, no sólo para mi sinó para los demás.Es evidente que cuando creamos una adaptación que habla nuestro idioma o que facilita y automatiza cierta parte del trabajo farragoso lo que estamos haciendo es acercar a mucha más gente la posibilidad de trabajar, modificar y colaborar con OSM.Vamos a ello.

 Como crear un preset

En mi caso el preset que creé fue el de señales de tráfico con dos objetivos principales:

  • facilitar el etiquetaje de señales de tráfico frente a la complexión del preset español para el plugin Roadsigns.
  • facilitar y complementar un etiquetaje más complejo para las vías,ya sea con con tags específicos (de las calles me interesa saber  además de nombre y tipo 
  1. anchura 
  2. línea continua/discontínua
  3. aceras
  4. velocidad
  5. carriles
  6. dirección de los carriles)

  • otro tipo de agrupaciones que sean lógicas (puedes escoger si una calle es normal, residencial o peatonal, sin variar de menú).

Después de leerme las instrucciones para crear un preset (hay modo externo  y hay modo basado en wiki ) y de enterarme poco de la cosa, decidí bajarme uno similar a lo que yo deseaba llamado http://josm.openstreetmap.de/wiki/Presets/Quick-highways .Al desmontarlo por dentro vi de qué estaba formado y cómo estaba estructurado.Después además, me miré http://josm.openstreetmap.de/browser/trunk/data/defaultpresets.xml donde encontré los presets por defecto que trae JOSM, tal y como están formados (si yo quiero añadirle información extra - tags - a calle, lo que hago es usar las opciones que hay por defecto de calle y añadirle las que a mí me interesan).Al principio en este mismo archivo también están todas las opciones, en este artículo solo destaco las que uso.

Como "construí" yo el mío


Mi idea era un paquetito con un archivo y los iconos asociados a ello.Lo primero era hacer ese archivo XML (, Notepad++ tiene para colorear estilos, nos irá muy bien: Notepad++ > Language > XML (nos lo pintará, estamos escribiendo el código que pondremos en una página de la wiki

1-Le ponemos una cabecera


{{{
#!preset
<presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0" author="yopaseopor"
shortdescription="traffic_signs_"
es.shortdescription="señales_tráfico_"
ca.shortdescription="senyals_trànsit_"
description="Tag easily ways and nodes for highways and traffic signals."
  version="1.[[revision]]_[[date]]">
       
<!-- Based on Quick-highways from lzhl, for parking options Parking Lanes from Sebastian Klemm, Kay Drangmeister -->

(Código wiki) {{{      
(Código wiki) #!preset
(Especificaciones y autor del preset) <presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0" author="yopaseopor"
(Descripción corta) shortdescription="traffic_signs_"
(descripción corta en un idioma determinado) es.shortdescription="señales_tráfico_"
(puedes poner tantos idiomas como quieras.Codigo de idioma y punto con la variable) ca.shortdescription="senyals_trànsit_"
(descripción en inglés que se verá en la wiki) description="Tag easily ways and nodes for highways and traffic signals."
(Esto hará que las versiones sean compuestas de número de revisión y fecha, automatizando el proceso) version="1.[[revision]]_[[date]]">
          <!-- Aquí puedes escribir en qué te has basado, quien te ha ayudado, etc. -->
(Escribir entre <!-- --> Sirve para hacer anotaciones, como por ejemplo en qué te has basado para realizar tu preset) <!-- Based on Quick-highways from lzhl, for parking options Parking Lanes from Sebastian Klemm, Kay Drangmeister -->

2-Empezamos la estructura.En mi caso , un grupo

<group name="Traffic_signals" es.name="Traffic_signals" icon="ES_road_beacon_big.png">
</group>

(nombre del preset, lo que se verá en el menú)<group name="Traffic_signals"
(nombre en otro idioma, por si el programa está configurado en ese otro idioma) es.name="Traffic_signals"
(icono del preset, funciona con URL o con rutas relativas al plugin, yo lo pongo desde la raíz para que todo esté junto, tampoco va a haber tantos) icon="ES_road_beacon_big.png">

3-Empezamos a escribir código


El código funciona como un árbol, dentro de este primer grupo pondremos todas nuestros ítems u otros subgrupos, a su vez dentro de cada ítem pondremos todas las etiquetas y cerraremos el ítem , para cerrar el subgrupo , para cerrar el grupo, hasta haber cerrado tantos grupos o ítems como hayamos abierto.
Por ejemplo, vamos a crear un grupo, con un subgrupo que tenga un ítem.
<group name="Traffic_signals" es.name="Traffic_signals" icon="ES_road_beacon_big.png">
    <group name="Traffic_signals1" es.name="Traffic_signals" icon="ES_road_beacon_big.png">
        <item name="motorway" es.name="Autopista/Autovía" ca.name="Autopista/Autovia" icon="ES_motorway.png" type="way">
            <label text="Inserting a highway in UK1" />

            <text key="name" text="Highway (e.g. M3)" />
              
    <list_entry value="forward" display_value="sentit de" short_description="descripción1" icon="icono1.png" icon_size="" />
    <list_entry value="backward" display_value="contrari" short_description="descripción2" icon="icono2.png" icon_size="" />
    <list_entry value="both" display_value="ambdos" short_description="descripción3" icon="icono3.png" icon_size="" />
    <combo key="direction" text="Sentido" values="forward,backward,both" default="backward" delete_if_empty="true"  />
    <multiselect key="side" text="Lado de la vía" values="right;left;up;down;both" default="right" delete_if_empty="true"  />


            <!-- Highways are usually oneway -->
         <check key="oneway" text="Oneway" default="on" />

            <!-- Always setting class=highway -->
            <key key="class" value="highway" />
        </item>
    </group>
  
    <group name="Traffic_signals2" es.name="Traffic_signals" icon="ES_road_beacon_big.png">
        <item name="Highway2">
            <label text="Inserting a highway in UK2" />

            <text key="name" text="Highway (e.g. M3)" />
            <combo key="highway" text="Type" values="major,minor" />

            <!-- Highways are usually oneway -->
          <check key="oneway" text="Oneway" default="on" />

            <!-- Always setting class=highway -->
            <key key="class" value="highway" />
        </item>
    </group>
</group>  

4-Tipos de opciones dentro de un ítem


En primer lugar debemos complimentar la información del ítem.

(nombre del ítem que aparecerá en el menú) <item name="motorway"
(nombre en otros idiomas) es.name="Autopista/Autovía" ca.name="Autopista/Autovia"
(icono) icon="ES_motorway.png"
(tipo, en función de si es un nodo, una vía o una relación se aplicará o no este ítem.Hay estos way,node,relation,closedway (separados por coma) ) type="way">

5-Interioridades del ítem: Tipos:

A-Texto


<label text="Inserting a highway in UK1" />

(Permite escribir algo en el menú resultante ) <label text="Inserting a highway in UK1" />

B-Escribir el valor de una clave determinada


<text key="name" text="Highway (e.g. M3)" />

(permite que para la key "name" escribir su valor en un cajetín.Se puede cambiar la key) (<text key="name" text="Highway (e.g. M3)" />
Se le pueden añadir los parámetros siguientes:
  • -default: valor a mostrar por defecto  default="right"
  • -use_last_as_default: usa el último , valor por defecto false, posibilidades: true/false/force)
  • -auto_increment: separados por comas, se ponen una lista de incrementos y decrementos "-2,-1,+1,+2" que aparecerán en un botón al lado del campo de texto , por defecto está en "false" y sólo se activa si el usuario lo escoge.
  • -length: tamaño del campo de texto dónde escribir el valor

C-Escoger de una lista un valor determinado o varios

    <list_entry value="forward" display_value="sentit de" short_description="descripción1" icon="icono1.png" icon_size="" />
    <list_entry value="backward" display_value="contrari" short_description="descripción2" icon="icono2.png" icon_size="" />
    <list_entry value="both" display_value="ambdos" short_description="descripción3" icon="icono3.png" icon_size="" />
    <combo key="direction" text="Sentido" values="forward,backward,both" default="backward" delete_if_empty="true"  />
  
    <multiselect key="side" text="Lado de la vía" values="right;left;up;down;both" default="right" delete_if_empty="true"  />
(Para el valor direction nos aparece una lista <combo key="direction" que con la leyenda Sentido text="Sentido" nos permite escoger entre los valores forward,backward y both, aunque nosotros lo vamos a ver con los nombres sentit de,contrari y ambdós, además que cada uno va a tener una descripción, con su icono y tamaño de icono, por defecto si no se rellena)
    <list_entry value="forward" display_value="sentit de" short_description="descripción1" icon="ES_traffic_sign_dir.png" icon_size="" />
    <list_entry value="backward" display_value="contrari" short_description="descripción2" icon="ES_traffic_sign_dir.png" icon_size="" />
    <list_entry value="both" display_value="ambdos" short_description="descripción3" icon="ES_traffic_sign_dir.png" icon_size="" />
(Al final se pone el código del combo) <combo key="direction" text="Sentido" values="forward,backward,both" default="backward" delete_if_empty="true"  />

(otra solución es poner solo el código directamente con los valores entre comillas y separados por comas, si se van a escoger varios valores entonces ya no es combo sino multiselect y no se separan con comas, se separan con punto y coma.) values="right,left,up,down,both"

En básico estos son los parámetros:

(clave a la que se le va a adjudicar valor) <combo key="side"
(texto que va a aparecer) text="Lado de la vía"
(valores determinados, saldrán traducidos si están traducidos en el programa) values="right,left,up,down,both"
(valor por defecto que va aparecer) default="right"
(se borrará la clave si no se le escribe ningún valor) delete_if_empty="true"

D-Marcar con un tic los valores que queremos activar


<check key="oneway" text="Oneway" default="on" />
(clave a la que vamos a aplicar el valor) <check key="oneway"
(texto que vamos a ver) text="Oneway"
(por defecto, activado (on) o desactivado (off) default="on" />

Más variables que añadir:
  • value_on: valor que se aplicará en caso de poner el tic (por defecto es yes)
  • value_off: valor que se aplicará en caso de quitar el tic (por defecto es no)

Finalmente , siendo de la wiki hay que añadir este otro código
</presets>
}}}
Estas son las instrucciones básicas, cualquier duda preguntad sin miedo, y si considerais que se puede añadir más información no dudeis en avisar.

Cap comentari:

Publica un comentari a l'entrada