accesskey_mod_content
CTT - Centro de Transferencia de Tecnología

Mapas Colaborativos - Open City Zaragoza

  • Descripción Funcional

    1. Descripción

    Los Mapas Colaborativos son un instrumento de participación, colaboración y co-creación que facilita a los diferentes agentes (empresas, organizaciones ciudadanas, emprendedores, personas, etc.) acceder y utilizar los datos abiertos espaciales de Zaragoza para conocer su barrio y realizar propuestas para su mejora.

    Uno de los objetivos es poner a disposición de la ciudadanía los elementos necesarios que permitan tener en cuenta sus aportaciones a la hora de tomar decisiones vinculadas a posiciones geográficas como por ejemplo: ubicación de un banco, suprimir una barrera arquitectónica, etc.

    Este concepto se pretende extender al objeto de que sea la propia ciudadanía la que proponga que mapas quiere que se desarrollen, y participe en los mismos. La ciudadanía puede de esta forma participar en el desarrollo y diseño de servicios, productos,...

    La deliberación, la búsqueda de ideas y los mapas colaborativos nos sirven para saber qué quiere la ciudadanía, y saber con quién relacionarnos. Debemos abrir las políticas públicas, facilitando que el papel de la ciudadanía sea más activo y ganar en calidad de vida de la comunidad.

    La cartografía, concebida como herramienta colaborativa y de impulso en los procesos de gobernanza abierta ha de considerar:

    • Los objetivos. Hay que coordinar las aspiraciones lógicas y los sentimientos de la ciudadanía que vive y sufre ese espacio, y los deseos y planteamientos de los gestores políticos.
    • La definición de las variables, que pueden tener presentaciones no mensurables y, sin embargo, de ellas puede depender el éxito o fracaso del análisis.
    • La escala de presentación del problema. A diferente escala o ámbito de referencia, diferente grado de información y tratamiento de la misma. Esto es de vital interés si lo que se busca es la operatividad de los resultados, y la inteligibilidad de la cartografía resultante de los mismos
    • El carácter transversal y multifocal de los estudios urbanos. Es necesario sopesar todos los valores dentro de un conjunto más amplio para que adquieran su auténtica dimensión y eficacia.

    1.1 Los mapas colaborativos: la hibridación entre los cuantitativo y lo emocional

    El desarrollo de las cartografías colaborativas puede tener componentes sensibles o emocionales ofreciendo instrumentos que combinan diferentes métodos de trabajo.

    Algunos vendrán derivados de la información que podamos obtener a través de elementos como los sistemas de información geográfica, los visores cartográficos, las redes sociales o las herramientas biométricas. Igualmente, interesan las representaciones individuales o colectivas sobre mapas en blanco, o con información que podremos combinar con el juego o la participación individual y colectiva.

    El visor, los sistemas de información geográfica y sus programas de cartografía digital deben de facilitar las representaciones cartográficas emocionales de una manera digital, en red y compartida por la ciudadanía.

    Incluso se podrían monitorizar a través de herramientas biométricas las reacciones fisiológicas ante determinados estímulos o procesos de construcción de la propia cartografía emocional o colaborativa. Y todo ello lo lograremos representar a posteriori a través de los sistemas de información geográfica y la cartografía digital para que sea una capa más en el conocimiento de la ciudad ayudando a la gobernanza y a la toma de dicciones. Habría que reflexionar sobre tres tendencias:

    • Ligada a la psicogeografía y los cambios fisiológicos o las respuestas fisiológicas de nuestro cuerpo y cerebro hacia determinados estímulos, sensaciones y emociones (Salud/calidad de vida).
    • Articulada en torno al significado e interpretación de los recuerdos relacionados con la historia, o la historia vital de colectivos específicos (antropología/sociología).
    • Cuestiones artísticas y estéticas

    2. Componentes básicos

    A continuación se detallan los componentes básicos para una herramienta que tiene que permitir la creación de mapas colaborativos e interactivos que sirvan a la ciudadanía para mapear sus valoraciones, emociones y percepciones de sus calles, barrios y ciudades.

    Es importante que existan mapas interactivos que permitan combinar un gran volumen de datos y visualizaciones a la carta de la ciudadanía en múltiples pantallas y dispositivos.

    2.1 Cartografía base

    La ciudadanía puede acceder a la Infraestructura de datos espaciales de Zaragoza desde cualquier dispositivo. Una dificultad es comprender y aprovechar flujos de interacción y captación de datos de manera que sean útiles para la acción política y la gobernanza de las ciudades. Una de las oportunidades de una IDE (Directiva INSPIRE) es poder crear capas de información que mejoren la actuación y la intervención en lo público. Desde un punto de vista tecnológico, los servicios son la parte más importante de una IDE y proporcionan una base para la búsqueda, evaluación y explotación de la información espacial para usuarios y proveedores de todos los niveles siendo la base que permite construir aplicaciones para explotar los datos geográficos. Los servicios fundamentales, siempre conforme a la especificación de OGC son:

    • Servicios de visualización:
      • Servicios Web de Mapas WMS . Estos servicios proporcionan una representación (imagen) de un mapa para un área requerida. Las capas se muestran y pueden solicitarse individualmente o mediante un mapa compuesto.
      • Servicios Web de Teselas de Mapa WMTS , de modo que son estándar e interoperables que proporcionan un acceso más rápido y eficiente y permiten ofrecer una mejor experiencia de uso.
    • Servicios de Descarga
      • Servicios Web de Features WFS. Estos servicios facilitan datos que poseen un conjunto de características espaciales. Habitualmente los datos proporcionados están codificados mediante GML, pero cualquier otro tipo de dato y cualquier formato es válido. GML codifica vectores de datos (por ejemplo un servicio de features usual devuelve las coordenadas para datos geométricos, sin embargo, un servidor web de mapas devuelve una imagen). Además, los datos geométricos pueden ir acompañados de información no espacial.

    En cuanto a los formatos de almacenamiento de datos geográficos se recomienda utilizar un sistema gestor de base de datos con módulo espacial como PostgreSQL (software libre) con POSTGIS o como Oracle Spatial para almacenar las geometrías como objetos espaciales nativos de dichos sistemas. Si no se puede utilizar ningún sistema de este tipo las geometrías se almacenarán en columnas de tipo BLOB o CLOB en formato WKB o WKT.

    2.2 Capas de información

    Son los conjunto de datos que se pueden incorporar a un mapa colaborativo. Se pretende facilitar la incorporación de recursos al mapa colaborativo favoreciendo que las personas puedan conocer y complementar la visión que tienen de la ciudad, y mejorar sus capacidades de análisis, reflexión y propuestas de mejora. Algunos ejemplos de conjuntos de datos en formatos abiertos que se pueden incorporar son:

    • Distintas delimitaciones de la ciudad (juntas, distritos, manzanas y edificios)
    • Plano urbanístico (PGOU, catastro)
    • Equipamientos y servicios municipales
    • Infraestructuras del espacio público (agua, electricidad, zonas verdes, farolas, aceras, arbolado, bancos, contenedores, etc.)
    • Redes de transporte
    • Otros (equipamientos privados, etc.)

    2.3 Tipologías o niveles de participación y co-creación

    Las posibles tipologías o niveles de participación y co-creación que la ciudadanía tiene a su disposición, a través de los mapas colaborativos, para el diseño de sus calles, barrios y ciudad son:

    • Sugerencias. Serían peticiones objetivas y justificadas. Sobre las bases de información existente: la ciudadanía selecciona una de los items ya existentes y sobre el mismo hace una sugerencia (estado en el que se encuentra una infraestructura, equipamiento o servicio. El estado de un equipamiento como un banco estropeado, baldosas o firme en mal estado, una mejora del servicio,…).
    • Propuestas. Sobre un tema como la propuesta para localizar unos bancos, o una farola porque se considera que la zona está mal iluminada se hace una votación, reflexión, análisis en el que participa la ciudadanía. E incluso puede hacer sugerencias utilizando la herramienta anterior con el modelo de propuesta.
    • Percepción. Es la valoración subjetiva del espacio de acuerdo al modelo de emociones o sentimientos (Alegría, tristeza/nostalgia, miedo, rabia, rechazo/asco, sorpresa). Ideal para trabajar sobre un espacio, una infraestructura sobre la que se quiere expresar su emoción. Puede ser sobre un tema de valoración general (espacios que te dan miedo de la ciudad, olores, ruidos) o acciones más específicas para considerar más allá del proyecto urbanístico, las consideraciones más cualitativas del ciudadano. La representación cartográfica es más general, pero ofrecer información muy interesante independientemente del estado o calidad de la infraestructura, equipamiento o espacio.
    • Cuadros de mandos o fuentes de experiencias participativas. Existen numerosas iniciativas de colectivos -muchos de ellos con financiación pública- que están recogiendo información más o menos georreferenciadas o la percepción del barrio, y que serviría de recopilación para tenerlo en un sitio web (Las Zaragozas, El semáforo de San Pablo, los de los Centros de Salud, mapas activos de Salud, Encuestas....).

    2.4 Usuarios/usuarias del servicio

    Existen dos tipos de usuarios/as del servicio del módulo de mapas colaborativos. Los tipos de usuarios que se pueden definir son:

    • Usuarios/as anónimos/as: cualquier usuario que acceda a la URL del sistema sin autenticar en la plataforma de Gobierno Abierto puede acceder a los mapas, consultando el contenido de los mismos pero no podrá ni crear ni modificar mapas.
    • Usuarios/as autenticados: los usuarios/as dados de alta en la plataforma de Gobierno Abierto del Ayuntamiento pueden, además de consultar los mapas disponibles, colaborar en la co-creación de mapas existente, de crear y editar nuevos mapas. La edición sólo se puede realizar en:
      • mapas definidos por un mismo usuario/a
      • mapas definidos por otros usuarios/as y definidos como colaborativos y por lo tanto facilitan la co-creación.

    2.5 Tipos de mapas

    El sistema de mapas colaborativos permite definir tres tipos de mapas. Los tipos de mapas colaborativos disponibles son:

    • Públicos: pueden ser consultados por todos los usuarios/as pero no permiten la co-creación, colaboración de los mismos.
    • Colaborativos: pueden ser consultados por cualquier usuario/a y además permiten la modificación y la co-creación de elementos por parte de usuarios/as de la plataforma de Gobierno Abierto.
    • Privados: mapas sólo disponibles para el usuario que los ha definido, no permite el autor que otros participen en su creación, no permiten la colaboración en su edición.

    3. Funcionalidades del sistema

    El sistema de mapas colaborativos ofrece una serie de funcionalidades:

    • Listado de mapas colaborativos
    • Creación y co-creación de mapas colaborativos
    • Consulta de un mapa colaborativo
    • Modificación/Eliminación de mapas colaborativos

    A continuación se irán comentando cada una de estas funcionalidades y las posibles mejoras funcionales para cada una de las funcionalidades.

    3.1 Listado de mapas colaborativos

    Esta funcionalidad permite consultar el listado de mapas colaborativos disponibles en el sistema. Esta funcionalidad permite:

    • consultar, en la página principal del sistema, el listado de mapas públicos (colaborativos o no) desarrollados por ciudadanos
    • cuando un usuario se autentica en el sistema, consultar los mapas que ha desarrollado

    Sobre el listado de mapas que aparece en la pantalla principal, se pueden realizar diferentes filtros:

    • ver todos los mapas, opción por defecto al entrar en la página
    • seleccionar sólo los mapas colaborativos, usando la opción “Mapas en los que puedo colaborar co-creando”
    • buscar mapas por el título del mismo, usando el cuadro de búsqueda
    • filtrar mapas por categorías, si debajo del cuadro de búsqueda hay alguna categoría mostrada

    Este listado de mapas de la pantalla principal, muestra un listado de mapas, tres por cada línea, donde cada mapa está representado como una ficha que muestra:

    • el nombre del mapa, pulsando sobre el título del mapa, se accede a la página de detalle del mapa
    • la fecha de la última actualización del mapa
    • un icono para compartir la información básica del mapa, título y URL del mapa, en diferentes redes sociales solicitando la colaboración, co-creación de otros o informando de un mapa cerrado.

    Además del listado de la página principal, existe otro tipo de listado de mapas. Este listado es accesible para usuarios autenticados en la plataforma y se accede pulsando en la página principal en la opción “Mis Mapas”. Mediante esta opción, se muestra el listado de mapas asociadas al usuario con una estructura similar al listado de la página principal pero sin la opción de compartir la ficha del mapa colaborativo en las redes sociales.

    3.1.1 Posibles mejoras funcionales

    Una vez indicadas las funcionalidades disponibles en el listado de mapas, se pasa a enumerar nuevas funcionalidades que podrían añadirse al sistema actual:

    • nuevas opciones de filtrado: actualmente se puede filtrar por mapas colaborativos que permiten la co-creación, por categoría, si existe alguna categoría disponible del cuadro de búsqueda, pero no existe un desplegable que permite elegir entre todas la categorías disponibles para los mapas colaborativos. Estas categorías, listadas en las pantallas de generación o modificación de mapas, son: cultura, deporte, educación, hostelería, ocio y turismo.
    • no existe opción de ordenación del listado de mapas, bien por nombre, por fecha de actualización, etc.
    • posibilidad de seleccionar el número de mapas a mostrar en el listado
    • una curiosidad que se ha detectado es que, si bien en la pantalla de listado general cada mapa tiene la opción de compartir en redes sociales, cuando se selecciona el listado de mapas de un usuario en concreto, no se muestra dicha opción.

    3.2 Creación de mapas colaborativos

    Esta funcionalidad permite a los usuarios/as de la plataforma de Gobierno Abierto generar mapas colaborativos. Cuando se genera un mapa colaborativo, se debe introducir los siguientes elementos:

    • nombre del mapa
    • tipo de mapa: define la visibilidad del mapa:
      • publicado: visible para todos los usuarios pero sólo puede ser modificado por el usuario que lo generó
      • oculto: visible sólo para el usuario que lo generó
      • colaborativo: visible para todos los usuarios y facilita la co-creación de los elementos por todo los usuarios de la plataforma de Gobierno Abierto
    • Categoría: permite elegir la categoría asociada al mapa entre seis opciones, cultura, deporte, educación, hostelería, ocio y turismo
    • Icono: permite elegir el icono asociado al mapa que se mostrará en la ficha del listado de mapas de la página principal
    • Elementos geométricos en el mapa: existen diferentes elementos geométricos que pueden añadirse al mapa. Existen cuatro tipos de elementos, estos son:
      • Punto geométrico: un único punto geométrico al que se le puede asociar un nombre, una descripción y el tipo de icono asociado al punto
      • Poli línea: se define la línea de puntos geométricos y se le puede asociar una nombre, una descripción y se puede decidir el color de la línea y su opacidad
      • Polígono: se definen los puntos que forman el polígono y se le puede asociar un nombre, una descripción así como el color y la opacidad del borde y del relleno del mismo
      • Rectángulo: se le puede asociar un nombre, una descripción así como el color y la opacidad del borde y del relleno del mismo

    Ésta es la información necesaria para generar un mapa colaborativo, que permite la co-creación entre diferentes personas en el sistema. No se puede añadir más información. Como se puede ver, es un proceso muy sencillo pero efectivo.

    3.2.1 Posibles mejoras funcionales

    Una vez indicadas las funcionalidades disponibles en la creación de mapas, se pasa a enumerar nuevas funcionalidades que podrían añadirse al sistema actual:

    • Posibilidad de añadir una descripción asociada al mapa que permita una mayor comprensión del contenido del mismo. Puede que el título del mapa no sea suficientemente descriptivo o que se necesite más información para comprender el contenido del mismo
    • Posibilidad de asociar URLs al mapa para completar la información
    • Posibilidad de asociar a la ficha descriptiva del punto una imagen.
    • Posibilidad que los usuarios puedan añadir comentarios a la geometría
    • Posibilidad de crear un mapa colaborativo y pintar sobre el información asociada a un conjunto de datos en formatos abiertos.

    3.3 Consulta de un mapa colaborativo

    Esta funcionalidad permite consultar los mapas colaborativos disponibles en el sistema. Cuando se selecciona un mapa, la información que se muestra en pantalla es la siguiente:

    • Título del mapa
    • El mapa geográfico con todos los elementos definidos en él. En el mapa se pintan todos los elementos geográficos, permitiendo pinchar en cada uno de ellos para consultar el nombre y la descripción asociada a cada elemento geográfico
    • Una barra para compartir el mapa geográfico. Las opciones que se ofrecen son:
      • Un código HTML para embeber el mapa en otra página HTML
      • En formato XML con toda la información del mapa
      • En formato JSON con toda la información del mapa

    Además de mostrar la información del mapa, en la página de detalle de un mapa se puede mostrar el botón de “Editar” mapa. Este botón está disponible si el mapa a consultar es de tipo colaborativo o si un usuario está consultando alguno de los mapas que ha creado en el sistema. Si se selecciona esta opción, se pasará al modo de edición de mapas.

    3.3.1 Posibles mejoras funcionales

    Una vez indicadas las funcionalidades disponibles en el detalle de mapas, se pasa a enumerar nuevas funcionalidades que podrían añadirse al sistema actual:

    • Mostrar la categoría asociada al mapa
    • Mostrar el usuario/a que ha generado el mapa
    • Mostrar la fecha de actualización del mapa
    • Añadir las opciones de compartir en redes sociales que hay en las fichas de los mapas en el listado de mapas de la pantalla principal
    • Posibilidad de cargar una capa de información asociada a un conjunto de datos en formatos abiertos, reutilización de nuestros conjuntos de datos. Tal vez un botón asociado a nuestro catálogo de datos abiertos….

    3.4 Modificación/Eliminación de mapas colaborativos

    Esta funcionalidad permite modificar o eliminar mapas colaborativos creados por los usuarios/as del sistema. La opción de edición sólo está disponible para los mapas de tipo colaborativo o mapas propios de un usuario y pueden realizarla sólo los usuarios autenticados en la plataforma de Gobierno Abierto. Las opciones de edición de un mapa dependen del usuario/a y del tipo de mapa que se esté consultando. Según estas opciones, las opciones de modificación son:

    • Si un usuario/a quiere editar un mapa propio, puede modificar todos los elementos del mapa, a saber:
      • Nombre
      • Tipo
      • Categoría
      • Icono
      • Elementos geográficos del mapa
    • Además, tienen disponibles dos opciones más de edición:
      • Duplicar: para crear una réplica del mapa actual
      • Eliminar: para borrar el mapa actual
    • Si un usuario/a intenta modificar un mapa de tipo colaborativo del que no es el creador, sólo puede modificar los elementos geográficos del mapa

    3.4.1 Posibles mejoras funcionales

    Para este apartado no se han identificado nuevas funcionalidades que añadir. Sólo deberían añadirse si, por ejemplo, se aceptasen las sugerencias hechas en el apartado de creación de mapas, como por ejemplo una descripción asociada al mapa.

    • Revisar la idea de poder cargar capas de información asociadas al catálogo de datos abiertos...como hemos comentado en apartados anteriores

    4. Funcionalidades a nivel general

    Además de las nuevas funcionalidades sugeridas anteriormente, existen otras funcionalidades que podrían ser interesantes para el sistema de mapas colaborativos. Estas nuevas funcionalidades son:

    • Elección de un grupo de usuarios para que puedan participar, colaborar en la co-creación de los mismos.
    • Realización de comentarios sobre cada punto de interés .
    • Realización de comentarios generales sobre los mapas.
    • Implementar un sistema de valoración de utilidad/interés de los mapas para que lo usuarios voten. Podría ser un sistema sencillo en plan “Si/no” “Pulgar arriba/pulgar abajo”
    • Facilitar la edición de capas de información asociadas al catálogo de datos abiertos….

    Descripción Técnica

    Introducción

    Los Mapas Colaborativos son un instrumento de participación, colaboración y co-creación que facilita a los diferentes agentes (empresas, organizaciones ciudadanas, emprendedores, personas, etc.) acceder y utilizar los datos abiertos espaciales de Zaragoza para conocer su barrio y realizar propuestas para su mejora.

    Toda la información sobre este módulo está en el siguiente enlace . Aquí puede consultar:

    A continuación se indican las instrucciones necesarias para la descarga y configuración del módulo de "Mapas Colaborativos" del proyecto OpenCity-Ext desarrollado por el Ayuntamiento de Zaragoza.

    Manual de instalación

    Primero, hay que realizar los siguientes pasos del manual general:

    • instalar y comprobar versiones software
    • configurar la base de datos
    • clonar repositorios:
      • mapas colaborativos
      • assets
      • fragmentos
      • servicio
      • portal
      • i18n (internalización)
    • instalación de librerías en repositorio local
    • configuración servidor
    • configuración del módulo
    • prueba del módulo
    • otras configuraciones

    Instalar y comprobar versiones software

    Las versiones mínimas del software son:

    • Java 1.8
    • Maven >= 3.0.5
    • Oracle 11
    • Eclipse 2019-03 (recomendada)

    Una vez instalado Eclipse, hay que instalar maven integration for eclipse desde la siguiente url http://download.eclipse.org/releases/indigo/ y seleccionando la opción "Generarl Purpose -> m2e"

    Configurar la base de datos

    El sistema de mapas colaborativos utiliza un usuario general para las bases de datos. Este ususario permite la gestión de los datos de usuarios de la plataforma y los datos de los mapas colaborativos.

    Por lo tanto, hay que configurar una única base de datos para que el modulo funcione correctamente. Para eso hay que realizar los siguientes pasos: generar el usuario en Oracle y otorgarle privilegios ejecutar los scripts de generación de las bases de datos * configurar las bases de datos en el proyecto opencity.ext.web

    A continuación se detallan los pasos a seguir en cada uno de ellos.

    Generar los usuarios en Oracle

    Como se indica en el apartado anterior, hay que generar un usuario para la base de datos. El usuario se debe generar en Oracle ya que el sistema de mapas colaborativos utiliza Oracle.

    Se aconseja que el nombre del usuario sea "general" ya que es el que se utiliza en el core de la aplicación. A continuación se muestran los comandos que deben utilizarse en la consola de SQL*Plus, si se utiliza dicha consola para realizar este paso, o si se realiza desde SQLDeveloper o similar deberemos utiizar el usuario de Sistema (normalmente SYS) con privilegio para crear esquemas.

    Para generar el usuario general se utilizarían los comandos de abajo,

    CREATE USER general IDENTIFIED BY "password";
    GRANT ALL PRIVILEGES TO general;
    

    o bien, si se quieren especificar los tablespaces a asignar al usuario y el tamaño que ocuparán estos en base ed datos se puede ejecutar el script 0.schema_general.sql disponible en la carpeta scripts-bbdd/ .

    Ejecutar los scripts de generación de las bases de datos

    El siguiente paso es crear las tablas y cargar los datos de prueba disponibles para este módulo. Los scripts que se van a importar están disponibles en la carpeta scripts-bbdd/ .

    El orden de ejecución es el siguiente:

    • 1.db.sql
    • 2.users_db.sql
    • 3.users_data.sql
    • 4.extra_users.sql
    • 5.db.sql
    • 6.data.sql
    • 7.package.sql
    • 8.package_body.sql
    • extra_users.sql
    • test_data.sql

    Si ejecutamos los scripts por primera vez no deberíamos obtener errores en la ejecución, lo que nos garantiza que la estuctura y datos son corectas.

    Clonar repositorios:

    A continuación se listan los repositorios a clonar:

    • mapas colaborativos: https://<tuUsuario>@bitbucket.org/zaragoza/mapas-colaborativos.git (Puedes encontrar la url real en la cabecera de la página al acceder al proyecto desde bitbucket.org)

    Uso de Internacionalización i18n

    El proyecto utiliza la internacionalización de mensajes, la configuración de esta funcionalidad está definida en el proyecto ext.core.web para el cual debe existir un fichero para cada idioma, por ejemplo, messages_es.properties para el castellano.

    En mapas colaborativos los ficheros se encuentran en la ruta /ext.web.mapacolaborativo/src/main/webapp/i18n/

        prueba=texto en castellano
        prueba2=otro texto en castellano
    

    Nota: El contenido de estos ficheros se actualiza según el parámetro cacheSeconds en al configuración del modulo ext.core.web, concretamente en el archivo /ext.core.web/src/main/java/org/sede/config/WebConfig.java , si se desea cambiar la configuración será necesario importar el proyecto est.core.web a nuestro IDE de desarrollo, y una vez modificada, realizar un mvn install sobre el mismo para actualizar las librerías del repositorio local de Maven .m2 y hacer un (boton derecho sobre el proyecto ext.web.mapacolaborativo en Eclipse) para pulsar sobre Manven/Update Project y actualizar así el nuevo .jar generado en nuestro proyecto de mapas.

    Instalación de librerías en repositorio local:

    Existen librerías que no están disponibles en repositorios maven, son las que se encuentran en la carpeta librerias y se deben instalar en el repositorio maven, para ello, nos situamos en el directorio librerias/ y usando un terminal ejecutamos las siguientes líneas:

    mvn install:install-file -DgroupId=org.zaragoza -DartifactId=opencity.ext.core.web -Dversion=0.0.1 -Dpackaging=jar -Dfile=opencity.ext.core-web-0.0.1.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=org.zaragoza -DartifactId=opencity.ext.core -Dversion=0.0.1 -Dpackaging=jar -Dfile=opencity.ext.core-0.0.1.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=org.zaragoza -DartifactId=opencity.ext.core.test -Dversion=0.0.1 -Dpackaging=jar -Dfile=opencity.ext.core.test-0.0.1.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc5 -Dversion=11.2.0 -Dpackaging=jar -Dfile=ojdbc5.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=virtuoso.jena.driver -DartifactId=virtjdbc -Dversion=3 -Dpackaging=jar -Dfile=virtjdbc.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=virtuoso.jena -DartifactId=virt_jena -Dversion=3 -Dpackaging=jar -Dfile=virt_jena.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=geoapi -Dversion=2.0 -Dpackaging=jar -Dfile=geoapi.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=geoapi-nogenerics -Dversion=2.1-M2 -Dpackaging=jar -Dfile=geoapi-nogenerics.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=deegree2-pre -Dversion=2 -Dpackaging=jar -Dfile=deegree2-pre.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=gsl-coordinate-transformation -Dversion=1.0-jdk15 -Dpackaging=jar -Dfile=gsl-coordinate-transformation.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=gt2-epsg-wkt -Dversion=2.3.5 -Dpackaging=jar -Dfile=gt2-epsg-wkt.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=gt2-referencing -Dversion=2.3.0 -Dpackaging=jar -Dfile=gt2-referencing.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=iaaa_csct -Dversion=1.6.2 -Dpackaging=jar -Dfile=iaaa_csct.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=j3dcore -Dversion=1.3.0 -Dpackaging=jar -Dfile=j3dcore.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=j3dutils -Dversion=1.3.0 -Dpackaging=jar -Dfile=j3dutils.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=jai_codec -Dversion=1.1.1_01 -Dpackaging=jar -Dfile=jai_codec.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=jai_core -Dversion=1.1.1_01 -Dpackaging=jar -Dfile=jai_core.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=jGridShiftApi -Dversion=2.0 -Dpackaging=jar -Dfile=jGridShiftApi.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=jsr108 -Dversion=0.01 -Dpackaging=jar -Dfile=jsr108.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=jts -Dversion=1.6 -Dpackaging=jar -Dfile=jts.jar -DgeneratePom=true
    mvn install:install-file -DgroupId=idezar -DartifactId=vecmath -Dversion=1.3.1 -Dpackaging=jar -Dfile=vecmath.jar -DgeneratePom=true
    

    Configuración del contenido estático en Apache

    Una vez clonado el proyecto, se habran generado una sertie de carpetas en nuestro repositorio local, en la ruta \opencity.ext.web\src\main\webapp encontramos el contenido estático de la aplicación, el cual, para mostrarse correctamente una vez desplegada debe servirse mediante un servidor Apache haciendo uso de su funcionalidad ProxyPass. Para ello, una vez instalado Apache, creamos una carpeta llamada cont dentro del directorio de publicacion httdocs y dentro de esta colocamos el contenido estático seguiendo la siguiente estructura:

    cont
    |--- assets (se coje el contenido de la carpeta opencity.ext.web\src\main\webapp\assets)
    cont/vistas
    |--- fragmentos (se coje el contenido de la carpeta opencity.ext.web\src\main\webapp\fragmentos)
    |--- servicio (se coje el contenido de la carpeta opencity.ext.web\src\main\webapp\servicio)
    

    Una vez realizado este paso, hay que configurar un servidor apache para que pueda servir contenidos estáticos habilitando un proxy inverso e indicando su configuración. En archivo de configuración de Apache conf/httpd.conf (en Windows), primero habilitamos los modulos descomentando las siguientes líneas:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    

    Al final del mismo fichero de configuración añadimos las siguientes lineas:

    ProxyPass /opencityext http://localhost:7777/opencityext
    ProxyPassReverse /opencityext http://localhost:7777/opencityext
    AddDefaultCharset utf-8
    

    Además, añadimos la definicion del directorio y el Alias en el mismo archivo de configuración de apache:

    Alias /cont ${SRVROOT}/htdocs/cont  
    <Directory  ${SRVROOT}/htdocs/cont>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    

    Configuración del módulo

    Lo primero que debemos hacer es ejecutar:

    mvn clean install
    

    dentro del proyecto opencity.ext.mapacolaborativo

    Una vez instalado hay que modificar/crear los siguientes ficheros de configuración en el modulo web:

    /ext.web.mapacolaborativo/src/main/resources/META-INF/context.xml /ext.web.mapacolaborativo/src/main/resources/application.properties

    Para obtener un ejemplo/plantilla de estos archivos de configuración podemos consultar o descargar el proyecto ../zaragoza/shared-resources.git

    El contenido del fichero context.xml contiene los datos de conexión a la base de datos y debe ser el siguiente:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
    <Resource name="jdbc/WebGeneralDS" auth="Container"
                  type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
                  url="jdbc:oracle:thin:@localhost:<puerto>/<SID>"
                  username="general" password="<pass>" maxActive="20" maxIdle="10"
                  maxWait="-1"/>
    </Context>
    

    sustituyendo puerto, SID y pass por los datos de nuestra configuración. Ejemplo a la hora de realizar este documento:

                  url="jdbc:oracle:thin:@localhost:1521/orcl"
                  username="general" password="general" maxActive="20" maxIdle="10"
    

    El contenido del fichero application.properties debe ser el siguiente:

    contexto=/opencityext
    path=localhost
    thymeleaf.view=<ruta-opencity.ext.web>/src/main/webapp/vistas/
    thymeleaf.strictMode=false
    path.i18n=<ruta-opencity.ext.web>/src/main/webapp/i18n
    datasource.prefix=java:/comp/env/
    path.solr=www.zaragoza.es
    path.allowed=localhost:7777,localhost,localhost:9999,localhost:7001
    solr.usuario=
    solr.password=
    proxy.host=
    proxy.port=
    mail.server=
    mail.user=
    mail.pass=
    entorno=local
    path.cont=http://localhost:<apache-port>/cont
    path.cont.external=http://localhost:<apache-port>/cont/
    path.cont.disk=<ruta-apache-httdocs>/cont
    path.vistas.disk=<ruta-apache-httdocs>/cont/vistas
    path.aplicaciones.disk=<ruta-apache-httdocs>/cont/aplicaciones/
    virtuoso.sparql=http://datos.zaragoza.es/sparql
    virtuoso.user=
    virtuoso.pass=
    virtuoso.connection=
    sms.server=
    

    Sustituyendo el contenido de ruta-opencity.ext.web y ruta-apache-httdocs por las rutas relativas/absolutas a cada carpeta.

    Esta definición se puede realizar para cada uno de los entornos en resources, resources-dev, resources-prod y resources-test.

    Prueba del módulo

    Pruebas unitarias

    Para una prueba rápida del módulo, se pueden ejecutar las pruebas unitarias que hay en el proyecto opencity.ext.mapacolaborativo. Para poder ejecutar la prueba, hay que configurar los siguientes campos en el fichero opencity.ext.mapacolaborativo/src/test/resources/test.properties:

    • conexion.jdbc para indicar la conexión con la base de datos
    • db.general.pass para indicar la contraseña del usuario general creado anteriormente

    El resto de campos del fichero no deberían modificarse.

    Una vez modificado, se pueden lanzar las pruebas unitarias seleccionando la clase opencity.ext.mapacolaborativo/src/test/org/sede/servicio/MapaColaborativoApiTest, pulsar el botón derecho y seleccionar Run as --> JUnitTest

    Pruebas módulo web

    Para lanzar el módulo, hay que ejecutar la siguiente instrucción desde la carpeta /opencity.ext.web:

    $ mvn -Dmaven.tomcat.port=7777 tomcat7:run
    

    Para probar que funciona correctamente acceder a:

    http://localhost:7777/opencityext/servicio/mapa-colaborativo/
    

    Puede ser que haya elementos que no se muestren correctamente por lo que se aconseja que mejor se utilice:

    http://localhost:<apache-port>/opencityext/servicio/mapa-colaborativo/
    

    sustituyendo apache-port por el puerto habilitado en Apache mediante la intrucción Listen <puerto> utilizada en el archivo de configuración httpd.conf (Windows).

    Ejemplos: Usando Listen 80 en httpd.conf: http://localhost/opencityext/servicio/mapa-colaborativo/ Usando Listen 8090 en httpd.conf: http://localhost:8090/opencityext/servicio/mapa-colaborativo/

    siempre asegurándonos de que el servidor Apache está arrancado. httpd -k start

    Otras configuraciones

    Con los pasos indicados anteriormente, ya podría trabajar con el módulo sin problemas. No obstante, existentes más configuraciones que pueden realizarse, las cuales se indican a continuación.

    Trabajar con proxy

    Configurar maven en $HOME/.m2/ crear el fichero settings.xml

    <settings>
      <proxies>
        <proxy>
          <id>http_proxy</id>
          <active>true</active>
          <protocol>http</protocol>
          <host>proxy.red.zaragoza.es</host>
          <port>8080</port>
        </proxy>
        <proxy>
          <id>https_proxy</id>
          <active>true</active>
          <protocol>https</protocol>
          <host>proxy.red.zaragoza.es</host>
          <port>8080</port>
        </proxy>
     </proxies>
    </settings>
    

    $ mvn -Dmaven.tomcat.port=8888 -Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port> tomcat7:run

    Modificar la caché

    Por defecto se almacenan en caché todas las peticiones GET para evitarlo, se debe anotar el método del controlador que no se quiera almacenar en caché con la anotación @NoCache, la configuración de la caché se encuentra en el fichero src/main/resources/ehcache.xml.

    Por otro lado se puede utilizar la caché propia de spring: @Cache(Cache.DURACION_1MIN) el elemento se cachea durante 1 minuto @Cache(Cache.DURACION_5MIN) el elemento se cachea durante 5 minutos @Cache(Cache.DURACION_30MIN) el elemento se cachea durante 30 minutos @Cache(Cache.DURACION_1DIA) el elemento se cachea durante 1 día

Responsable

Enlaces de interésSoluciones Relacionadas