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)
Vantagens
aplicações mais fáceis de se utilizar
independência de plataforma: basta um
navegador para acessar a aplicação
mobilidade do usuário: o usuário só precisa de
uma estação com navegador e acesso à web.
Não precisa de uma estação fixa
centralização de dados: as informações ficam
centralizadas no servidor
interoperabilidade: aplicações web podem
interagir com sistemas desktop ou outros
sistemas web
Desvantagens
dependendo da conexão à Internet utilizada,
o desempenho pode não ser tão ágil como
normalmente são aplicações acessando dados
locais
operações de processamento pesado de
dados, normalmente não são possíveis em
ambiente
SIG
SIG
Um 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;
Motor Webmpping
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);
Customização
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 usandose linguagens de programação;
Dados Geográficos
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;
Banco de Dados
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.
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 SIG
Aproximaçã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ória
1996
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
1997
MapServer 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.0
TerraSIP: neste outro projeto financiado pela NASA, o
desenvolvimento do MapServer continua
Daniel Morissette( da DM Solutions) adere ao
desenvolvimento do MapServer
Suporte 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 oficial
2nd MapServer Users Meeting: reuniu 220 pessoas e
ampliou o foco para outras tecnologias Open Source
para SIG
Fórum ptMapServer é cedido ao G10/Univali
1° Encontro Nacional de Usuários MapServer: reuniu
cerca 100 visitantes na Univali em Itajaí/SC
2005
3rd MapServer Users Meeting
3 livros sobre MapServer chegam ao mercado:
Web Mapping Illustrated - Tyler Mitchell
MapServer : Open Source GIS Development - Bill
Kropla
Características
Dados de Entrada
ShapeFiles
ArcSDE
Oracle Spatial
PostGIS
MySQL
formatos OGR: a biblioteca OGR fornece acesso a
diversos formatos vetoriais
ODBC( somente tabelas de pontos)
MapInfo
DGN
CSV
GML
e outros
Dados matriciais
TIFF/GeoTIFF
JPEG
GIF
PNG
EPPL7
formatos GDAL: a biblioteca GDAL fornece acesso
a diversos formatos matriciais
ECW
ENVI
HDF
ERDAS
PCRaster
e outros
Formatos de Saída
O MapServer pode gerar mapas nos seguintes
formatos:
PNG
JPEG
GIF
WBMP ( para WAP)
SWF ( Flash)
PDF
SVG
DXF
formatos GDAL
Funcionalidades
indexação espacial para ShapeFiles
customização através de arquivos "template"
ou MapScript
seleção de objetos por ponto, área, valor ou
item
suporte a fontes TrueType
legenda, barra de escala, mapa de referência
e controles de navegação
desenho de objetos de acordo com a escala
mapas tematicos a partir de expressões lógicas,
regulares ou constantes string
sistema 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 URLs
compatibilidade OGC
WMS - implementa os modos servidor e cliente
WFS - implementa os modos servidor e cliente
WCS - implementa o modo servidor
WMC
SLD
GML
Filter encoding
Funcionamento do MapServer
CGI
Esta é 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
MapScript
Historicamente 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:
PHP
Python
Perl
Ruby
TCL
Java
C#
http://www.maptools.org/php_mapscript/index.phtml
WebServices
O 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
Mapas
MapFile
Formulário de inicialização
Arquivos Template
Mapas
Antes 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_o
f_Brazil
MapFile
O 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ção
Em 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 Template
Os 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 Arquivos
sp_uf: shapefile de tipo polígono representando os
limites do estado de São Paulo
sp_muni: shapefile de tipo polígono representando
os limites dos municípios do estado de São Paulo
sp_rvia: shapefile de tipo linha representando as
rodovias do estado de São Paulo
sp_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
END
END
exercicio01.map
Forma de Chamar o Mapa
http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de
Programas/Apache
Group/Apache/htdocs/learn2mapit/intro_mapserver/exerci
cio01.map&mode=map
http://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
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 2
EXTENT -53.110 -25.312 -44.161 -19.779
A 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.
Extent
O 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 SIZE
Linha 3
a propriedade SHAPEPATH define o caminho
relativo (ao MapFile) ou caminho absoluto dos
arquivos de mapas (ShapeFiles, GeoTIFFs,
etc...).
Linha 4
a 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).
Layer
Um 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 7
a 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 8
A 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 9
A 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.
STATUS
A 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 / COLOR
Linha 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/cgibin/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/cgibin/mapserv.exe?map=C:\CAIO\curso\www\exercic
io02.map&mode=legend&layer=rvia
Alterando a cor de fundo da imagem
http://localhost/cgibin/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 imagem
http://localhost/cgibin/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/cgibin/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áticos
A 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/cgibin/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/cgibin/mapserv.exe?map=C:\CAIO\curso\www\exercicio04
_2.map&mode=map&layer=muni
Código
LAYER
END
# 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 2
END
# Linha 25
# 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/cgibin/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ção
Mapas (.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ção
Apó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 Template
Uma 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 9
Nesta 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 pontos
Em 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
elipse
FILLED TRUE
# linha 11: definindo FILLED como TRUE, o símbolo
# será desenhado com preenchimento e não vazado
POINTS
# 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
END
END
. . .
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
END
END
Resultado
Com o formulário de inicialização e o
template.
Usando imagens como símbolos
SYMBOL
NAME
TYPE
"SYM_PONTO"
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ímbolo
END
Adicionando uma legenda
A 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 mapa
END
Analisando os arquivos (Template)
<img src="[legend]" alt="Legenda">
Adicionando uma Barra de escala
Apresentar o código do MAPFile e Template
Exibindo rótulos
Alé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.
FontSet
O 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
fte_vera
fritqat.ttf
Vera.ttf
Executando consultas
Uma 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.
Fontes
https://www.webmapit.com.br/
http://pt.wikipedia.org/wiki/Sistemas_de_Info
rmação_Geográfica
Download

MAPServer