Académique Documents
Professionnel Documents
Culture Documents
Mapserver
Criando mapas usando o
Mapserver no modo CGI por meio
de um programa em HTML
Créditos
• Este curso foi elaborado a partir do Curso de
Introdução ao MapServer desenvolvido por
Eduardo Patto Kanegae (2005) e os livros
Beginning Mapserver: Open Source GIS
Development de Bill Kropla (2005) e Web
Mapping: Ilustrated de Tyler Mitchell (2005).
• Adaptado e atualizado por Marcelo Felipe
Moreira Persegona (2010), para curso de 20
horas em tecnologia Mapserver.
1
Apresentação do Professor
Marcelo Felipe Moreira Persegona é doutor em Política e
Gestão Ambiental pela Universidade de Brasília - UnB (2010) e
mestre em Desenvolvimento Sustentável com ênfase em
Política e Gestão de Ciência e Tecnologia pela UnB (2005) e
graduado em Ciência da Computação pela Universidade
Católica de Brasília - UCB (1998). Atualmente é professor da
Faculdade SENAC e exerce a função de Diretor de Projetos na
IP Consultoria e Informática Ltda., associado à Associação
Brasileira dos Analistas de Inteligência Competitiva, pesquisador
da Universidade de Brasília e da American Association for the
Advancement of Sciences nos temas de Ciência e Tecnologia e
Desenvolvimento Sustentável. Tem experiência na área de
Ciência da Computação, atuando principalmente nos seguintes
temas: gestão do conhecimento, gestão da informação,
Tecnologia da Informação, Sistemas de Informações
Geográficas (SIG) e mapserver.
Alguns conceitos
2
Sistemas de Coordenadas
Projeções Cartográficas
3
Projeção de Mercator Projeção ortográfica
Projeção cônica
Projeção de Peters
Projeção de Holzel
Projeção de Mollweide
Projeção Azimutal
Eqüidistante Oblíqua
Centrada na Cidade
de São Paulo
Projeção de Goode, que
modifica a de Moolweide Projeção Azimutal
Eqüidistante Polar
4
http://www.uff.br/mapprojections/mp_br.html
Recursos de
representação de
dados
5
Representação: polígono
Representação: ponto
6
Representação: linha
Representação: círculo
7
Representação: raster
Alguns conceitos
8
O que é Software Livre?
9
O que é Software Livre? (continuação)
Richard Stallman vem desenvolvendo
essa idéia com o projeto GNU (Gnu is
Not Unix), criado em 1984, por meio
da organização Free Software
Foundation (FSF). O projeto GNU
iniciou a pesquisa e o desenvolvimento
de diversos programas que são
distribuídos gratuitamente.
10
Por que Software Livre?
Características do
MapServer
11
O MapServer pode ler dados nos seguintes formatos:
Dados vetoriais
* ShapeFiles
* ArcSDE
* Oracle Spatial
* PostGIS
* MySQL
* formatos OGR: a biblioteca OGR fornece acesso a diversos formatos vetoriais
o ODBC( somente tabelas de pontos)
o MapInfo
o DGN
o CSV
o GML
o e outros KANEGAE, 2005.
* TIFF/GeoTIFF
* JPEG
* GIF
* PNG
* EPPL7
* formatos GDAL: a biblioteca GDAL fornece acesso a diversos formatos
matriciais
o ECW
o ENVI
o HDF
o ERDAS
o PCRaster
o e outros KANEGAE, 2005.
12
Formatos de Saída
KANEGAE, 2005.
Funcionalidades
* indexação espacial para ShapeFiles
* customização por meio 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 temáticos 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
o WMS - implementa os modos servidor e cliente
o WFS - implementa os modos servidor e cliente
o WCS - implementa o modo servidor
o WMC
o SLD
o GML
o Filter encoding
KANEGAE, 2005.
13
Modos de
Funcionamento
CGI
Esta é a maneira mais simples de se trabalhar com o MapServer e também a
abordagem que será exposta neste curso.
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).
KANEGAE, 2005.
14
MapScript
WebServices
KANEGAE, 2005.
15
Tipos de conexões
do Mapserver
16
Exemplo de
conexão
com
PostgreSQL
+ PostGis
17
Opções de parâmetros do comando shp2pgsql
para transformação de um shape file para SQL
18
Estrutura geral de
uma aplicação
MapServer
Antes de mais nada, é preciso ter em mãos os mapas que se deseja publicar em
uma aplicação MapServer. Os mapas são os dados de entrada da aplicação e
devem estar em um formato que possa ser lido pelo MapServer.
2. MapFile
O MapFile é um arquivo com extensão .map, em formato texto puro, com 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, qual cor, com qual
símbolo, e até que escala o usuário poderá aproximá-lo.
Ou seja, o MapFile define como os MAPAS (dados) serão apresentados ao usuário.
KANEGAE, 2005.
19
Estrutura geral de uma aplicação MapServer
3. Formulário de inicialização
4. Arquivos Template
KANEGAE, 2005.
20
Estrutura de diretórios para
aplicações WebGIS
Aplicação WebGIS
O objetivo do
curso
21
Componentes da interface
Botão de
Início
Mapa de
referência
Tipo de ação
Seleção de
Tipo de imagem camadas
Zoom + -
Área de Busca
trabalho textual
22
Instalação do
MS4W com I3Geo
23
Baixar MS4W com I3Geo
http://mapas.mma.gov.br/download/
24
Descompactar o arquivo baixado no c:\
25
Instalar o serviço do Apache
26
Testar o I3Geo
http://localhost/i3geo
Testar o I3Geo
http://localhost/i3geo
27
Criando um mapa
básico
• Contorno do Brasil
– Camada do tipo polígono
• Estados do Brasil
– Camada do tipo polígono
• Sedes Municipais
– Camada do tipo ponto
• Rodovias Federais
– Camada do tipo linha
• Spot Vegetation
– Camada do tipo raster
28
Mapa com uma
camada temática
29
Exercício 1 – Mapa com uma camada temática
C:/ms4w/curso_mapserver/mapfiles/
http://localhost/cgi-bin/mapserv.exe?
map=/ms4w/curso_mapserver/mapfiles/exercicio_1.map&mode=map
O resultado será:
30
Exercício 1 – Mapa com uma camada temática
http://localhost/cgi-bin/mapserv.exe?
map=/ms4w/curso_mapserver/mapfiles/exercicio_1.map&mode=map
onde:
31
Exercício 1 – Mapa com uma camada temática
Detalhes do Mapfile criado
• Linha 6: a palavra reservada LAYER inicia a declaração de um objeto layer.
Na linha 18 a palavra END finaliza a declaração do objeto LAYER. Este
objeto pode ser considerado o mais importante de qualquer MapFile, pois é
por meio 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). 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.
32
Onde obter os códigos RGB de cores
33
Exercício 2 – Mapa com duas camadas temáticas
34
Exercício 2 – Mapa com duas camadas temáticas
http://localhost/cgi-bin/mapserv.exe?
map=/ms4w/curso_mapserver/mapfiles/exercicio_2.map&mode=map
&layer=estados
O resultado será:
http://localhost/cgi-bin/mapserv.exe?
map=/ms4w/curso_mapserver/mapfiles/exercicio_2.map&mode=legend
&layer=estados
O resultado será:
35
Exercício 2 – Mapa com duas camadas temáticas
Detalhes dos parâmetros passados ao
Mapserver
• Dividindo a URL digita no navegador de Internet em partes temos:
http://localhost/cgi-bin/mapserv.exe?
map=/ms4w/curso_mapserver/mapfiles/exercicio_1.map&mode=map&layer=estados
onde:
– layer: este parâmetro indica ao MapServer que o layer de nome estados deve ser
desenhado. O uso deste parâmetro foi necessário porque este novo layer, ao
contrário do layer brasil, não está com o parâmetro STATUS definido.
Mudando os
parâmetros em
tempo de execução
36
Exercício 3 – Mudando parâmetros em tempo de
execução
Exercício 3
O exercício anterior salve como exercicio_3.map.
37
Exercício 3.1
Para alterar a cor do fundo da imagem, acrescente a URL anterior:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_3.
map&mode=map&layer=estados&map_imagecolor=70+166+239
O resultado será:
Exercício 3.2
Para o tipo de imagem, acrescente a URL anterior:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_3.
map&mode=map&layer=estados&map_imagecolor=70+166+239&map
_imagetype=png
O resultado apresentado será a mesma imagem anterior, porém, agora a sua
extensão é do tipo png:
Neste exemplo a imagem de saída tem seu tipo alterado para PNG pelo parâmetro
map_imagetype. Experimente trocar o valor png na URL por outras opções como
jpeg, pdf ou swf.
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.
38
Exercício 3.3
Para alterar vários parâmetros ao mesmo tempo, acrescente a URL anterior:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_3.map&m
ode=map&layer=estados&map_imagecolor=70+166+239&map_imagetype=p
ng&map_size=600+450
Utilizando expressões
string de valor fixo,
expressões regulares
e expressões lógicas
39
Exercício 4
Exercício 4.1
Criando temas com expressões string.
40
Exercício 4.1
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_41
.map&mode=map&layer=estados
O resultado será:
41
Exercício 4.2
Criando temas com expressões regulares.
Exercício 4.2
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_42
.map&mode=map&layer=estados
O resultado será:
42
Detalhes dos parâmetros passados ao Mapserver
Exercício 4.3
Criando temas com expressões lógicas.
43
Exercício 4.3
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_43
.map&mode=map&layer=estados
44
Colocando rótulo na
camada temática
45
Exercício 5
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_5.map&m
ode=map&layer=estados&layer=estados_rotulos
O resultado será:
Criando uma
camada temática
com imagem
Raster
46
Crie o mapfile:
Exercício 6
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_6.map&la
yer=imagem_spot_vegetation&mode=map
O resultado será:
47
Trabalhando com
projeções
Crie o mapfile:
48
Exercício 7
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_7.map&la
yer=raster_brasil&layer=estados&mode=map
O resultado será:
Criando uma
interface em HTML
49
Exercício 8
• Neste exercício iremos criar a nossa
primeira interface de usuário em HTML.
• Funcionalidades:
– Página de inicialização de variáveis
– Área de trabalho
– Aproximar
– Afastar
– Mover o mapa pela área de trabalho
– Seleção de camadas
Exercício 8
Crie o mapfile que será chamado pela interface do usuário.
50
Exercício 8
Exercício 8
• Como funciona:
– Após clicar no botão Iniciar da página de inicialização, os
parâmetros contidos no formulário (program e map) são
enviados ao executável CGI do MapServer. Como não foi
enviado o parâmetro mode (que nos exercícios anteriores fora
definido com valor map), o MapServer é iniciado
automaticamente com mode = browse.
– O modo browse é o modo de navegação por interface de
usuário e o MapServer procurará pelo arquivo
web05_template.html que foi definido na propriedade
TEMPLATE do objeto WEB na linha 13 do MapFile
exercicio_5.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.
51
Exercício 8
• Como funciona:
KANEGAE, 2005.
Exercício 8
Criando a página de inicialização da interface do usuário.
52
Exercício 8
Criando a interface do usuário.
Exercício 8
• Como funciona:
– Uma vez que o arquivo template web05_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 a lista das
substituições realizadas no arquivo web05_template.html:
• Linha 6: nesta linha define-se o action do formulário com o valor da variável [program].
Esta variável é enviada pela primeira vez pelo formulário de inicialização (no arquivo
web05_iniciar.html) e deve ser mantida pela declaração feita na linha 8.
• Linha 8: nesta linha 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: tal qual ocorre com a linha 8, temos 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 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.
53
Exercício 8
• Como funciona:
• 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: esta linha 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. A cada
interação com a aplicação, o MapServer irá gerar uma imagem temporária dentro da
pasta definida em MAP->WEB->IMAGEPATH, que será a imagem resultante da
solicitação do usuário. Note também que 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 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, 26, 27 e 28: estas linhas definem os controles de exibir/ocultar layers da
aplicação. Se você 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 pelo processamento das variáveis
"[estados_check]“, "[rodovias_check]“, "[estados_check]“, "[sedes_municipais_check]“ e
"[spot_vgt_brasil_check]".
54
Crie o mapfile que será chamado pela interface do usuário.
55
Exercício 9
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_9.map&la
yer=estados
Colocando barra de
escala dentro de
um mapa
56
Crie o mapfile:
Exercício 10
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_10.map&
layer=estados
O resultado será:
57
Colocando legenda
dentro de um mapa
Crie o mapfile:
58
Exercício 11
Para testar o mapfile, digite:
http://localhost/cgi-
bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_11.map&
layer=estados
O resultado será:
Fazendo consulta
textual em um
mapa
59
Exercício 12
60
61
62
Integrando tudo em
uma interface de
usuário
Projeto do curso
63
Onde obter mais
informações
PostGIS
http://postgis.refractions.net/
64
Onde obter mais informações
http://www.mapserver.org
http://www.mma.gov.br
http://pt.wikibooks.org/wiki/I3geo
http://www.softwarepublico.gov.br
www.maptools.org
65
Obrigado!!!
Prof. Dr. Marcelo Felipe Moreira Persegona
marcelo.persegona@gmail.com
Referências Bibliográficas
66