MAPServer Caio Nakashima. Webmapping é uma técnica para visualização de dados geográficos...

Post on 17-Apr-2015

104 views 4 download

Transcript of MAPServer Caio Nakashima. Webmapping é uma técnica para visualização de dados geográficos...

MAPServer

Caio Nakashima

Webmapping

é uma técnica para visualização de dados geográficos através de aplicações web (Internet/Intranet). Dependendo do tipo da aplicação, pode-se eventualmente inferir nos dados geográficos através da própria interface web.é uma alternativa de consulta de informações, que eventualmente pode se tornar muito poderosa se combinada à metodologias como Relatórios e Gráficos.não é um SIG( Sistema de Informação Geográfica)

Vantagensaplicações mais fáceis de se utilizarindependência de plataforma: basta um navegador para acessar a aplicaçãomobilidade do usuário: o usuário só precisa de uma estação com navegador e acesso à web. Não precisa de uma estação fixacentralização de dados: as informações ficam centralizadas no servidorinteroperabilidade: aplicações web podem interagir com sistemas desktop ou outros sistemas web

Desvantagensdependendo da conexão à Internet utilizada, o desempenho pode não ser tão ágil como normalmente são aplicações acessando dados locaisoperações de processamento pesado de dados, normalmente não são possíveis em ambiente

SIG

SIGUm Sistema de Informação Geográfica (SIG ou GIS - Geographic Information System, do acrônimo inglês) é um sistema de hardware, software, informação espacial e procedimentos computacionais, que permite e facilita a análise, gestão ou representação do espaço e dos fenômenos que nele ocorrem.

Exemplo SIG

Um exemplo bem conhecido de um protoSIG é o trabalho desenvolvido pelo Dr. John Snow em 1854 para situar a fonte causadora de um surto de cólera na zona do Soho em Londres, cartografando os casos detectados. Esse protoSIG permitiu a Snow localizar com precisão um poço de água contaminado como fonte causadora do surto.

Exemplo WEB Mapping

Navegador web: este é o software de interface de usuário. Por meio de um navegador - como FireFox, Konqueror, Internet Explorer, Netscape Navigator ou Opera – o usuário acessa um endereço que contém a aplicação Web;O servidor web, como o Apache ou IIS é o software responsável pela publicação de textos, arquivos HTML, imagens e hyperlinks em uma conexão web;

O servidor web comunica-se com um "motor webmapping" – como o MapServer ou ESRI ArcIMS – que é o componente responsável por realizar a leitura parametrizada de arquivos de dados geográficos( mapas), efetuar uma operação específica( aproximar, afastar, deslocar, classificar, localizar, etc...) e converter o resultado de uma consulta em uma imagem( GIF, PNG, JPG);

Motor Webmpping

Caso a aplicação necessite de uma grau de customização além do padrão que o software de webmapping dispôr, em algumas ferramentas há a possibilidade de se efetuar uma customização mais aprimorada usando-se linguagens de programação;

Customização

Os dados geográficos devem ser armazenados em formato padrão suportado pelo software de webmapping ou diretamente no banco de dados, caso este suporte dados espaciais;

Dados Geográficos

O banco de dados compreende as informações de interesse dos usuários e deve estar estruturado de modo que seus dados possam ser relacionados aos dados geográficos e conseqüentemente possibilitar o usuário a obter respostas coesas relacionadas ao seu negócio.

Banco de Dados

Tendências

Interoperabilidadeé cada vez mais comum, seja em ambientes públicos ou privados, a necessidade de se integrar dados oriundos de diferentes fontes e formatos;

Compatibilidade com padrões mundiais

iniciativas como as do Open Geospatial Consortium visam a definição de especificações padrão para o desenvolvimento de aplicações SIG.

http://www.opengeospatial.org/

Dessa forma, teoricamente, será possível realizar a substituição de softwares sem a necessidade de se alterar estruturas de dados;

Migrando para SIGAproximação ao SIG: com a evolução de hardware, software e com a própria evolução da Internet, é natural que as aplicações de webmapping se enriqueçam cada vez mais de recursos, tornando-se mais próximas dos SIGs.

História1996

ForNet: em uma parceria entre a UMN e o Minnesota DNR , sob patrocínio da NASA, o projeto ForNet visa prover equipes da área florestal com produtos obtidos a partir de imagens de sensoriamento remoto. Dentre os requisitos do projeto, havia a necessidade de se entregar dados geográficos via internet

1997MapServer 1.0: desenvolvido em C, por Stephen Lime, para uso no projeto ForNet. Foi usada a biblioteca ShapeLib( para manipulação de ShapeFiles) e a biblioteca GD( para geração das imagens)

História (2)2000

MapServer 3.0TerraSIP: neste outro projeto financiado pela NASA, o desenvolvimento do MapServer continuaDaniel Morissette( da DM Solutions) adere ao desenvolvimento do MapServerSuporte a dados matriciais( através da biblioteca LibTIFF) e fontes TrueType( biblioteca FreeType) adicionados surge o website oficial do MapServer que torna-se então um projeto Open Source de conhecimento público

História (3)2004

1.200 usuários inscritos na lista de discussão oficial2nd MapServer Users Meeting: reuniu 220 pessoas e ampliou o foco para outras tecnologias Open Source para SIGFórum ptMapServer é cedido ao G10/Univali1° Encontro Nacional de Usuários MapServer: reuniu cerca 100 visitantes na Univali em Itajaí/SC

20053rd MapServer Users Meeting3 livros sobre MapServer chegam ao mercado:Web Mapping Illustrated - Tyler Mitchell MapServer : Open Source GIS Development - Bill Kropla Mapping Hacks - Shuyler Erle

CaracterísticasDados de Entrada

ShapeFilesArcSDEOracle SpatialPostGISMySQLformatos OGR: a biblioteca OGR fornece acesso a diversos formatos vetoriais

ODBC( somente tabelas de pontos)MapInfoDGNCSVGMLe outros

Dados matriciaisTIFF/GeoTIFFJPEGGIFPNGEPPL7formatos GDAL: a biblioteca GDAL fornece acesso a diversos formatos matriciais

ECWENVIHDFERDASPCRastere outros

Formatos de SaídaO MapServer pode gerar mapas nos seguintes formatos:

PNGJPEGGIFWBMP ( para WAP)SWF ( Flash)PDFSVGDXFformatos GDAL

Funcionalidades indexação espacial para ShapeFilescustomização através de arquivos "template" ou MapScriptseleção de objetos por ponto, área, valor ou itemsuporte a fontes TrueTypelegenda, barra de escala, mapa de referência e controles de navegaçãodesenho de objetos de acordo com a escala

mapas tematicos a partir de expressões lógicas, regulares ou constantes stringsistema anti-colisão para rótulos(labels)reprojeção de dados cartográficos em tempo de execução(PROJ.4)configuração de parâmetros via URLscompatibilidade OGC

WMS - implementa os modos servidor e clienteWFS - implementa os modos servidor e clienteWCS - implementa o modo servidorWMCSLDGMLFilter encoding

Funcionamento do MapServer

CGIEsta é a maneira mais simples de se trabalhar com o MapServer. Quando se utiliza o MapServer em modo CGI, o seu arquivo executável deve ser colocado em diretório apropriado do servidor web. Este executável irá receber parâmetros de inicialização da aplicação webmapping, processar as requisições solicitadas e retornar ao aplicativo cliente( navegador) o resultado esperado (imagens do mapa, legenda, barra de escala, mapa de referência, ou mesmo códigos HTML).

http://mapserver.gis.umn.edu/download/current

MapScriptHistoricamente o conceito do MapScript foi introduzido em 2001 quando a canadense DM Solutions disponibilizou a API do MapServer para a linguagem de programação PHP, numa extensão chamada de PHP/MapScript. De maneira sucinta, o MapScript é a disponibilização dos recursos do MapServer para linguagens de programação.

Dessa forma, pode-se combinar os recursos do MapServer com recursos da sua linguagem de programação preferida, visando a criação de aplicações com um grau de customização maior, eventualmente não atingido com aplicações do MapServer em modo CGI.O MapServer MapScript está disponível para as seguintes linguagens de programação:

PHPPythonPerlRubyTCLJavaC#

http://www.maptools.org/php_mapscript/index.phtml

WebServicesO MapServer implementa algumas especificações do Open Geospatial Consortium - e mais precisamente as especificações WMS, WFS e WCS - que permitem o desenvolvimento de aplicações que fazem o MapServer operar como um serviço de mapas via web. Dessa forma, pode-se utilizar o MapServer para disponibilizar dados via web que serão acessados via aplicações desktop como ArcView, ArcExplorer, ArcGIS, Quantum GIS, JUMP, uDig ou mesmo por aplicações web.

Estrutura geral de uma aplicação MapServer

MapasMapFileFormulário de inicializaçãoArquivos Template

MapasAntes de mais nada, é preciso ter em mãos os mapas que se deseja publicar com uma aplicação MapServer. Os mapas são enfim, os dados de entrada de sua aplicação e devem estar em um formato que possa ser lido pelo MapServer.

ftp://geoftp.ibge.gov.br/mapas/http://commons.wikimedia.org/wiki/Category:Maps_of_Brazil

MapFileO MapFile é um arquivo de extensão .map, em formato texto puro, que faz todas as definições e configurações iniciais necessárias para execução de uma aplicação MapServer. Este arquivo é lido pelo MapServer em cada interação do usuário com a aplicação e define diversas características da aplicação como:

que mapas serão disponibilizados? como estes mapas serão apresentados? com que cor? com que símbolo? até que escala o usuário poderá aproximar-se?

Ou seja, o MapFile define como os MAPAS( dados) serão apresentados ao usuário

Formulário de inicializaçãoEm aplicações MapServer em modo CGI, é necessário a presença de um "formulário de inicialização" da aplicação. Este formulário é uma declaração em HTML que enviará ao executável do MapServer parâmetros básicos para a inicialização da aplicação, tais como o caminho do MapFile e endereço(URL) do MapServer CGI.

Arquivos TemplateOs arquivos Template definem a interface ou design da aplicação. Definem como os componentes gerados pelo MapServer

mapa, legenda, barra de escala, etc...) serão apresentados para o usuário e de que forma o usuário poderá interagir com a aplicação.

Descrição dos Arquivossp_uf: shapefile de tipo polígono representando os limites do estado de São Paulosp_muni: shapefile de tipo polígono representando os limites dos municípios do estado de São Paulosp_rvia: shapefile de tipo linha representando as rodovias do estado de São Paulosp_sede: shapefile de tipo ponto representando as sedes municipais do estado de São Paulo

Utilização do MapFile

MAP EXTENT -53.110 -25.312 -44.161 -19.779 SHAPEPATH "mapas" SIZE 400 300 LAYER NAME "uf" TYPE POLYGON DATA "sp_uf" STATUS DEFAULT CLASS NAME "São Paulo" OUTLINECOLOR 0 0 0 COLOR 255 255 192 END ENDEND

exercicio01.map

Forma de Chamar o Mapahttp://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio01.map&mode=maphttp://localhost/cgi-bin/mapserv.exe? map=C:/CAIO/curso/www/exercicio01.map&mode=map

Resultado

Dividindo esta url em várias partes teremos: http://localhost/cgi-bin/mapserv.exe? map=C:/CAIO/curso/www/exercicio01.map&mode=map

localhost : é o endereço do servidor web

/cgi-bin/mapserv : indica o arquivo executável(binário) do MapServer CGI.Neste caso, ele se encontra na pasta "cgi-bin"

map : Este parâmetro indica a localização do MapFile a ser interpretado pelo MapServer.

mode : este parâmetro indica o modo de operação do MapServer. Neste caso, o modo map resultada na geração da imagem do mapa da aplicação.

MAP File

Linha 1:A palavra reservada MAP define o início do MapFile. O objeto MAP é o elemento raiz de um MapFile e todos os outros objetos e propriedades são definidos hierarquicamente abaixo deste elemento. Na linha 18 a palavra END finaliza a definição do objeto MAP.

Linha 2EXTENT -53.110 -25.312 -44.161 -19.779A propriedade EXTENT define o retângulo envolvente do mapa na inicialização da aplicação. Os valores informados por estas coordenadas expressam a menor área retangular que faça a cobertura dos mapas da aplicação em sua inicialização. Cada um dos quatro valores que compõem a propriedade EXTENT deve ser informado em formato de número decimal, usando-se o ponto(.) para delimitação de casas decimais.

ExtentO primeiro par de valores define o canto inferior esquerdo do retângulo envolvente e o segundo par de valores define o canto superior direito do retângulo.c:\MapServer\bin\ogrinfo.exe -all sp_uf.shp >lixo.txt

INFO: Open of `sp_uf.shp'

using driver `ESRI Shapefile' successful.

Layer name: sp_uf

Geometry: Polygon

Feature Count: 1

Extent: (-53.109609, -25.311932) - (-44.160556, -19.779323)

Layer SRS WKT:

SHAPEPATH e SIZELinha 3

a propriedade SHAPEPATH define o caminho relativo (ao MapFile) ou caminho absoluto dos arquivos de mapas (ShapeFiles, GeoTIFFs, etc...).

Linha 4a propriedade SIZE define as dimensões (largura X altura) da imagem do mapa. Os valores de Largura e Altura da imagem deve ser especificados em pixels.

Layer (Linha 6)a palavra reservada LAYER inicia a declaração de um objeto layer. Na linha 16 a palavra END finaliza a declaração do objeto LAYER . Este objeto pode ser considerado o mais importante de qualquer MapFile, pois é através da declaração de layers é que se pode representar uma camada de informações geográficas. Os layers podem ser usados para a apresentação de mapas de pontos, linhas, polígonos, imagens( dados matriciais) ou apenas para exibição de objetos de textos( rótulos).

LayerUm MapFile pode conter vários layers, sendo que o primeiro layer declarado aparecerá por baixo de todos os layers na visualização do mapa. E, sendo assim, por dedução, o último layer declarado aparecerá por cima de todos os layers no momento da visualização do mapa.

NAME – Linha 7a propriedade NAME define o nome do layer para a aplicação. Este nome deve ser uma string de no máximo 20 caracteres e não deve conter espaços ou acentos. O nome do layer é uma referência que permitirá à aplicação, dentre outras coisas, realizar operações como ligar ou desligar um layer, ou mesmo alterar propriedades e objetos de um dado layer.

TYPE – Linha 8A propriedade TYPE define o tipo de layer a representar. O tipo informado deve corresponder ao tipo dos dados a serem representados no referido layer. Por exemplo, para exibir um layer de polígonos defina o tipo como POLYGON, para um layer de linhas utilize LINE, para pontos use POINT e para dados matriciais use RASTER.

DATA – Linha 9A propriedade DATA define o nome do arquivo de dados geográficos a ser representado pelo layer. No caso de arquivos ShapeFile, apenas o nome do arquivo pode ser especificado, não havendo necessidade de especificar a extensão ".shp". No exemplo deste exercício, apenas o nome do arquivo foi informado, ou seja, não houve a necessidade de se informar o caminho completo do arquivo pois este já estava definido na propriedade SHAPEPATH.

STATUSA propriedade STATUS quando definida como DEFAUT, informa ao MapServer que o referido layer sempre será desenhado. Independente do usuário solicitar ou não o desenho de um layer com STATUS DEFAULT, este sempre será desenhado. Outros valores possíveis para esta propriedade são ON e OFF, mas neste caso são usados pelo MapServer conforme o usuário solicitar ou não a ativação do layer na interface da aplicação.

CLASS Linha 11:

todo layer de representação vetorial deve possuir no mínimo 1( uma) classe. A palavra reservada CLASS indica o início da declaração da classe e na linha 15 a palavra END encerra a definição da classe.

NAME / OUTLINECOLOR / COLORLinha 12:

a propriedade NAME de um objeto CLASS especifica o nome que aparecerá na legenda do mapa representando a referida classe. Caso não se especifique esta propriedade, então a classe não constará na legenda do mapa.

Linha 13: a propriedade OUTLINECOLOR define, através de um código RGB( do inglês "red green blue"), a cor usada para o desenho da borda dos polígonos.

Linha 14: a propriedade COLOR define a cor usada para o preenchimento dos polígonos.

Acrescentando mais um Layer... LAYER NAME "rvia" TYPE LINE DATA "sp_rvia" STATUS DEFAULT CLASS NAME "Rodovias" COLOR 255 128 0 END END...

http://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\curso\www\exercicio02.map&mode=map&layer=rvia

Resultado

A URL é praticamente idêntica à apresentada no exercício do capítulo anterior, exceto pelo fato de constar um novo parâmetro:layer:

este parâmetro indica para o MapServer que o layer de nome rvia deve ser desenhado. O uso deste parâmetro foi necessário porque este novo layer, ao contrário do layer uf não está com STATUS definido para DEFAULT.

Linha 19: O nome dado ao layer é o nome usado para a chamada deste layer na URL. O layer de rodovias foi declarado por último, ele aparece por cima

Linha 20: como este é um layer de linhas, então o tipo especificado deve ser LINE.

Linha 21: indica o nome do arquivo ShapeFile de rodovias.

Linha 22: indica o início de uma classe. Esta classe será usada para representar as linhas.

Linha 23: indica o nome que aparecerá na Legenda do mapa para esta classe. Para ter uma rápida idéia de como ficará a Legenda, execute o link abaixo:

http://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\curso\www\exercicio02.map&mode=legend&layer=rvia

Alterando a cor de fundo da imagemhttp://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\

curso\www\exercicio02.map&mode=map&layer=rvia&map_imagecolor=70+166+23

Neste link o parâmetro map_imagecolor na URL faz a modificação da cor de fundo da imagem do mapa, que por padrão é da cor branca( 255 255 255 ). Os sinais de "+" no código da cor representam os "espaços".

Resultado

Alterando o tipo de saída da imagemhttp://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\

curso\www\exercicio02.map&mode=map&layer=rvia&map_imagetype=pdf

Neste exemplo a imagem de saída tem seu tipo alterado para PNG através do parâmetro map_imagetype.(gif, png, jpeg,wbmp, gtiff, swf, userdefined, pdf)NOTA: para que formatos de saída não comuns como SWF ou PDF sejam utilizados, é necessário que o MapServer tenha sido compilado com este recurso.

Alterando várias opções ao mesmo tempo

Neste exemplo além da cor de fundo e tipo de imagem, também foi alterado o tamanho da imagem através do parâmetro map_size.

http://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\curso\www\exercicio02.map&mode=map&layer=rvia&map_imagetype=jpeg&map_size=600+450&map_imagecolor=70+166+239

Mapas TemáticosA criação de mapas temáticos no MapServer é ser feita através do uso de expressões. Pode-se utilizar expressões string de valor fixo, expressões regulares ou expressões lógicas.

Criando temas com expressões string

http://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\curso\www\exercicio04_1.map&mode=map&layer=rvia

Diferente dos exercícios anteriores, desta vez o layer de Rodovias foi separado em duas classes: Rodovia principal e Rodovia secundária.Observe que o símbolo "#" delimita o início de um comentário.

Resultado

Linha 20: A propriedade CLASSITEM define o nome do atributo (campo do DBF) no ShapeFile que será usado como campo de classificação para este layer.

Linha 24: A propriedade EXPRESSION contém a expressão que será usada para a definição da classe. No caso da classe Rodovia principal, somente serão desenhadas, com a cor 255 128 0, as linhas que possuam o valor "SIM" no campo PRINCIPAL do shapefile. A string deve estar preferencialmente entre aspas duplas.

Linha 31:A classe Rodovia secundária, somente serão desenhadas, com a cor 32 64 128, as linhas que possuam o valor "NAO" no campo PRINCIPAL do shapefile.

Criando temas com expressões regulares

http://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\curso\www\exercicio04_2.map&mode=map&layer=muni

Código

LAYER # Linha 16 NAME "muni" # Linha 17 TYPE POLYGON # Linha 18 DATA "sp_muni" # Linha 19 CLASSITEM "NOME" # Linha 20 CLASS # Linha 21 OUTLINECOLOR 0 0 0 # Linha 22 COLOR 255 32 32 # Linha 23 EXPRESSION /ARARAQUARA|SAO CARLOS|RIBEIRAO PRETO/ # Linha 24 END # Linha 25 END # Linha 26

Neste exemplo, foi apresentado um novo layer( muni) que tem como base o shapefile sp_muni.shp (Linha 16). No caso, apenas três municípios deste layer foram desenhados.Linha 20:

o campo NOME do shapefile sp_muni foi usado como classificador, através da propriedade CLASSITEM.

Linha 24: As expressões regulares em objetos do tipo CLASS, devem ser definidas entre barras( / ). No caso da expressão regular definida nesta classe, serão desenhadas as cidades de "Araraquara OU São Carlos OU Ribeirão Preto". O caracter "|" simboliza o operador "OU" dentro da expressão regular.

Para saber mais sobre expressões regulares, visite o link http://aurelio.net/er/ .

Criando temas com expressões lógicas

O uso de expressões lógicas para a definição de mapas temáticos no MapServer, é útil quando há a necessidade de se avaliar mais de um campo (atributo) de um dado layer.

http://localhost/cgi-bin/mapserv.exe?map=C:\CAIO\curso\www\exercicio04_3.map&mode=map&layer=muni&

Não há a definição da propriedade CLASSITEM. Afinal, o uso de expressões lógicas para a criação de classes dispensa o CLASSITEM, pois a expressão lógica pode avaliar um ou mais atributos do layer.Linha 23:

as expressões lógicas devem ser definida entre parênteses e podem conter operadores como >, >=, < ou <=. Os campos( atributos) deve ser definidos com seus nomes entre colchetes. Neste exemplo, esta classe vai desenhar apenas os municípios com população feminina (campo PSMULHERES) maior que a população masculina (campo PSHOMENS)

Estrutura de uma aplicaçãoMapas (.shp, .shx, .dbf)MapFile (.map)Formulário de inicialização (.html)Arquivos Template (.html)

MapFile WEB

Inicia a declaração do objeto WEB.Este objeto é necessário quando se deseja definir uma interfacede usuário para a aplicação.

IMAGEPATH "tmp/" Informa o caminho relativo ou absoluto do diretório onde serão geradas as imagens temporárias.Este diretório deve possuir permissões de escrita para o usuário do servidor web.

IMAGEURL "/root/tmp/" Informa a URL que será usada para localizar as imagens temporárias.

TEMPLATE "exercicio05_web_template.html" O arquivo Template do objeto WEB define o caminho relativo ou absoluto da página HTML que será usada como modelo para definição da interface da aplicação.

Formulário de inicialização<html>

<head><title>Learn2MapIt - Introdução ao MapServer - Exercício 05</title></head>

<body>

<h4>Formulário de inicialização</h4>

<form name="frm" method="get"

action="/cgi-bin/mapserv.exe" >

<input type="hidden" name="program"

value="/cgi-bin/mapserv.exe" >

<input type="hidden" name="map“

value="C:/caio/curso/www/exercicio05.map">

<input type="submit" value="Iniciar">

</form>

</body>

</html>

Formulário de inicialização (2)O parâmetro action do formulário define o destino de envio dos dados do formulário. Ou seja, na prática é o endereço URL do MapServer CGI.O parâmetro program, aqui enviado na forma de um parâmetro oculto (hidden), tem o mesmo valor do item especificado no action e é necessário para que a aplicação funcione adequadamente após sua inicialização.O parâmetro map indica o MapFile que será processado pelo MapServer CGI

InicializaçãoApós clicar no botão Iniciar os parâmetros contidos no formulário do arquivo exercicio05_iniciar.html (program e map) são enviados ao executável CGI do MapServer. Como não foi enviado o parâmetro mode, o MapServer é iniciado automaticamente com mode = browse. O modo browse é o modo de navegação por interface de usuário e assim sendo, o MapServer procurará pelo arquivo exercicio05_web_template.html que foi definido na propriedade TEMPLATE do objeto WEB MapFile exercicio05.map.Existindo o arquivo Template, o MapServer vai processar este arquivo, e substituir todas as palavras entre colchetes("[]" ) por valores especiais que serão preenchidos pelo MapServer.

Processamento do arquivo TemplateUma vez que o arquivo template exercicio05_web_template.html foi encontrado pelo MapServer, será realizada a substituição de valores definidos entre colchetes por valores gerados pelo MapServer em tempo de execução. Veja logo abaixo, uma lista das substituições realizadas no arquivo exercicio05_web_template.html:Define-se o action do formulário com o valor da variável [program]. Esta variável é enviada pela primeira vez através do formulário de inicialização (no arquivo exercicio05_iniciar.html ) e deve ser mantida através da declaração feita.

Linha 8:Nesta linha tem-se a declaração de um objeto hidden que possui seu nome definido como "program" e seu valor será a substituição do texto "[program]" pela URL de endereço do MapServer CGI.

Linha 9Nesta linha tem-se a declaração de um objeto hidden, nomeado como "map" e seu valor será a substituição do texto "[map]" pelo caminho do MapFile.

Linha 10: O parâmetro imgext é necessário para que a aplicação contenha a informação sobre qual o retângulo envolvente atual. Ou seja, toda vez que o MapServer é executado, ele precisa saber quais as coordenadas do retângulo envolvente que a aplicação está naquele momento. O valor "[mapext]" será substituído pelas coordenadas do retângulo envolvente corrente em cada interação com a aplicação.

Linha 11: O parâmetro imgxy terá o seu valor substituído pela string "[ center ]".A palavra "[ center ]" calcula as coordenadas do centro da imagem em pixels. E o parâmetro imgxy com este valor servirá para *simular* um clique bem no centro da imagem quando o usuário clicar no botão Atualizar.

Linha 12:O parâmetro zoomsize define o fator de zoom que será usado nas operações de aproximar (zoom in) e afastar (zoom out).

Linha 14: Define o "mapa clicável" para a aplicação. O texto "[img]" será substituído pela URL da imagem temporária que foi gerada pelo MapServer. Em cada interação com a aplicação, o MapServer vai gerar uma imagem temporária dentro da pasta definida em MAP->WEB->IMAGEPATH, que será a imagem resultante da solicitação do usuário. Toda vez que o usuário clica sobre este mapa de navegação, são enviados para o MapServer CGI dois parâmetros essenciais para o correto funcionamento do sistema: img.x e img.y - estes parâmetros são as coordenadas (em pixels) do exato ponto clicado pelo usuário.

Linhas 18, 19 e 20: Essas três linhas definem os controles de Zoom da aplicação. O parâmetro zoomdir pode assumir 3(três) valores: 1 para aproximar(zoom in), 0 para mover(pan) e -1 para afastar(zoom out). Os valores "[zoomdir_1_check]", "[zoomdir_0_check]" e "[zoomdir_-1_check]" são processados pelo MapServer em cada interação e servem para deixar a última opção que o usuário escolheu já selecionada após o processamento da interação.

Linhas 25 e 26: Estas linhas definem os controles de exibir/ocultar layers da aplicação. Se se ligar um destes layers e interagir na aplicação, após o processamento da solicitação poderá notar que o layer ligado anteriormente já aparecerá ligado na caixa de seleção. Isto ocorre através do processamento das variáveis "[rvia_check]" e "[muni_check]".

Uma vez que o arquivo template é processado com as devidas substituições, o resultado é apresentado no navegador do usuário como uma página HTML.

Para mais informações sobre os parâmetros usados em arquivos Template,

"CGI Reference" http://mapserver.gis.umn.edu/docs/reference/cgi/referencemanual-all-

pages

"Template Reference".

Simbologia de pontosEm aplicações MapServer é comum o uso de símbolos para a representação de feições, sejam estas do tipo pontos, linhas ou polígonos. Os símbolos podem ser usados na forma de vetores, caracteres especiais ou mesmo imagens.

. . .SYMBOL # linha 8: inicia a declaração de um símbolo

NAME    "SYM_CIRCULO" # linha 9: nome do símbolo.TYPE    ELLIPSE # linha 10: o tipo 'ELLIPSE' cria um símbolo em forma de elipseFILLED  TRUE # linha 11: definindo FILLED como TRUE, o símbolo

# será desenhado com preenchimento e não vazadoPOINTS # linha 12: para símbolos do tipo 'elipse', os pontos

# aqui definidos representam os valores de raio(X,Y) da elipse      1 1 # linha 13: usando o mesmo valor para os raios X e Y de

# uma elipse, cria-se um circulo ENDEND. . .

LAYER NAME sede" # linha 64: este é o layer das Sedes Municipais TYPE POINT # linha 65: o tipo do layer é de pontos DATA "sp_sede" # linha 66: nome do arquivo shapefile do layer das sedes CLASS NAME "Sedes municipais" COLOR 255 0 0 SYMBOL "SYM_CIRCULO" # linha 70: nome do símbolo( conforme # definido na linha 9) a ser usado para # representar o layer SIZE 3 # linha 71: tamanho do símbolo, em pixels ENDEND

ResultadoCom o formulário de inicialização e o template.

Usando imagens como símbolosSYMBOL NAME "SYM_PONTO" TYPE PIXMAP # símbolos de tipo PIXMAP são # símbolos definidos por uma imagem IMAGE "cidmun.png" # linha 20: caminho

#relativo ou absoluto do arquivo #de imagem que será usado como símboloEND

Adicionando uma legendaA Legenda é um componente essencial em qualquer mapa para auxiliar o usuário a interpretar os dados representados pelo mapa. Através da legenda o usuário poderá identificar e distinguir visualmente os diferentes elementos de dados representados no mapa.

Analisando os arquivos (MAP File)LEGEND # linha 29: inicia a declaração da Legenda IMAGECOLOR 255 255 255 # linha 30: define a cor de # fundo da imagem da Legenda KEYSIZE 12 10 # linha 31: define as dimensões #(Largura x Altura) dos ícones das classes da # Legenda STATUS ON # linha 32: quando STATUS = ON, # a imagem temporária da legenda será criada. # Quando STATUS = EMBED, a imagem da legenda #será inserida na imagem do mapaEND

Analisando os arquivos (Template)<img src="[legend]" alt="Legenda">

Adicionando uma Barra de escalaApresentar o código do MAPFile e Template

Exibindo rótulosAlém de cores e simbologias, outro componente essencial para a interpretação de mapas são os rótulos ( textos). Os rótulos são textos que se posicionam sobre ou ao lado de feições geográficas para auxiliar o usuário na identificação de objetos.

FontSetO MapServer possui o recurso de desenhar rótulos usando fontes bitmap ou fontes True Type. As fontes bitmap são a opção padrão do MapServer para o desenho de textos - como exemplo, observe os textos presentes nos objetos Legenda e Barra de escala.Usando fontes True Type é possível garantir aos textos um aspecto visual mais agradável que as fontes bitmap. E para utilização de fontes True Type, é necessário o uso de um arquivo FontSet.

FontSet (2)O FontSet é um arquivo texto que contém uma lista das fontes True Type que poderão ser usadas por um dado MapFile. No conteúdo do arquivo FontSet cada linha deve conter:

na primeira coluna, um nome para a fonte especificada;e na segunda coluna, o caminho( relativo ou absoluto) para o arquivo .ttf da referida fonte True Type.

fontset.txt fte_fritqat fritqat.ttffte_vera Vera.ttf

Executando consultasUma outra forma de se obter informações sobre um dado objeto geográfico em aplicações MapServer é através de seu modo de operação query, ou "consulta" em Português. Através de uma consulta, é possível exibir dados sobre um objeto geográfico selecionado pelo mapa de navegação.

Fonteshttps://www.webmapit.com.br/http://pt.wikipedia.org/wiki/Sistemas_de_Informação_Geográfica