curso basico de mapserver

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.

Upload: bru123gomes

Post on 23-Jun-2015

1.153 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Curso Basico de Mapserver

1

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.

Page 2: Curso Basico de Mapserver

2

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

Apresentação do Professor

Alguns conceitos

Page 3: Curso Basico de Mapserver

3

Figura 2.3 - Latitude e Longitude

Sistemas de Coordenadas

Projeções Cartográficas

Page 4: Curso Basico de Mapserver

4

Projeção de Mercator

Projeção de Peters

Projeção ortográfica

Projeção cônica

Projeção de Goode, que modifica a de Moolweide

Projeção de Holzel

Projeção Azimutal Eqüidistante Oblíqua Centrada na Cidade

de São Paulo

Projeção de Mollweide

Projeção Azimutal Eqüidistante Polar

Page 5: Curso Basico de Mapserver

5

http://www.uff.br/mapprojections/mp_br.html

Recursos de representação de

dados

Page 6: Curso Basico de Mapserver

6

Representação: polígono

Representação: ponto

Page 7: Curso Basico de Mapserver

7

Representação: linha

Representação: círculo

Page 8: Curso Basico de Mapserver

8

Representação: raster

Alguns conceitos

Page 9: Curso Basico de Mapserver

9

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

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

Page 10: Curso Basico de Mapserver

10

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.

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

Page 11: Curso Basico de Mapserver

11

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.

Por que Software Livre?

Características do MapServer

Page 12: Curso Basico de Mapserver

12

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.

Page 13: Curso Basico de Mapserver

13

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 encodingKANEGAE, 2005.

Page 14: Curso Basico de Mapserver

14

Modos de Funcionamento

O MapServer pode ser utilizado basicamente de três modos: CGI, MapScript e WebServices.

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

Page 15: Curso Basico de Mapserver

15

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

Page 16: Curso Basico de Mapserver

16

Tipos de conexões do Mapserver

Exemplo de conexão com shapefile

Page 17: Curso Basico de Mapserver

17

Exemplo de conexão

com PostgreSQL

+ PostGis

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

Comando para transformação de um shape file para SQL

Page 18: Curso Basico de Mapserver

18

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

Exemplo de conexão com WMS

Page 19: Curso Basico de Mapserver

19

Estrutura geral de uma aplicação

MapServer

Estrutura geral de uma aplicação MapServer1. 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.

Page 20: Curso Basico de Mapserver

20

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.

Page 21: Curso Basico de Mapserver

21

Aplicação WebGIS

Estrutura de diretórios para aplicações WebGIS

O objetivo do curso

Page 22: Curso Basico de Mapserver

22

Componentes da interface

Área de trabalho

Busca textual

Seleção de camadas

Botão de Início

Mapa de referência

Tipo de ação

Tipo de imagem

Zoom + -

Page 23: Curso Basico de Mapserver

23

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 atual3. Descompactar o arquivo no raiz do c:\4. Iniciar o serviço do Apache contido dentro da distribuição ms4w

c:\ms4w\apache-install.bat5. Testar o servidor de páginas Web acessando o localhost no

navegador de Internethttp://localhost

6. Testar o I3Geohttp://localhost/i3geo/index.htm

Page 24: Curso Basico de Mapserver

24

Baixar MS4W com I3Geohttp://mapas.mma.gov.br/download/

Baixar MS4W com I3Geo

Page 25: Curso Basico de Mapserver

25

Descompactar o arquivo baixado no c:\

Instalar o serviço do Apache

Page 26: Curso Basico de Mapserver

26

Instalar o serviço do Apache

Testar o servidor de páginas Webhttp://localhost

Page 27: Curso Basico de Mapserver

27

Testar o I3Geohttp://localhost/i3geo

Testar o I3Geohttp://localhost/i3geo

Page 28: Curso Basico de Mapserver

28

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

Page 29: Curso Basico de Mapserver

29

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.

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

Page 30: Curso Basico de Mapserver

30

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

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

Page 31: Curso Basico de Mapserver

31

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.

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

Page 32: Curso Basico de Mapserver

32

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

Detalhes do Mapfile criadoExercício 1 – Mapa com uma camada temática

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

Detalhes do Mapfile criadoExercício 1 – Mapa com uma camada temática

Page 33: Curso Basico de Mapserver

33

Onde obter os códigos RGB de cores

Mapa com duas camadas temáticas

Page 34: Curso Basico de Mapserver

34

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

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

Page 35: Curso Basico de Mapserver

35

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=estadosO 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=estadosO resultado será:

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

Page 36: Curso Basico de Mapserver

36

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.

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

Mudando os parâmetros em

tempo de execução

Page 37: Curso Basico de Mapserver

37

• 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 – Mudando parâmetros em tempo de execução

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

Grave o script no arquivo chamado exercicio_3.map na pasta:C:/ms4w/curso_mapserver/mapfiles/

Page 38: Curso Basico de Mapserver

38

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

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

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=pngO resultado apresentado será a mesma imagem anterior, porém, agora a sua extensão é do tipo png:

Exercício 3.2

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.

Page 39: Curso Basico de Mapserver

39

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&mode=map&layer=estados&map_imagecolor=70+166+239&map_imagetype=png&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:

Exercício 3.3

Utilizando expressões string de valor fixo,

expressões regulares e expressões lógicas

Page 40: Curso Basico de Mapserver

40

• 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

Criando temas com expressões string.

Grave o script no arquivo chamado exercicio_41.map na pasta:C:/ms4w/curso_mapserver/mapfiles/

Exercício 4.1

Page 41: Curso Basico de Mapserver

41

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

Exercício 4.1

Detalhes dos parâmetros passados ao Mapserver

• Parâmetros passados ao Mapserver: – neste exemplo, foram desenhados apenas dois estados

do shapefile estados.shp.

– o campo NOMEUF do shapefile estados foi usado como classificador, por meio da propriedade CLASSITEM. O campo NOMEUF está no arquivo DBF do shapefile. Aba o arquivo DBF para saber quais arquivo podem ser utilizados como classificadores.

– o comando EXPRESSION utilizado nas linhas 29 e 35 fazem a seleção do que será exibido.

– as expressões regulares que podem ser usadas em objetos do tipo CLASS estão descritas na tabela ao lado.

Textualne

Textuallt

Textualle

Textualgt

Textualge

Textualeq

Lógicoor

Lógicoand

Numérico<=

Numérico>=

Numérico<

Numérico>

Numérico=

Numérico!=

Tipo de dadoOperador

KROPLA, 2005, p. 76.

Page 42: Curso Basico de Mapserver

42

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

Exercício 4.2

Page 43: Curso Basico de Mapserver

43

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

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

Grave o script no arquivo chamado exercicio_43.map na pasta:C:/ms4w/curso_mapserver/mapfiles/

Page 44: Curso Basico de Mapserver

44

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.

Exercício 4.3

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

Page 45: Curso Basico de Mapserver

45

Colocando rótulo na camada temática

Page 46: Curso Basico de Mapserver

46

Para testar o mapfile, digite:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_5.map&mode=map&layer=estados&layer=estados_rotulos

O resultado será:

Exercício 5

Criando uma camada temática

com imagem Raster

Page 47: Curso Basico de Mapserver

47

Crie o mapfile:

Para testar o mapfile, digite:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_6.map&layer=imagem_spot_vegetation&mode=map

O resultado será:

Exercício 6

Page 48: Curso Basico de Mapserver

48

Trabalhando com projeções

Crie o mapfile:

Page 49: Curso Basico de Mapserver

49

Para testar o mapfile, digite:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_7.map&layer=raster_brasil&layer=estados&mode=map

O resultado será:

Exercício 7

Criando uma interface em HTML

Page 50: Curso Basico de Mapserver

50

• Neste exercício iremos criar a nossa primeira interface de usuário em HTML.

Exercício 8

• 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 8Crie 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/

Page 51: Curso Basico de Mapserver

51

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

Page 52: Curso Basico de Mapserver

52

Exercício 8• Como funciona:

KANEGAE, 2005.

Exercício 8Criando 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/

Page 53: Curso Basico de Mapserver

53

Exercício 8Criando 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.

Page 54: Curso Basico de Mapserver

54

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

Page 55: Curso Basico de Mapserver

55

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

Crie a interface do usuário.

Page 56: Curso Basico de Mapserver

56

Para testar o mapfile, digite:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_9.map&layer=estados

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

Exercício 9

Colocando barra de escala dentro de

um mapa

Page 57: Curso Basico de Mapserver

57

Crie o mapfile:

Para testar o mapfile, digite:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_10.map&layer=estados

O resultado será:

Exercício 10

Page 58: Curso Basico de Mapserver

58

Colocando legenda dentro de um mapa

Crie o mapfile:

Page 59: Curso Basico de Mapserver

59

Para testar o mapfile, digite:

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_11.map&layer=estados

O resultado será:

Exercício 11

Fazendo consulta textual em um

mapa

Page 60: Curso Basico de Mapserver

60

Exercício 12

Page 61: Curso Basico de Mapserver

61

Page 62: Curso Basico de Mapserver

62

Page 63: Curso Basico de Mapserver

63

Integrando tudo em uma interface de

usuário

Projeto do curso

Page 64: Curso Basico de Mapserver

64

Onde obter mais informações

Programa I3Geo (Apache + I3Geo + Mapserver + outros programas)

http://mapas.mma.gov.br/download/

Banco de dados PostgreSQLhttp://www.postgresql.org/

PostGIShttp://postgis.refractions.net/

Onde obter mais informações

Page 65: Curso Basico de Mapserver

65

http://pt.wikibooks.org/wiki/I3geo

http://www.mma.gov.br

http://www.softwarepublico.gov.br

Onde obter mais informações

http://www.mapserver.org

Onde obter mais informações

www.maptools.org

Page 66: Curso Basico de Mapserver

66

Obrigado!!!Obrigado!!!

Nossa arte é o conhecimento!

Prof. Dr. Marcelo Felipe Moreira Persegona

[email protected]

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.