Web Map Service

De WikiSalud
(Diferencias entre revisiones)
Saltar a: navegación, buscar
m (WMS MINSAL)
(Pueba con la petición GetMap)

Revisión de 14:17 9 jun 2016

La siguiente guía explica cómo crear un Web Map Service (WMS) con UMN Mapserve.

Contenido

Introducción

Los web map service (WMS) son útiles para poder intercambiar mapas actualizados entre servidores de instituciones con sólo una llamada a un URL. Los WMS, en el caso de configurarse con UMN Mapserver son programas Cgi que interactúan con el cliente vía el protocolo HTTP.


En el caso del sistema Hsgeo de Hospitales Seguros del MINSAL se desea superponer a los establecimientos de salud, las diferentes amenazas de origen socio-natural como inundaciones, deslizamientos, erupción volcánica, tsunamis, etc. En este caso, la información geográfica relacionada a estas amenazas es generada y actualizada en el Ministerio de Medio Ambiente (MARN), por lo que requiere únicamente de los WMS de cada amenaza. Cada vez que el MARN actualice dicha información, ésta aparecerá ya actualizada en el sistema Hsgeo. Además, otras instituciones requieren de datos geográficos de salud, para lo cual es necesario crear los WMS correspondientes.

Pasos para configurar un WMS con UMN Mapserver

A continuación se explican los pasos para crear un WMS con UMN Mapserver, tomando como referencia la guía del sitio oficial de mapserver: http://mapserver.org/ogc/wms_server.html

Instalación de UMN Mapserver


Instalar mapserver como se indica en UMN Mapserver y verificar que la versión instalada tenga habilitado el soporte para WMS server con la siguiente instrucción:

cd /usr/lib/cgi-bin
./mapserv -v

El resultado debe de indicar: SUPPORTS=WMS_SERVER

Configuración del archivo tipo map

Configurar el archivo .map de la capa a servir con la especificación de algunos parámetros de metadatos adicionales a los que se tienen normalmente al trabajar con mapserver.


En la estructura del archivo .map, en el nivel de la etiqueta MAP, se tienen que especificar valores para las etiquetas: NAME, PROJECTION y METADATA. En METADATA se deberá especificar valores para : "wms_title", "wms_onlineresource", "wms_srs" y "wms_enable_request". Es necesario especificar la RUTA COMPLETA del archivo .map en la etiqueta wms_onlineresource, de lo contrario el mapa no será accesible. En el siguiente nivel de la etiqueta LAYER, es necesario proporcionar valores para: NAME, PROJECTION, METADATA y STATUS. En METADATA se deberá especificar valores para: "wms_title", "wms_srs" y "wms_enable_request". Además, si un cliente WMS desea conocer la fuente y fecha de los datos o hacer alguna, es recomendable incluir información adicional.

A continuación se muestra un ejemplo de archivo .map para configurar el WMS de unidades comunitarias de salud familiar (UCSF) del MINSAL.

MAP
	NAME "WMS UCSF"
	SIZE 800 650
	STATUS ON	       
        EXTENT -90.191281 12.706798 -87.623150 14.902626
        SIZE 500 500 
 
	INCLUDE "geomoose_globals2.map"
 
	WEB
		METADATA
			"wms_title" "UCSF"
                        "wms_abstract" "Unidades comunitarias de salud familiar (UCSF) que son parte de la red nacional de atencion primaria a la salud, Ministerio de Salud de El Salvador"   
                        "wms_keywordlist" "salud publica, el salvador, minsal, ministerio de salud, ucsf"                    
			"wms_onlineresource" "http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&"
		        "wms_srs" "EPSG:4326"
                        'wms_feature_info_mime_type' 'text/html' 
	                'queryable'          'true'
                        "wms_enable_request" "*"                        
                        "wms_contactperson" "Carlos Martin, cmartin@salud.gob.sv"
                        "wms_contactorganization" "Ministerio de Salud El Salvador (MINSAL)"
                        "wms_contactposition" "Director de la Direccion de Tecnologias de Informacion y Comunicaciones (DTIC)"
                        "wms_contactvoicetelephone" "(503) 2205-7169"
		END
	END
 
	PROJECTION
		"init=epsg:4326"
	END
 
	LEGEND
	  STATUS ON
	  LABEL
              TYPE TRUETYPE
               FONT vera_sans
               SIZE 8
              COLOR 0 0 0
	  END		
	END	
 
    LAYER
    NAME "UCSF"
    TYPE POINT
    DUMP TRUE
 
    CONNECTIONTYPE postgis
    CONNECTION "dbname=nombrebd user=usuario password=clave sslmode=disable"
    DATA 'the_geom FROM "ucsf" using unique gid using SRID=4326' 
 
    HEADER   "templates/header.html"
    TEMPLATE "templates/content.html"
    FOOTER "templates/footer.html"
 
    METADATA
      "wms_title" "UCSF"
      "wms_abstract" "Unidades comunitarias de salud familiar (UCSF) que son parte de la red nacional de atencion primaria a la salud, Ministerio de Salud de El Salvador"
      "wms_keywordlist" "salud, el salvador, minsal, ministerio de salud" 
      "wms_srs"   "EPSG:4326"	
      "wms_enable_request" "*"
      'wms_include_items' 'all'
      'ows_mygeom_type'  'point'
      "wms_feature_info_mime_type" "text/html"
      'queryable'          'true'
      "wms_enable_request" "GetMap GetFeatureInfo"  
 
    END
 
    STATUS DEFAULT
    PROJECTION
	"init=epsg:4326"
    END
    EXTENT -90.191281 12.706798 -87.623150 14.902626
    TRANSPARENCY 100
    LABELITEM "name"
    LABELMAXSCALE 80000
    LABELCACHE ON
    UNITS dd
    SIZEUNITS PIXELS
      CLASS 
      NAME 'UCSF'
       STYLE 
        SYMBOL "ecos"
         SIZE 10 
        COLOR 0 0 255
        END
        LABEL
				COLOR 0 0 0
				FONT "vera_sans"
				TYPE TRUETYPE
				POSITION UC
				PARTIALS TRUE
				SIZE 7
				BUFFER 1
				OUTLINECOLOR 255 255 255
	  		END
 
 
     END
END  ## end Layer  
 
END ## end Map

Plantillas

Si se desea mostrar al cliente WMS información de los atributos de la capa es necesario proporcionar dentro de la etiqueta LAYER de la capa, valores para HEADER, TEMPLATE, FOOTER, "wms_feature_info_mime_type" y 'queryable' con valor de true. Las etiquetas HEADER, TEMPLATE y FOOTER indican plantillas (template) en formato de página html que permiten conjuntamente colocar los resultados de la consulta de los atributos de la capa.


Además, se muestran a continuación las plantillas HTML que muestran el resultado de la consulta de los atributos de la capa:

header.html
El header.html es el encabezado de la plantilla que muestra los atributos de la capa, en este archivo se especifica el formato de los datos.

<!-- MapServer Template --> 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/transitional.dtd">
 
 <html>
 
   <head>
 
     <!-- enforce the client to display result html as UTF-8 encoding -->  
 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
 <!-- <link rel="stylesheet" type="text/css" href="../mfbase/ext/resources/css/ext-all.css" /> -->
     <style type="text/css"  >
     table.c3 {
border-collapse:collapse;
}
 
       .c2 {
 
         valign: top;
 
        text-align: center;
         border:1px solid #3333FF;
        background:#d0def0 url(bg.gif) repeat-x top left;
         font-family: arial;          
         font-size: 9pt;            
         color: #333333;
	border-collapse:collapse;
 
 
       }      
 
    .c4 {
 
         valign: top;
          background:#B0C4DE;
        text-align: center;
         color: #333333;
        border-collapse:collapse;
         border:1px solid #3333FF;
         font-size: 10pt; 
         font-weight: bold;           
       }      
 
       caption {
 
         border:1px solid #3333FF;
 
         border-collapse:collapse;
 
         font-family: arial;          
 
         font-weight: bold;
 
         font-size: 10pt;      
 
         text-align: left;      
 
         color: #333333;        
 
       }
 
     </style>
 
     <title>GetFeatureInfo Response</title>
 
 
 
   </head>
 
   <body>
    <table class="c3">

content.html
Esta plantilla es la que muestra el contenido de los atributos por capa. En esta página se especifican los nombres de los atributos y a cada uno se le asigna con la etiqueta "name" el nombre del atributo de la tabla en la base de datos.

<!-- MapServer Template -->
 
  <caption>Layer: UCSF</caption>
 
       <tbody>
 
 
 
          <tr><td CLASS="c4">Nombre</td><td class="c2" >[item name="name" format=$value escape=none]</td></tr>
 
 
        <tr><td CLASS="c4">Detalle</td><td class="c2" >[item name="descr" format=$value escape=none]</td></tr>
 
	<tr><td CLASS="c4">Municipio</td><td class="c2" >[item name="muni" format=$value escape=none]</td></tr>
 
         <tr><td CLASS="c4">Departamento</td><td class="c2" >[item name="dpto" format=$value escape=none]</td></tr>

footer.html
Esta plantilla contiene las etiquetas html para cerrar la combinación de las plantillas header.html, content.html y footer.html.

 <!-- MapServer Template -->    
 
       </tbody>
 
     </table>
 
     <br/>
 
   </body>
 
 </html>



Prueba del WMS

Finalmente es necesario probar el WMS creado.

Pueba con la petición GetCapabilities

Se puede probar el WMS escribiendo en el navegador la siguiente URL que incluye la petición GetCapabilities:

Wms7.jpeg

A continuación, el navegador le solicitará descargar y guardar un archivo tipo xml con los metadatos del xml. El contenido del archivo sería algo como:

<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE WMT_MS_Capabilities SYSTEM "http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd"
 [
 <!ELEMENT VendorSpecificCapabilities EMPTY>
 ]>  <!-- end of DOCTYPE declaration -->
 
<WMT_MS_Capabilities version="1.1.1">
 
<!-- MapServer version 5.6.7 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=CAIRO SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=THREADS SUPPORTS=GEOS INPUT=TIFF INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->
 
<Service>
  <Name>OGC:WMS</Name>
  <Title>UCSF</Title>
  <Abstract>Unidades comunitarias de salud familiar (UCSF) que son parte de la red nacional de atencion primaria a la salud, Ministerio de Salud de El Salvador</Abstract>
        <KeywordList>
          <Keyword>salud publica</Keyword>
          <Keyword> el salvador</Keyword>
          <Keyword> minsal</Keyword>
          <Keyword> ministerio de salud</Keyword>
          <Keyword> ucsf</Keyword>
        </KeywordList>
  <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/>
  <ContactInformation>
    <ContactPersonPrimary>
      <ContactPerson>Carlos Martin, cmartin@salud.gob.sv</ContactPerson>
      <ContactOrganization>Ministerio de Salud El Salvador (MINSAL)</ContactOrganization>
    </ContactPersonPrimary>
      <ContactPosition>Director de la Direccion de Tecnologias de Informacion y Comunicaciones (DTIC)</ContactPosition>
      <ContactVoiceTelephone>(503) 2205-7169</ContactVoiceTelephone>
  <ContactElectronicMailAddress>cmartin@salud.gob.sv</ContactElectronicMailAddress>
  </ContactInformation>
</Service>
 
<Capability>
  <Request>
    <GetCapabilities>
      <Format>application/vnd.ogc.wms_xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetCapabilities>
    <GetMap>
      <Format>image/png; mode=24bit</Format>
      <Format>image/jpeg</Format>
      <Format>image/gif</Format>
      <Format>image/png</Format>
      <Format>image/vnd.wap.wbmp</Format>
      <Format>image/tiff</Format>
      <Format>image/svg+xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetMap>
    <GetFeatureInfo>
      <Format>text/plain</Format>
      <Format>text/html</Format>
      <Format>application/vnd.ogc.gml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetFeatureInfo>
    <DescribeLayer>
      <Format>text/xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </DescribeLayer>
    <GetLegendGraphic>
      <Format>image/png; mode=24bit</Format>
      <Format>image/jpeg</Format>
      <Format>image/gif</Format>
      <Format>image/png</Format>
      <Format>image/vnd.wap.wbmp</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetLegendGraphic>
    <GetStyles>
      <Format>text/xml</Format>
      <DCPType>
        <HTTP>
          <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Get>
          <Post><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;"/></Post>
        </HTTP>
      </DCPType>
    </GetStyles>
  </Request>
  <Exception>
    <Format>application/vnd.ogc.se_xml</Format>
    <Format>application/vnd.ogc.se_inimage</Format>
    <Format>application/vnd.ogc.se_blank</Format>
  </Exception>
  <VendorSpecificCapabilities />
  <UserDefinedSymbolization SupportSLD="1" UserLayer="0" UserStyle="1" RemoteWFS="0"/>
  <Layer>
<!-- WARNING: The layer name 'WMS UCSF' might contain spaces or invalid characters or may start with a number. This could lead to potential problems. -->
    <Name>WMS UCSF</Name>
    <Title>UCSF</Title>
    <Abstract>Unidades comunitarias de salud familiar (UCSF) que son parte de la red nacional de atencion primaria a la salud, Ministerio de Salud de El Salvador</Abstract>
    <KeywordList>
     <Keyword>salud publica</Keyword>
     <Keyword> el salvador</Keyword>
     <Keyword> minsal</Keyword>
     <Keyword> ministerio de salud</Keyword>
     <Keyword> ucsf</Keyword>
    </KeywordList>
    <SRS>EPSG:4326</SRS>
    <LatLonBoundingBox minx="-90.1913" miny="12.7068" maxx="-87.6231" maxy="14.9026" />
    <BoundingBox SRS="EPSG:4326"
                minx="-90.1913" miny="12.7068" maxx="-87.6231" maxy="14.9026" />
<!-- WARNING: This layer has its status set to DEFAULT and will always be displayed when doing a GetMap request even if it is not requested by the client. This is not in line with the expected behavior of a WMS server. Using status ON or OFF is recommended. -->
    <Layer queryable="1" opaque="0" cascaded="0">
        <Name>UCSF</Name>
        <Title>UCSF</Title>
        <Abstract>Unidades comunitarias de salud familiar (UCSF) que son parte de la red nacional de atencion primaria a la salud, Ministerio de Salud de El Salvador</Abstract>
        <KeywordList>
          <Keyword>salud publica</Keyword>
          <Keyword> el salvador</Keyword>
          <Keyword> minsal</Keyword>
          <Keyword> ministerio de salud</Keyword>
          <Keyword> ucsf</Keyword>
        </KeywordList>
        <SRS>EPSG:4326</SRS>
        <LatLonBoundingBox minx="-90.1913" miny="12.7068" maxx="-87.6231" maxy="14.9026" />
        <BoundingBox SRS="EPSG:4326"
                    minx="-90.1913" miny="12.7068" maxx="-87.6231" maxy="14.9026" />
        <Style>
          <Name>default</Name>
          <Title>default</Title>
          <LegendURL width="64" height="20">
             <Format>image/png</Format>
             <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://hsgeo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/hsops/public_html/wms/ucsf.map&amp;version=1.1.1&amp;service=WMS&amp;request=GetLegendGraphic&amp;layer=UCSF&amp;format=image/png&amp;STYLE=default"/>
          </LegendURL>
        </Style>
    </Layer>
  </Layer>
</Capability>
</WMT_MS_Capabilities>

Pueba con la petición GetMap

Se puede probar el WMS escribiendo por ejemplo en el navegador la siguiente URL que incluye la petición GetMap:

https://geo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/geo/geo/maps/wms/minsal.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=minsal&SRS=EPSG:4326&BBOX=-90.1913,12.7068,-87.6231,14.9026&WIDTH=700&HEIGHT=650&FORMAT=image/png

El resultado de la petición en el navegador es como lo indica la siguiente imagen:

Wms8.jpeg

Prueba con un cliente WMS

Para probar el WMS creado desde un cliente como Quantum GIS, se puede hacer la prueba seleccionando la opción: "Añadir capa WMS". A continuación se muestran los pasos para agregar el WMS en el Quantum GIS:

3.1-Seleccionar la opción "Nuevo".

Wms1.jpeg

3.2-Introducir un nombre para la capa y el URL de la capa especificado para "wms_onlineresource" en el archivo .map:

Wms2.jpeg

3.3-Conectarse al nuevo WMS configurado:

Wms3.jpeg

3.4-El resultado de agregar la capa WMS es como se muestra a continuación:

Wms4.jpeg

3.4-Si seleccionamos las propiedades de la capa, se obtiene una ventana con los datos proporcionados en el archivo .map:

Wms5.jpeg

3.5-Si identificamos un objeto espacial, en este caso una unidad comunitaria de salud familiar (UCSF), se obtiene una ventana con los datos de dicho establecimiento. El formato de visualización de los datos está proporcionado con las plantillas especificadas en el archivo .map: header.html, content.html y footer.html

Wms6.jpeg

WMS MINSAL

A continuación se indica el WMS de establecimientos del MINSAL:

http://geo.salud.gob.sv/cgi-bin/mapserv?MAP=/var/www/geo/geo/maps/wms/minsal.map

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas