You are on page 1of 66

Curso Básico de

Mapserver
Criando mapas usando o
Mapserver no modo CGI por meio
de um programa em HTML

Prof. Dr. Marcelo Felipe Moreira Persegona

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

Figura 2.3 - Latitude e Longitude

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?

Linus Torvalds, o “pai do Linux”, quando


criou o sistema, não quis guardá-lo para si.
Quis montar um sistema que atendesse às
suas necessidades, mas que também
pudesse ser útil para mais alguém. Fez isso
sem saber que estava acabando de “fundar”
uma comunidade: a Comunidade Linux.

O que é Software Livre? (continuação)


O conceito de free software, criado pelo
pesquisador Richard Stallman, do
laboratório MIT AI Lab, baseia-se na idéia
de que um programa e seu código fonte
são conhecimentos científicos e, assim
como os teoremas matemáticos, não
podem ser guardados. A idéia é que, se
eles forem escondidos do público, correremos
o risco de ter uns poucos controlando o
conhecimento – retardando, assim, o avanço
da ciência.

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.

O que é Software Livre? (continuação)


O novo conceito, batizado de open source, permitiria que se
comercializasse um software de código-fonte aberto ou se usasse
parte de um código comercial em um produto gratuito. Optando por
programas free ou open source, paga-se o mesmo valor pelo
produto final: zero. Isso é ótimo para os bolsos das empresas, mas
onde está o apelo para o profissional de TI recomendar e utilizar
free software em seus projetos?

A resposta é: custos menores e margens de lucros maiores, que éo


desejo de qualquer corporação. Como um projeto baseado em
software livre ou open source não tem os altos custos de
licenciamento de software, essa economia pode (e costuma) ser
utilizada para contratar mais e melhores profissionais de TI.

10
Por que Software Livre?

Porque o software livre possui quatro liberdades fundamentais:


1. A liberdade de executar o programa para qualquer
propósito.
2. A liberdade de estudar como o programa funciona, e
adaptá-lo para as suas necessidades. Acesso ao código-
fonte é um pré-requisito para esta liberdade.
3. A liberdade de redistribuir cópias de modo que você possa
ajudar ao seu próximo.
4. A liberdade de aperfeiçoar o programa e liberar os seus
aperfeiçoamentos, de modo que toda a comunidade se
beneficie. Acesso ao código-fonte é um pré-requisito para esta
liberdade.

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.

O MapServer pode ler dados nos seguintes formatos:


Dados matriciais

* 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

O MapServer pode gerar mapas nos seguintes formatos:


* PNG
* JPEG
* GIF
* WBMP (para WAP)
* SWF (Flash)
* PDF
* SVG
* DXF
* formatos GDAL

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

O MapServer pode ser utilizado basicamente de três


modos: CGI, MapScript e WebServices.

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

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, em
uma 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#

Nota: este modo de funcionamento não será exposto neste curso.


KANEGAE, 2005.

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.

Nota: este modo de funcionamento não será exposto neste curso.

KANEGAE, 2005.

15
Tipos de conexões
do Mapserver

Exemplo de conexão com shapefile

16
Exemplo de
conexão
com
PostgreSQL
+ PostGis

Comando para transformação de um


shape file para SQL

shp2pgsql.exe –s 4291 –c –I c:\shapes:\br_estados geo_br_estados > c:\sql\geo_br_estados.sql

17
Opções de parâmetros do comando shp2pgsql
para transformação de um shape file para SQL

Exemplo de conexão com WMS

18
Estrutura geral de
uma aplicação
MapServer

Estrutura geral de uma aplicação MapServer


1. Mapas

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

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.

4. Arquivos Template

Os arquivos Template definem a interface ou design da aplicação. Ou seja, definem


como os componentes gerados pelo MapServer (mapa, legenda, barra de escala,
etc...) serão apresentados para o usuário e de que forma a poder interagir com a
aplicação.

KANEGAE, 2005.

MITCHELL, 2005, p. 37.

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

Instalar o MS4W com I3Geo

Para a instalação são necessários os seguintes passos:


1. Acessar a URL:
http://mapas.mma.gov.br/download/
2. Baixar o arquivo:
v3_9_windows_ms4w_20080324.zip ou a versão mais atual
3. Descompactar o arquivo no raiz do c:\
4. Iniciar o serviço do Apache contido dentro da distribuição ms4w
c:\ms4w\apache-install.bat
5. Testar o servidor de páginas Web acessando o localhost no
navegador de Internet
http://localhost
6. Testar o I3Geo
http://localhost/i3geo/index.htm

23
Baixar MS4W com I3Geo
http://mapas.mma.gov.br/download/

Baixar MS4W com I3Geo

24
Descompactar o arquivo baixado no c:\

Instalar o serviço do Apache

25
Instalar o serviço do Apache

Testar o servidor de páginas Web


http://localhost

26
Testar o I3Geo
http://localhost/i3geo

Testar o I3Geo
http://localhost/i3geo

27
Criando um mapa
básico

Camadas temática a serem utilizadas

• 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

Exercício 1 – Mapa com uma camada temática

• Este primeiro exercício, tem por finalidade


criar um mapa simples do contorno do
Brasil no seu navegador de Internet.

29
Exercício 1 – Mapa com uma camada temática

Digite o script abaixo no programa SciTe.

Nomeie o arquivo como exercicio_1.map e grave-o na pasta:

C:/ms4w/curso_mapserver/mapfiles/

Exercício 1 – Mapa com uma camada temática

Para testar o script, digite:

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

Detalhes dos parâmetros passados


• 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

onde:

– localhost: é o endereço do servidor web

– /cgi-bin/mapserv.exe: 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. O parâmetro map é essencial para a inicialização de uma aplicação
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.

Exercício 1 – Mapa com uma camada temática


Detalhes do Mapfile criado
• 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 20 a palavra END finaliza a definição do objeto MAP.

• Linha 2: 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. 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.

• 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.

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.

• 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.

• 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.

• 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.

• Linha 10: a propriedade STATUS quando definida como DEFAUT, informa


ao MapServer que o referido layer sempre será desenhado. Ou seja,
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.

Exercício 1 – Mapa com uma camada temática


Detalhes do Mapfile criado
• Linha 12: 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 16 a palavra
END encerra a definição da classe.

• Linha 13: 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 14: a propriedade OUTLINECOLOR


define, por meio de um código RGB (do inglês
"red green blue"), a cor usada para o desenho
da borda dos polígonos.

• Linha 15: a propriedade COLOR define a cor


usada para o preenchimento dos polígonos.

32
Onde obter os códigos RGB de cores

Mapa com duas


camadas temáticas

33
Exercício 2 – Mapa com duas camadas temáticas

• Neste exercício, veremos como fazer para


adicionar duas camadas temáticas
(layers) ao MapFile.

• E veremos como apresentar a legenda


das camadas que estão sendo exibidas.

Exercício 2 – Mapa com duas camadas temáticas


Digite o script abaixo no programa SciTe.

Grave o script no arquivo chamado exercicio_2.map na pasta:


C:/ms4w/curso_mapserver/mapfiles/

34
Exercício 2 – Mapa com duas camadas temáticas

Para carregar a camada temática acrescida, digite:

http://localhost/cgi-bin/mapserv.exe?
map=/ms4w/curso_mapserver/mapfiles/exercicio_2.map&mode=map
&layer=estados
O resultado será:

Exercício 2 – Mapa com duas camadas temáticas

Para ver a legenda das camadas carregadas, digite:

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

• O MapServer possui a característica de


permitir que propriedades de seus objetos
no MapFile sejam manipulados em tempo
de execução.

• Para isto, parâmetros podem ser


passados por meio da URL de acesso ao
MapServer CGI, conforme veremos nos
exemplos do exercício a seguir.

Exercício 3
O exercício anterior salve como exercicio_3.map.

Grave o script no arquivo chamado exercicio_3.map na pasta:


C:/ms4w/curso_mapserver/mapfiles/

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á:

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".

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

O resultado será a mesma imagem anterior, porém, agora a sua extensão é do


tipo png, fundo azul e o seu tamanho alterado de 400 x 300 para 600 x 450
pixels:

Utilizando expressões
string de valor fixo,
expressões regulares
e expressões lógicas

39
Exercício 4

• A criação de mapas temáticos no


MapServer pode ser feita pelo uso de
expressões. Pode-se utilizar expressões
string de valor fixo, expressões regulares
ou expressões lógicas. Vamos ver alguns
exemplos.

Exercício 4.1
Criando temas com expressões string.

Grave o script no arquivo chamado exercicio_41.map na pasta:


C:/ms4w/curso_mapserver/mapfiles/

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á:

Detalhes dos parâmetros passados ao Mapserver

• Parâmetros passados ao Mapserver:


– neste exemplo, foram desenhados apenas dois estados Operador Tipo de dado
do shapefile estados.shp. != Numérico
= Numérico
– o campo NOMEUF do shapefile estados foi usado como
classificador, por meio da propriedade CLASSITEM. O > Numérico
campo NOMEUF está no arquivo DBF do shapefile. Aba o < Numérico
arquivo DBF para saber quais arquivo podem ser
>= Numérico
utilizados como classificadores.
<= Numérico
– o comando EXPRESSION utilizado nas linhas 29 e 35 and Lógico
fazem a seleção do que será exibido. or Lógico
eq Textual
– as expressões regulares que podem ser usadas em
objetos do tipo CLASS estão descritas na tabela ao lado. ge Textual
gt Textual
le Textual
lt Textual
KROPLA, 2005, p. 76. ne Textual

41
Exercício 4.2
Criando temas com expressões regulares.

Grave o script no arquivo chamado exercicio_42.map na pasta:


C:/ms4w/curso_mapserver/mapfiles/

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

• Parâmetros passados ao Mapserver:


– neste exemplo, foram apenas exibidos os estados foram selecionados
no parâmetro EXPRESSION.

– o campo utilizado como classificador foi NOMEUF do shapefile


estados, por meio da propriedade CLASSITEM.

– o comando EXPRESSION utilizado na linha 30 faz a seleção do que


será exibido. 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 desenhados os estados do Rio Grande do
Sul, Santa Catarina e Paraná. O caracter "|" simboliza o operador "OU"
dentro da expressão regular.

Exercício 4.3
Criando temas com expressões lógicas.

Grave o script no arquivo chamado exercicio_43.map na pasta:


C:/ms4w/curso_mapserver/mapfiles/

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

O resultado será o mapa do Brasil com os estados com mais de 20.000.000 de


habitantes (São Paulo e Rio de Janeiro) representados.

Detalhes dos parâmetros passados ao Mapserver

• Parâmetros passados ao Mapserver:


– neste exemplo, foram apenas exibidos os estados que possuem
20.000.000 ou mais de habitantes.

– o campo utilizado foi POPULACAO do shapefile estados.SHP.

– o comando EXPRESSION utilizado na linha 29 faz a seleção do que


será exibido. Neste exemplo, note que 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 29: 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 [ ].

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.

Nomeie o arquivo como exercicio_8.map e grave-o na pasta:


C:/ms4w/curso_mapserver/mapfiles/

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.

Nomeie o arquivo como web08_iniciar.html e grave-o na pasta:


C:/ms4w/apache/htdocs/curso_mapserver/templates/

52
Exercício 8
Criando a interface do usuário.

Nomeie o arquivo como web08_template.html e grave-o na pasta :


C:/ms4w/apache/htdocs/curso_mapserver/templates/

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 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.

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]".

– 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.

Modo map e modo


browse

54
Crie o mapfile que será chamado pela interface do usuário.

Crie a 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

O resultado será a mudança de posição do mapa a cada clique na área de


trabalho:

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

Onde obter mais informações

Programa I3Geo (Apache + I3Geo + Mapserver +


outros programas)
http://mapas.mma.gov.br/download/

Banco de dados PostgreSQL


http://www.postgresql.org/

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

Onde obter mais informações

www.maptools.org

65
Obrigado!!!
Prof. Dr. Marcelo Felipe Moreira Persegona

marcelo.persegona@gmail.com

Nossa arte é o conhecimento!

Referências Bibliográficas

• KANEGAE, Eduardo Patto. Curso de


Introdução ao MapServer. 2005.
• KROPLA, Bill. Beginning Mapserver:
Open Source GIS Development.
Berkeley: Apress, 2005.
• Mitchell, Tyler. Web Mapping: Ilustrated.
Sebastopol: O’Reilly, 2005.

66

You might also like