SIMMapXML


Interfaz WEB de GeoGranada: "simmapXML.exe"


SimMapXML.exe es la interfaz Web de la infraestructura espacial de datos GeoGranada implementada como un CGI.

SIMMAPXML.EXE está diseñado para la obtención de información geográfica del Servicio Municipal de Mapas en formato XML. Dispone de una serie de comandos que permite acceder a la funcionalidad geográfica:


La funcionalidad está publicada como una lista de comandos que se invocan mediante URLs en cuyo query se determinan las características de la acción a ejecutar mediante pares "parámetro=valor"

Con SIMMAPXML.EXE es posible desarrollar una aplicación interactiva utilizando la técnica de desarrollo AJAX (Asynchronous JavaScript And XML). Un ejemplo de aplicación es el
Visor WEB GeoGranada.

Los comando tienen parámetros obligatorios (indicados entre signos de menor y mayor  "<obligatorio>") y opcionales (indicados entre llaves "{opcional}"). Vea un
ejemplo respuesta en XML de una petición o pulse sobre el mapa para obtener un ejemplo de respuesta en PNG

Ocultar detalles para 1.- Invocación del Servicio WEB1.- Invocación del Servicio WEB

1.- Invocación del Servicio WEB


El servicio SIMMAPXML.EXE se invoca con la dirección URL:
http://geoweb.granada.org/cgi-bin/produccion/simmapXML.exe/COMANDO

El servicio SIMMAPXML.EXE funciona como un servidor con estado en el que tras iniciar una sesión, el cliente hace peticiones reenviando al servidor su identificador de sesión para que este reconozca las propiedades del mapa (o estado) que posee el cliente.

El servicio SIMMAPXML.EXE tiene varios comandos que se describen a continuación. Todos los comandos requieren al menos de la introducción de un parámetro (el idmapasesion o identificador de sesión) pues su no introducción devolverá el resultado parametro=none que es el resultado por defecto de los comandos cuando no existe conexión activa o cuando no se ha podido responder a la petición.

Si el servicio SIMMAPXML.EXE se invocara sin comando o un comando desconocido devolverá esta página de explicación del servicio WEB.

http://geoweb.granada.org/cgi-bin/produccion/simmapXML.exe/COMANDODESCONOCIDO

<?xml version="1.0" encoding="ISO-8859-1" ?>
<respuesta tipo="COMANDODESCONOCIDO">
<error>El comando no es válido.</error>
<comandos descripcion="lista de comandos válidos">
<comando>ABRESESIONMAPA</comando>
<comando>GETLISTACAPAS</comando>
<comando>SETMONITOR</comando>
<comando>SETMAPABORDE</comando>
<comando>GETULTIMOMAPA</comando>
<comando>GETMAPAESTATICO</comando>
<comando>GETMAPAAAVV</comando>
<comando>GETMAPACALLE</comando>
<comando>GETMAPAPORTAL</comando>
<comando>GETZOOMESTADO</comando>
<comando>ZOOMTODO</comando>
<comando>ZOOM</comando>
<comando>ZOOMANTERIOR</comando>
<comando>ZOOMSIGUIENTE</comando>
<comando>PANNORTE</comando>
<comando>PANSUR</comando>
<comando>PANOESTE</comando>
<comando>PANESTE</comando>
<comando>GETCAPASDEBUSQUEDA</comando>
<comando>BUSCARTOPONIMOSPORVALOR</comando>
<comando>BUSCARTOPONIMOPORXY</comando>
<comando>BUSCARENTIDADPORTOPONIMO</comando>
<comando>BUSCARMAPAPORTOPONIMO</comando>
<comando>BUSCARMAPAPORXY</comando>
<comando>BUSCARENTIDADESPORXY</comando>
<comando>COMPROBARENTIDADESPORXY</comando>
<comando>ENVIARMENSAJE</comando>
</comandos>
</respuesta>

Las sesiones permanecen abiertas mientras no haya transcurrido más de un cierto tiempo entre la última petición de mapa y la actual. Inicialmente el timeout es de 59 min. Pero puede alterarse configurándose en el fichero INI del Gestor de Sesiones.

    [SERVICIO DE MAPAS]
    TIEMPO_DESCONEXION_EN_MINUTOS=59


Ocultar detalles para 2.- Parámetros de las peticiones al Servicio WEB2.- Parámetros de las peticiones al Servicio WEB

Parámetros de las peticiones al Servicio WEB


El servicio SIMMAPXML.EXE cuando recibe una petición busca los parámetros de la misma en el QUERY de una URL como pares de Parámetro=Valor separados por el carácter ampersand ‘&’

    ./simmapxml.exe/COMANDO?parametro1=valor1&parametro2=valor2&parametro3=valor3&…

    En las peticiones, los parámetros y valores son independientes de que se invoquen con minúsculas o mayúsculas. En la evaluación de los parámetros el Servicio WEB hace una conversión a mayúsculas para hacer la petición al Gestor de Sesiones.

    Cuando valor sea una lista, los elementos de la lista se encuentran separados por el carácter ‘$’ (dólar). Ejemplo:

    [listatemas=001- Callejero$002- Parcelario$003- Seccionado Censal$004- Planeamiento$...]

    equivale a:

    listatemas= 001- Callejero (elemento 0 de la lista)
          002- Parcelario (elemento 1 de la lista)
          003- Seccionado Censal (elemento 2 de la lista)
          004- Planeamiento (elemento 3 de la lista)
          . . .
    Caracteres Especiales en las Peticiones


    En las peticiones y respuestas se utilizan los siguientes caracteres especiales:

      ‘$’ carácter dólar: cuando el valor de un parámetro es una lista, el carácter ‘$’ separa los elementos de la lista.
      ‘.’ carácter punto: cuando el valor de una coordenada en UTM posee el carácter ‘.’ separa la parte entera de la decimal. En las respuestas, las coordenadas se formatean con éste carácter.
      ‘,’ carácter coma: cuando el valor de una coordenada en UTM posee el carácter ‘,’ separa la parte entera de la decimal.


    Ocultar detalles para 3.- Respuestas del Servicio WEB3.- Respuestas del Servicio WEB

    Respuestas del Servicio WEB


    Los comandos del servicio SIMMAPXML responden dos tipos de información:
    1.- La tipo texto: en la CONTENT de la petición REQUEST
    2.- La tipo mapa: como Imagen PNG o JPG

    Respuestas tipo Texto:

    Todos los comandos de SIMMAPXML.EXE excepto los de tipo mapa (el comando GETULTIMOMAPA, GETMAPACALLE, GETMAPAAAVV, y el resto que comienzan por C'GETMAPA...') devuelven la información tipo texto en la CONTENT de la petición (ContentType='text/xml; charset=ISO-8859-1'):

      <?xml version="1.0" encoding="ISO-8859-1" ?>
      <respuesta tipo="COMANDO INVOCADO">
      <error>none</error>
      <parámetro1>valor1</parámetro1>
      <parámetro2>valor2</parámetro2>
      . . .
      <parámetroN>valorN</parámetroN>
      </respuesta>

    El primer parámetro que se recibe siempre es el parámetro error. Cuando la respuesta es correcta la etiqueta de <error></error> se rellena con el valor none. En cambio, cuando la petición no se ha podido responder adecuadamente el resultado es:
      <?xml version="1.0" encoding="ISO-8859-1" ?>
      <respuesta tipo="COMANDO INVOCADO">
      <error>código de error</error>
      </respuesta>

    Por ejemplo, el comando GETZOOMESTADO devuelve la CONTENT:
      <?xml version="1.0" encoding="ISO-8859-1" ?>
      <respuesta tipo="GETZOOMESTADO">
      <error>none</error>
      <zoomcurrent left="445643.23" right="445723.765" top="4117984" bottom="4117743.65" />
      <zoomestado>
      <zoomextent activo="True" />
      <zoomin activo="True" />
      <zoomout activo="False" />
      <pantop activo="True" />
      <panbottom activo="True" />
      <panleft activo="True" />
      <panright activo="True" />
      <zoomprevious activo="True" />
      <zoomnext activo="False" />
      </zoomestado>
      <escala>1:1.243</escala>
      </respuesta>

    En caso de error, devuelve la CONTENT:
      <?xml version="1.0" encoding="ISO-8859-1" ?>
      <respuesta tipo="GETZOOMESTADO">
      <error>código de error</error>
      </respuesta>

    El tratamiento de las listas en XML se realiza en forma de TAGs anidados que son descritos en cada comando concreto del servicio WEB. En las respuestas, los nombres de los TAGs se devuelven en minúsculas, y los valores se devuelven manteniendo el ‘case sensitive’ del Servicio de Mapas GeoGranada. Ejemplos de listas son:
      <temas>
      <tema>Callejero Municipal</tema>
      <tema>001- Callejero</tema>
      <tema>002- Parcelario</tema>
      </temas>
      <zoomcurrent left="446889.72" right="447180.27" top="4115401.77" bottom="4115111.22" />

    Respuestas tipo Mapa:

    Las respuestas tipo Mapa es una imagen PNG con el mapa (o JPG cuando se especifica el parámetro {formato=JPG}) y funcionan asociando un fichero de imagen a la CONTENT (ContentType='image/png' o ContentType='image/jpeg') de la petición REQUEST.

    Las respuestas de mapa se agrupan en mapas con estado, porque se puede repreguntar al mapa sus metadatos (o características descriptivas del mismo como la extensión espacial, el tema, las capas visualizadas, la historia de encuadres -zooms y pans-) y mapas sin estado.

    Los mapas con estado se construyen mediante el mecanismo de crear una sesión (ABRESESIONMAPA) y mantener el número de sesión en todas las preguntas. Una vez obeLa respuesta tipo mapa siempre va precedida de una petición con respuesta tipo texto que demanda al Servicio WEB generar la imagen de mapa que se solicitará posteriormente con el comando GETULTIMOMAPA. Cuando la petición que demanda la construcción del mapa recibe un resultado sin error (<error>none</error>) el mapa se ha generado correctamente para la sesión actual y puede solicitarse con el comando GETULTIMOMAPA.

    Los comandos que generan mapa son los siguientes:
          o ZOOMTODO
          o ZOOM
          o ZOOMANTERIOR
          o ZOOMSIGUIENTE
          o PANNORTE
          o PANSUR
          o PANOESTE
          o PANESTE
          o BUSCARMAPAPORVALOR
          o INFORMAPAPORVALOR


    Ocultar detalles para 4.- Petición de ayuda: sintaxis y significado de los comandos4.- Petición de ayuda: sintaxis y significado de los comandos

    Petición de ayuda: sintaxis y significado de los comandos


    Cuando se invoca al servicio SIMMAPXML.EXE sin comando o un comando desconocido devolverá un mensaje de error y un listado de los comandos válidos.

    http://geoweb.granada.org/cgi-bin/produccion/simmapXML.exe/COMANDO


    Si deseamos conocer la sintaxis de un comando concreto y una breve descripción de su funcionalidad debemos invocarlo dando valor al parámetro ayuda=”cualquier valor” siendo =”cualquier valor” una cadena de texto distinta del carácter “ “. Por ejemplo:

    http://geoweb.granada.org/cgi-bin/produccion/simmapXML.exe/abresesionmapa?ayuda=si

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <respuesta tipo="ABRESESIONMAPA">
    <error>none</error>
    <ayuda>

      <sintaxis>ABRESESIONMAPA {width} {height} {tema} {contexto} {(monitorsize) (screenwidth) (screenheight)} {heredasesion}</sintaxis>
      <descripcion>Inicia una sesión del servicio de mapas con un tema. Recibe información de los temas disponibles y parámetros para desplegar la interfaz de usuario.</descripcion>
      <urldeayuda>https://mail.granada.org/idegeogr.nsf/wwtod/7E53A4713BE53C79C1257E61002D07AF</urldeayuda>
    </ayuda>
    </respuesta>

    Los parámetros entre paréntesis (parámetro) son obligatorios, los parámetros entre llaves {parámetro} son opcionales.



    -------------------------------------- 0 --------------------------------------

    Secuenciación de las peticiones al Servicio WEB ligadas a una sesión


    El Servicio WEB permite múltiples peticiones asíncronas sobre una misma sesión de trabajo. Cuando la petición solicitada requiera generar un nuevo mapa (comandos ZOOMTODO, ZOOM, ZOOMANTERIOR, ZOOMSIGUIENTE, PANNORTE, PANSUR, PANOESTE, PANESTE, BUSCARMAPAPORVALOR, INFORMAPAPORVALOR) se debe esperar a recibir la respuesta de texto antes de invocar una nueva petición ya que el Gestor de Sesiones guarda la información ligada al mapa anterior.

    La respuesta de peticiones al Gestor de Sesiones que no requieran realizar a su vez peticiones al Servicio de Mapas GeoGranada requiere de tiempos de proceso del orden de centésimas de segundo y la generación de mapas tiempos del orden de segundos. Debido a los diferentes tiempos de proceso y por no estar serializado el acceso a una sesión, si realizamos múltiples peticiones asíncronas a la misma sesión hay que tener en cuenta que es posible que el Gestor de Sesiones nos devuelva información sobre el mapa antiguo (información que ya posee la sesión y su respuesta es del orden de centésimas de segundo) y no del nuevo mapa que está generando otra petición asíncrona (tiempo de respuesta del orden de segundos).

    -------------------------------------- 0 --------------------------------------

    Ejemplo de secuencias ligadas a una sesión


    Los comandos ABRESESIONMAPA, GETLISTACAPAS, ZOOMTODO, etc. deben iniciarse con el path: << http://geoweb.granada.org/cgi-bin/produccion/simmapxml.exe/ >>


    1.- Iniciamos una sesión. El "IDmapasesion" lo arrastraremos a todos los comandos de simmapXML.exe que mantienen el estado.



    2.- Pedimos crear un mapa a la sesión de "IDmapasesion" obtenida anteriormente.


    3.- Solicitamos el último mapa creado en la sesión "IDmapasesion"



    4.- Preguntamos las capas a las que podemos preguntar datos.


    5.- Demandamos las "CALLES" que tienen en su nombre los valores "PERIODISTA FERNANDO"


    6.- Demandamos las propiedades de la entidad de la capa "CALLES" y valor "CALLE PERIODISTA FERNANDO GOMEZ DE LA CRUZ"


    7.- Hacemos un mapa ajustado a la extensión de la calle "CALLE PERIODISTA FERNANDO GOMEZ DE LA CRUZ"


    8.- Solicitamos el último mapa creado en la sesión "IDmapasesion"



    ©Ayto.Granada. 1998-2025