• Nenhum resultado encontrado

Curso sobre MapServer / Fonte: / Acesso em 04/agosto/2006

N/A
N/A
Protected

Academic year: 2021

Share "Curso sobre MapServer / Fonte: / Acesso em 04/agosto/2006"

Copied!
39
0
0

Texto

(1)

Curso sobre MapServer / Fonte: http://www.webmapit.com.br/ / Acesso em 04/agosto/2006 1. O que é Webmapping?

Introdução

• é 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 SIG1 (Sistema de Informação Geográfica) Vantagens e Desvantagens

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 web

Funcionamento

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

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

(2)

3. 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);

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

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

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

Reflexões: webmapping hoje e amanhã...

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 Consortium2 visam a definição de especificações padrão para o desenvolvimento de aplicações SIG. Dessa forma, teoricamente, será possível realizar a substituição de softwares sem a necessidade de se alterar estruturas de dados;

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.

Notas:

1. Para mais informações sobre Sistemas de Informação Geográfica consulte: • Introdução à Ciência da Geoinformação - DPI/INPE

• Wikipédia / Sistema de Informação Geográfica 2. Open Geospatial Consortium (OGC)

2. MapServer

O MapServer é um conjunto de recursos e ferramentas Open Source para o desenvolvimento de aplicações geográficas em ambiente Internet/Intranet.

O sistema MapServer foi desenvolvido utilizando-se também de outros sólidos projetos de softwares livre/abertos tais como ShapeLib, GD, FreeType, LibTIFF, LibJPEG, além de outros.

Sua plataforma de operação compreende boa parte de sistemas Unix-like (exemplo: Linux, FreeBSD), além de ser suportado também em ambientes Windows9x/NT/2000/XP. O MapServer é licenciado sob os termos da MIT License.

Histórico • 1996

o 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

(3)

o 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)

• 1998

o MapServer 2.0

§ suporte a projeção cartográfica de dados foi adicionado ( com a biblioteca PROJ.4)

§ Australian Environmental Resource Information Network: primeiro uso do MapServer fora do projeto ForNet

o David McIlhagga funda a DM Solutions • 2000

o 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

• 2001

o MapScript: a DM Solutions disponibiliza a API do MapServer para a linguagem PHP com a extensão PHP/MapScript

o Univali inicia o desenvolvimento do driver de conexão com Oracle Spatial • 2002

o os mecanismos internos do MapServer são todos re-escritos para permitirem o uso de dados oriundos de bancos de dados espaciais (Oracle Spatial, PostGIS, ArcSDE) o suporte à especificação WMS do OGC foi adicionado

• 2003

o MapServer 4.0

§ suporte a formatos matriciais de 24bits(entrada/saída) § suporte a saída em formatos PDF e SWF(flash)

§ equipe de desenvolvimento já conta com mais de 10 integrantes § 800 usuários inscritos na lista de discussão oficial

o 1st MapServer Users Meeting: o primeiro encontro de usuários MapServer, em St.Paul/Minnesota/E.U.A. reuniu 110 visitantes

o Fórum ptMapServer: inaugurado em 8 de setembro de 2003 com o objetivo de promover o uso do MapServer entre falantes da língua portuguesa

o surge a lista de discussão Yahoo MapServer Brasil • 2004

o 1.200 usuários inscritos na lista de discussão oficial

o 2nd MapServer Users Meeting: reuniu 220 pessoas e ampliou o foco para outras tecnologias Open Source para SIG

o Fórum ptMapServer é cedido ao G10/Univali

o 1° Encontro Nacional de Usuários MapServer: reuniu cerca 100 visitantes na Univali em Itajaí/SC

• 2005

o 3rd MapServer Users Meeting

o 3 livros sobre MapServer chegam ao mercado: § Web Mapping Illustrated - Tyler Mitchell

§ MapServer : Open Source GIS Development - Bill Kropla § Mapping Hacks - Shuyler Erle

Formatos de entrada

O MapServer pode ler dados nos seguintes formatos: Dados vetoriais • ShapeFiles • ArcSDE • Oracle Spatial • PostGIS • MySQL

(4)

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

(5)

Modos de funcionamento

O MapServer pode ser utilizado basicamente de três modos: CGI

Esta é a maneira mais simples de se trabalhar com o MapServer e também a abordagem que será exposta nos capítulos práticos deste 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).

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#

Nota: este modo de funcionamento não será exposto neste curso. 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. Estrutura de uma aplicação

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

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

(6)

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 o usuário poderá interagir com a aplicação.

3. Desenvolvendo uma aplicação

Nos próximos capítulos serão apresentados exercícios práticos, com o objetivo de se expor passo-a-passo conceitos fundamentais para a compreensão do desenvolvimento de aplicações webmapping usando o MapServer.

Em cada capítulo serão apresentados um ou mais exercícios práticos, os códigos-fonte envolvidos, o resultado esperado e também tópicos explicativos relacionados.

Os exercícios iniciam com a visualização de um mapa simples e ao longo de outros exercícios ganha novas configurações, e no fim tem-se a montagem de uma aplicação simples.

Pré-requisitos

Para que os exercícios a seguir possam ser executados com sucesso, por favor verifique os itens abaixo com atenção.

1. MapServer

Como este curso não trata do processo de instalação do MapServer, presume -se que você já o tenha instalado em uma estação de trabalho ou servidor e que o mesmo já esteja funcionando. Para instruções de instalação consulte o link:

http://www.webmapit.com.br/install/?lang=pt_BR ou o site oficial do MapServer. 2. Editor de textos

Recomenda-se também o uso de um editor de texto para a edição dos código-fontes (HTML, MapFiles) que serão apresentados nos exercícios.

Dica: o SciTE é um editor de texto com suporte a realce de sintaxe para várias linguagens e recursos interessantes como auto-completar e abertura de vários arquivos.

3. Convenções

Para que você possa executar os exercícios práticos com sucesso, será necessária a adoção de algumas convenções antes de prosseguirmos.

3.1) Para usuários Windows

• - observe este indicador. Toda vez que uma URL ou caminho Windows for mencionado, este indicador aparecerá

pasta raiz do servidor web: por padrão, o servidor Apache no Windows, define sua raiz de arquivos web na pasta C:/Arquivos de Programas/Apache Group/Apache/htdocs/ . Todos os exercícios tomarão esta pasta como base e caso esta não seja a sua configuração (ou esteja usando o IIS), não se esqueça de fazer as alterações necessárias antes da execução dos exercícios.

endereço do servidor: em todos os exercícios, o endereço base http://localhost será utilizado. Caso o seu servidor não seja acessível por este endereço, por favor não se esqueça de fazer as alterações necessárias antes da execução dos exercícios.

endereço do MapServer CGI: por padrão, o endereço do CGI do MapServer a ser utilizado nos exercícios será http://localhost/cgi-bin/mapserv.exe . Caso esta não seja a sua configuração, não se esqueça de fazer as alterações necessárias antes da execução dos exercícios.

3.2) Para usuários Linux

• - observe este indicador. Toda vez que uma URL ou caminho Linux for mencionado, este indicador aparecerá

pasta raiz do servidor web: em muitas distribuições Linux, a pasta raiz de arquivos do servidor Apache é /var/www/html/ . Todos os exercícios tomarão esta pasta como base e

(7)

caso esta não seja a sua configuração, não se esqueça de fazer as alterações necessárias antes da execução dos exercícios.

endereço do servidor: em todos os exercícios, o endereço base http://localhost será utilizado. Caso o seu servidor não seja acessível por este endereço, por favor não se esqueça de fazer as alterações necessárias antes da execução dos exercícios.

endereço do MapServer CGI: por padrão, o endereço do CGI do MapServer a ser utilizado nos exercícios será http://localhost/cgi-bin/mapserv . Caso esta não seja a sua configuração, não se esqueça de fazer as alterações necessárias antes da execução dos exercícios.

4. Mapas

Os exercícios a seguir foram criados com base nos mapas deste arquivo. Este arquivo contém mapas do estado de São Paulo/Brasil. Siga as instruções a seguir para extrair o conteúdo desde arquivo:

• clique aqui para fazer o download do arquivo learn2mapit-intro_mapserver.zip (tamanho do arquivo: 1,04Mb)

• descompacte o arquivo learn2mapit-intro_mapserver.zip para a pasta: o C:/Arquivos de Programas/Apache Group/Apache/htdocs/

ou

o /var/www/html/

• certifique-se que a pasta learn2mapit/tmp tenha privilégios de escrita para o servidor web: o Clique com o botão direito na pasta C:/Arquivos de Programas/Apache

Group/Apache/htdocs/learn2mapit/tmp/ , depois em Propriedades e na aba Segurança conceda a permissão "Modificar" a todos usuários do computador ou o chmod -R 777 /var/www/html/learn2mapit/tmp/

Para mais informações sobre o estado de São Paulo/Brasil consulte: • WikiMedia Commons - Maps of Brazil

• Google Maps • WikiPedia - Brasil • WikiPedia - São Paulo Dica

Para explorar os mapas ShapeFiles verifique na seção Links as opções disponíveis na categoria Desktop SIG.

Um mapa básico

No pacote .zip extraído no capítulo anterior, constam quatro arquivos shapefile do estado de São Paulo, sendo eles:

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

Este primeiro exercício, visa exibir um mapa simples do contorno do estado de São Paulo no seu navegador como a figura a seguir:

MapFile

Crie um arquivo chamado exercicio01.map na pasta

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

(8)

2. Edite o arquivo exercicio01.map e insira nele o seguinte conteúdo:

Resultado

Para visualizar o resultado, execute o link apropriado no seu navegador:

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio01.map&mode=map

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio01.map&mode=map Uma imagem como esta será carregada no seu navegador.

Explicando...

O primeiro passo é quebrar a URL (link) acessada em várias partes para melhor compreendermos "que link é este":

http://localhost

/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio01.map&mode=map Dividindo esta url em várias partes teremos:

localhost : é o endereço do servidor web, ou o típico endereço www.meusite.com.br /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. 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.

E agora, vamos verificar a definição do MapFile linha por linha:

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: 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 devem ser especificados em pixels.

(9)

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

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.

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. Agora que você já viu como criar uma mapa básico contendo um único layer, veja no próximo capítulo como fazer para adicionar um novo layer ao seu mapa.

Adicionando um novo layer

Neste exercício, veremos como fazer para adicionar um novo layer do MapFile. Será adicionado um layer de pontos representando as sedes municipais do estado de São Paulo. O resultado final será a exibição de uma imagem no navegador como esta: MapFile

1. Crie um arquivo chamado exercicio02.map na pasta

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/

ou /var/www/html/learn2mapit/intro_mapserver/

(10)

Observação: repare que a única diferença em relação ao MapFile do exercício anterior é o trecho destacado pelo quadro amarelo.

Resultado

Para visualizar o resultado, execute o link apropriado no seu navegador:

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio02.map&mode=map&layer=rvia

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio02.map&mode=map&lay er=rvia

Uma imagem como esta será carregada no seu navegador. Explicando...

Observando a URL temos:

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio02.map&mode=map&lay er=rvia

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.

E observando as linhas referentes a este novo layer no MapFile temos:

Linha 19: o nome dado ao layer é o nome usado para a chamada deste layer na URL. Repare que como 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, clique no link apropriado abaixo:

(11)

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio02.map&mode=legend&layer=rvia

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio02.map&mode=legend &layer=rvia

Linha 24: no caso de linhas, utiliza-se a propriedade COLOR para definir a cor das linhas. Mudando propriedades dinamicamente

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 através da URL de acesso ao MapServer CGI conforme mostrado nos exemplos do exercício a seguir.

MapFile

Crie um arquivo chamado exercicio03.map na pasta

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/

ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio03.map e insira nele o seguinte conteúdo( observe que é o mesmo conteúdo do arquivo exercicio02.map do capítulo anterior):

Alterando a cor de fundo da imagem

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio02.map&mode=map&layer=rvia& map_imagecolor=70+166+239 http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio03.map& mode=map&layer=rvia&map_imagecolor=70+166+239

Uma imagem como esta será carregada no seu navegador.

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

(12)

Alterando o tipo de saída da imagem http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio02.map&mode=map&layer=rvia& map_imagetype=png http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio03.map& mode=map&layer=rvia&map_imagetype=png

Neste exemplo a imagem de saída tem seu tipo alterado para PNG através do 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.

Alterando várias opções ao mesmo tempo

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio02.map&mode=map&layer=rvia& map_imagecolor=70+166+239&map_imagetype=png&map_size=600+450

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio03.map&

mode=map&layer=rvia&map_imagecolor=70+166+239&map_imagetype=png&map_size=6 00+450

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.

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. Veja neste capítulo alguns exemplos.

E agora que você já deve ter se acostumado à sintaxe básica de MapFiles, as listagens de códigos MapFile daqui pra frente serão apresentadas como textos e não como imagens. Dessa forma, você não precisará mais digitar os MapFiles, podendo copiar os códigos listados nos capítulos a partir deste. :-)

Criando temas com expressões string MapFile

1. Crie um arquivo chamado exercício04.1.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio04.1.map e insira nele o seguinte conteúdo:

MAP EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/" SIZE 400 300 LAYER NAME "uf" TYPE POLYGON DATA "sp_uf" STATUS DEFAULT CLASS

(13)

OUTLINECOLOR 0 0 0 COLOR 255 255 192 END END LAYER NAME "rvia" TYPE LINE DATA "sp_rvia"

CLASSITEM "PRINCIPAL" # linha 22

CLASS # linha 23

NAME "Rodovia principal" # linha 24

COLOR 255 128 0 # linha 25

EXPRESSION "SIM" # linha 26

END # linha 27

CLASS # linha 28

NAME "Rodovia secundária"#linha 29

COLOR 32 64 128 # linha 30

EXPRESSION "NAO" # linha 31

END # linha 32

END

END

Resultado

Para visualizar o resultado, execute o link apropriado no seu navegador:

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio04.1.map&mode=map&layer=rvia

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio04.1.map&mode=map&la yer=rvia

Uma imagem como esta será carregada no seu navegador. Explicando...

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. Ou seja, qualquer coisa escrita após um # será ignorado pelo MapServer.

Linha 22: 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 26: 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. Repare que a string deve estar preferencialmente entre aspas duplas.

Linha 31: e no caso da 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 cnalmeida MapFile

1. Crie um arquivo chamado exercicio04.2.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

(14)

2. Edite o arquivo exercicio04.2.map e insira nele o seguinte conteúdo: MAP EXTENT -53.11 -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

LAYER

NAME "muni" #linha 19

TYPE POLYGON #linha 20

DATA "sp_muni" #linha 21

CLASSITEM "NOME" #linha 22

CLASS #linha 23

OUTLINECOLOR 0 0 0 #linha 24

COLOR 255 255 32 #linha 25

EXPRESSION /ARARAQUARA|SAOCARLOS|RIBEIRAOPRETO/ #linha 26

END

END

END

Resultado

Para visualizar o resultado, execute o link apropriado no seu navegador:

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio04.2.map&mode=map&layer=muni

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio04.2.map&mode=map&la yer=muni

Uma imagem como esta será carregada no seu navegador. Explicando...

Neste exemplo, foi apresentado um novo layer (muni) que tem como base o shapefile sp_muni.shp( veja Linha 21). No caso, apenas três municípios deste layer foram desenhados. Linha 22: o campo NOME do shapefile sp_muni foi usado como classificador, através da propriedade CLASSITEM.

Linha 26: 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.

MapFile

1. Crie um arquivo chamado exercicio04.3.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

(15)

2. Edite o arquivo exercicio04.3.map e insira nele o seguinte conteúdo: MAP EXTENT -53.11 -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 LAYER NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS #linha 22 OUTLINECOLOR 0 0 0 #linha 23 COLOR 255 128 128 #linha 24

EXPRESSION ( [PSMULHERES] > [PSHOMENS] ) #linha 25

END

END END

Resultado

Para visualizar o resultado, execute o link apropriado no seu navegador:

http://localhost/cgi-bin/mapserv.exe?map=C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/exercicio04.3.map&mode=map&layer=muni

http://localhost/cgi-bin/mapserv?map=/var/www/html/learn2mapit/intro_mapserver/exercicio04.3.map&mode=map&la yer=muni

Uma imagem como esta será carregada no seu navegador. Explicando...

Neste último 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 25: as expressões lógicas devem ser definidas entre parênteses e podem conter operadores como >, >=, < ou <=. Os campos (atributos) devem 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)

Definindo uma interface de usuário

No capítulo Estrutura de uma aplicação vimos quatro elementos básicos que compõem uma aplicação MapServer:

1. Mapas 2. MapFile

3. Formulário de inicialização 4. Arquivos Template

Já vimos pelos capítulos anteriores como fazer para que MapFiles sejam configurados para carregar Mapas. Agora, veremos como fazer para inicializar aplicações MapServer com interface de usuário previamente definidas.

(16)

MapFile

1. Crie um arquivo chamado exercicio05.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio05.map e insira nele o seguinte conteúdo:

MAP

EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/"

SIZE 400 300

STATUS ON# linha 5 : o STATUS quando definido como ON

# no objeto MAP, informa para o MapServer que este deverá gerar

# imagens temporárias do Mapa no diretório definido em WEB->IMAGEPATH.

NAME "exercicio05"# linha 8: esta 'string' define o

# prefixo que será usado para nomear as imagens temporárias geradas.

WEB # linha 11: inicia a declaração do objeto WEB.

# Este objeto é necessário quando se deseja definir uma interface

# de usuário para a aplicação.

IMAGEPATH "../tmp/" # linha 14: 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 "/learn2mapit/tmp/" # linha 18: informa a

# URL que será usada para localizar as imagens temporárias.

TEMPLATE "exercicio05_web_template.html" # linha 20:

# 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. END 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 LAYER NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS NAME "Municípios" OUTLINECOLOR 144 144 144 COLOR 255 192 192 END END LAYER NAME "rvia" TYPE LINE DATA "sp_rvia" CLASSITEM "PRINCIPAL" CLASS

NAME "Rodovia principal" COLOR 255 128 0

(17)

END CLASS

NAME "Rodovia secundária" COLOR 32 64 128 EXPRESSION "NAO" END END END Formulário de inicialização

1. Crie um arquivo chamado exercicio05_iniciar.html na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio05_iniciar.html e defina seu conteúdo de acordo com sua plataforma (Windows ou Linux).

versão Windows: clique aqui para visualizar. versão Linux: clique aqui para visualizar.

Linha 5: 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.

Linha 7: o parâmetro program, aqui enviado na forma de um parâmetro oculto (hidden), tem o mesmo valor do item especificado na linha 5 e é necessário para que a aplicação funcione adequadamente após sua inicialização.

Linha 9: o parâmetro map indica o MapFile que será processado pelo MapServer CGI. Arquivo Template

1. Crie um arquivo chamado exercicio05_web_template.html na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio05_web_template.html e insira nele o seguinte conteúdo: clique aqui para visualizar.

Note que este arquivo foi referenciado no MapFile na linha 20, na propriedade TEMPLATE do objeto WEB.

Resultado

Para testar, abra uma janela do seu navegador e digite o endereço: http://localhost/learn2mapit/intro_mapserver/exercicio05_iniciar.html

E então, para iniciar a aplicação, clique no botão Iniciar.

Após a inicialização da aplicação, você deverá ver uma janela como esta. Explicando...

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( 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 assim sendo, o MapServer procurará pelo arquivo exercicio05_web_template.html que foi definido na propriedade TEMPLATE do objeto WEB na linha 20 do MapFile exercicio05.map.

(18)

Existindo o arquivo Template, o MapServer vai processar este arquivo, e substituir todas as palavras entre colc hetes("[]" ) 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:

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 através do formulário de inicialização (no arquivo exercicio05_iniciar.html) e deve ser mantida através da declaração feita na linha 8.

Linha 8: nesta linha vemos 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, nesta linha 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.

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. Ou em outras palavras, 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. 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(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 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 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 melhor compreensão do processamento do arquivo template, execute uma operação qualquer na aplicação e seguida selecione a opção "Exibir código-fonte" no navegador e então compare o código HTML resultante com o código HTML definido no arquivo template.

(19)

Para mais informações sobre os parâmetros usados em arquivos Template, veja na seção Links os itens "CGI Reference" e "Template Reference".

Usando símbolos

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.

Veja neste capítulo alguns exemplos de utilização de símbolos em aplicações MapServer. Simbologia de pontos

MapFile

1. Crie um arquivo chamado exercicio06.1.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio06.1.map e insira nele o seguinte conteúdo:

MAP EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/" SIZE 400 300 STATUS ON NAME "exercicio06"

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 WEB IMAGEPATH "../tmp/" IMAGEURL "/learn2mapit/tmp/" TEMPLATE "exercicio06_web_template.html" END LAYER NAME "uf" TYPE POLYGON DATA "sp_uf" STATUS DEFAULT CLASS

(20)

OUTLINECOLOR 0 0 0 COLOR 255 255 192 END END LAYER NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS NAME "Municípios" OUTLINECOLOR 144 144 144 COLOR 255 192 192 END END LAYER NAME "rvia" TYPE LINE DATA "sp_rvia" CLASSITEM "PRINCIPAL" CLASS

NAME "Rodovia principal" COLOR 255 128 0

EXPRESSION "SIM" END CLASS

NAME "Rodovia secundária" COLOR 32 64 128 EXPRESSION "NAO" 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 pra representar o layer

SIZE 3 # linha 71: tamanho do símbolo, em pixels

END

END END

Formulário de inicialização

1. Crie um arquivo chamado exercicio06_iniciar.html na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio06_iniciar.html e defina seu conteúdo de acordo com sua plataforma(Windows ou Linux).

versão Windows: clique aqui para visualizar. versão Linux: clique aqui para visualizar.

NOTA: as linhas 11 e 12 definem para a aplicação que os layers rvia e sede já aparecerão ligados após sua inicialização.

(21)

Arquivo Template

Crie um arquivo chamado exercicio06_web_template.html na pasta: C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio06_web_template.html e insira nele o seguinte conteúdo: • clique aqui para visualizar.

Note que este arquivo foi referenciado no MapFile na linha 20, na propriedade TEMPLATE do objeto WEB.

Resultado

Para testar, abra uma janela do seu navegador e digite o endereço: http://localhost/learn2mapit/intro_mapserver/exercicio06_iniciar.html

Em seguida, clique no botão Iniciar para executar a aplicação e observe o layer "Sedes municipais" representado na forma de pequenos círculos vermelhos no mapa.

Faça um teste! Altere, por exemplo, o valor SIZE para 5 na linha 71 do MapFile e reinicie a aplicação. O resultado deve ser algo parecido com isto aqui.

Usando imagens como símbolos

Neste exemplo veremos como criar um layer de pontos colocando uma imagem (ícone) sobre pontos do layer.

MapFile

1. Crie um arquivo chamado exercicio06.2.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio06.2.map e insira nele o seguinte conteúdo:

MAP EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/" SIZE 400 300 STATUS ON NAME "exercicio06" SYMBOL NAME "SYM_CIRCULO" TYPE ELLIPSE FILLED TRUE POINTS 1 1 END END SYMBOL NAME "SYM_PONTO"

TYPE PIXMAP# linha 19: símbolos de tipo PIXMAP são símbolos definidos por uma imagem

IMAGE "alfinete.png" # linha 20: caminho relativo ou absoluto do arquivo de image que será usado como símbolo

END WEB IMAGEPATH "../tmp/" IMAGEURL "/learn2mapit/tmp/" TEMPLATE "exercicio06_web_template.html" END LAYER

(22)

NAME "uf" TYPE POLYGON

DATA "sp_uf" STATUS DEFAULT

CLASS

NAME "São Paulo" OUTLINECOLOR 0 0 0 COLOR 255 255 192 END END LAYER NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS NAME "Municípios" OUTLINECOLOR 144 144 144 COLOR 255 192 192 END END LAYER NAME "rvia" TYPE LINE DATA "sp_rvia" CLASSITEM "PRINCIPAL" CLASS

NAME "Rodovia principal" COLOR 255 128 0

EXPRESSION "SIM" END CLASS

NAME "Rodovia secundária" COLOR 32 64 128 EXPRESSION "NAO" END END LAYER NAME "sede" TYPE POINT DATA "sp_sede" CLASS

NAME "Sedes municipais" COLOR 255 0 0 SYMBOL "SYM_CIRCULO" SIZE 3 END END LAYER NAME "capital" TYPE POINT

DATA "sp_sede" # este layer usa os mesmo dados que o layer 'Sedes municipais'

# contudo, somente o ponto com NOME = SAO PAULO será desenhado

CLASSITEM "NOME"# linha 86: especifica o nome do campo do shapefile que será usado como classificador

CLASS

EXPRESSION "SAO PAULO" # linha 88: somente os objetos onde NOME = "SAO PAULO" serão desenhados

NAME "Capital"

SYMBOL "SYM_PONTO"# linha 90: nesta linha especifica-se o nome do símb olo que será usado para desenhar esta classe

COLOR -1 -1 -1 # linha 91: a cor da classe deve ser definida como transparente( -1 -1 -1), pois os objetos em si não

(23)

desenhados

END

STATUS DEFAULT # linha 94: com STATUS = DEFAULT este layer sempre será desenhado

END END

3. Em seguida, clique com o botão direito nesta imagem e salve-a, com o nome de alfinete.png, na mesma pasta que o arquivo exercicio06.2.map .

Resultado

Abra uma janela do seu navegador e digite o endereço: http://localhost/learn2mapit/intro_mapserver/exercicio06_iniciar.html

Em seguida, altere o campo MapFile do formulário de modo que este aponte para o caminho completo do arquivo exercicio06.2.map .

Na seqüência, clique no botão Iniciar.

E então você verá a figura de um alfinete sobre a cidade de São Paulo. Legenda e Barra de escala

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. Veja no exemplo abaixo como adicionar uma legenda a uma aplicação MapServer.

MapFile

1. Crie um arquivo chamado exercicio07.1.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio07.1.map e insira nele o seguinte conteúdo:

MAP EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/" SIZE 400 300 STATUS ON NAME "exercicio07" SYMBOL NAME "SYM_CIRCULO" TYPE ELLIPSE FILLED TRUE POINTS 1 1 END END SYMBOL NAME "SYM_PONTO" TYPE PIXMAP IMAGE "alfinete.png" END WEB IMAGEPATH "../tmp/" IMAGEURL "/learn2mapit/tmp/" TEMPLATE "exercicio07_web_template.html" END

LEGEND# linha 29: inicia a declaração da Legenda

(24)

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 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 LAYER NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS NAME "Municípios" OUTLINECOLOR 144 144 144 COLOR 255 192 192 END END LAYER NAME "rvia" TYPE LINE DATA "sp_rvia" CLASSITEM "PRINCIPAL" CLASS

NAME "Rodovia principal" COLOR 255 128 0

EXPRESSION "SIM" END CLASS

NAME "Rodovia secundária" COLOR 32 64 128 EXPRESSION "NAO" END END LAYER NAME "sede" TYPE POINT DATA "sp_sede" CLASS

NAME "Sedes municipais" COLOR 255 0 0 SYMBOL "SYM_CIRCULO" SIZE 3 END END LAYER NAME "capital" TYPE POINT DATA "sp_sede" CLASSITEM "NOME" CLASS

EXPRESSION "SAO PAULO" NAME "Capital" SYMBOL "SYM_PONTO"

(25)

COLOR -1 -1 –1 END STATUS DEFAULT END END Formulário de Inicialização

1. Crie um arquivo chama do exercicio07_iniciar.html na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio07_iniciar.html e defina seu conteúdo de acordo com sua plataforma(Windows ou Linux).

versão Windows: clique aqui para visualizar. versão Linux: clique aqui para visualizar. Arquivo Template

1. Crie um arquivo chamado exercicio07_web_template.html na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/

ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio07_web_template.html e insira nele o seguinte conteúdo: • clique aqui para visualizar.

Resultado

Para testar, abra uma janela do seu navegador e digite o endereço: http://localhost/learn2mapit/intro_mapserver/exercicio07_iniciar.html

Em seguida, clique no botão Iniciar e observe a Legenda ao lado da imagem do mapa. A legenda é incluída na interface através da seguinte linha do arquivo template:

<img src="[legend]" alt="Legenda">

A palavra reservada legend é substituída em tempo de execução pelo caminho completo da imagem temporária que é gerada pelo MapServer para representação do objeto de Legenda.

Adicionando uma Barra de escala

A Barra de escala é outro componente de importância em qualquer mapa. Através da Barra de escala o usuário poderá deduzir distâncias e dimensões de objetos representados no mapa. Veja no exemplo abaixo como inserir uma barra de escala em uma aplicação MapServer. MapFile

1. Crie um arquivo chamado exercicio07.2.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio07.2.map e insira nele o seguinte conteúdo:

MAP EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/" SIZE 400 300 STATUS ON NAME "exercicio07"

UNITS DD# linha 7: o parâmetro UNITS define qual o sistema de unidades de medidas

# estão definidos os mapas(shapefiles) da aplicação. Neste caso, os mapas do estado de São Paulo

(26)

# DD ( Decimal Degree) na definição do parâmetro UNITS. Caso o UNITS não seja especificado,

# os valores de escala aparecerão errados, pois o valor padrão deste parâmetro é milhas ( MILES). SYMBOL NAME "SYM_CIRCULO" TYPE ELLIPSE FILLED TRUE POINTS 1 1 END END SYMBOL NAME "SYM_PONTO" TYPE PIXMAP IMAGE "alfinete.png" END WEB IMAGEPATH "../tmp/" IMAGEURL "/learn2mapit/tmp/" TEMPLATE "exercicio07_web_template.html" END LEGEND IMAGECOLOR 255 255 255 KEYSIZE 12 10 STATUS ON END

SCALEBAR# linha 40: inicia a declaração de um objeto Barra de escala

STYLE 0 # linha 41: define o estilo da barra de escala

# Para STYLE = 1 , a barra de escala será desenhada como uma linha horizontal de cor igual a SCALEBAR->COLOR

# Para STYLE = 0 , a barra de escala será desenhada como uma barra horizontal onde

# os segmentos ímpares(1o,3o,...) terão a cor igual a SCALEBAR->COLOR e

# os segmentos pares(2o,4o...) terão a cor igual a SCALEBAR->BACKGROUNDCOLOR

COLOR 255 0 0 # linha 46: define a cor de fundo dos segmentos ímpares

BACKGROUNDCOLOR 192 192 192 # linha 47: define a cor de fundo dos segmentos pares

INTERVALS 3 # linha 48: define em quantos segmentos a barra de escala será dividida

OUTLINECOLOR 0 0 0 # linha 49: define a cor de contorno da barra de escala

SIZE 200 3 # linha 50: define as dimensões( Largura x Altura ) em pixels da barra de escala

STATUS ON# linha 51: quando STATUS = ON, a imagem temporária da barra de escala será criada.

# Quando STATUS = EMBED, a imagem da barra de escala será inserida na imagem do mapa

UNITS KILOMETERS # linha 53: define qual unidade de medida será mostrada na barra de escala

# Poder ser KILOMETERS, METERS, MILES, FEET ou INCHES

END 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

(27)

NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS NAME "Municípios" OUTLINECOLOR 144 144 144 COLOR 255 192 192 END END LAYER NAME "rvia" TYPE LINE DATA "sp_rvia" CLASSITEM "PRINCIPAL" CLASS

NAME "Rodovia principal" COLOR 255 128 0

EXPRESSION "SIM" END CLASS

NAME "Rodovia secundária" COLOR 32 64 128 EXPRESSION "NAO" END END LAYER NAME "sede" TYPE POINT DATA "sp_sede" CLASS

NAME "Sedes municipais" COLOR 255 0 0 SYMBOL "SYM_CIRCULO" SIZE 3 END END LAYER NAME "capital" TYPE POINT DATA "sp_sede" CLASSITEM "NOME" CLASS

EXPRESSION "SAO PAULO" NAME "Capital" SYMBOL "SYM_PONTO" COLOR -1 -1 -1 END STATUS DEFAULT END END Resultado

Abra uma janela do seu navegador e digite o endereço:

http://localhost/learn2mapit/intro_mapserver/exercicio07_iniciar.html

Em seguida, altere o campo MapFile do formulário de modo que este aponte para o caminho completo do arquivo exercicio07.2.map .

Na seqüência, clique no botão Iniciar.

E então você poderá ver a figura da Barra de escala, logo abaixo da imagem do mapa. A Barra de escala é inserida no seguinte trecho do arquivo template( linha 16):

(28)

<img src="[scalebar]"> Escala = 1:[scale]

A palavra reservada scalebar é substituída em tempo de execução pelo caminho completo da imagem temporária que é gerada pelo MapServer para representação do objeto de Barra de escala.

Mapa de Referência

Neste capítulo veremos como criar um mapa de referência em uma aplicação MapServer. O mapa de referência é uma miniatura do mapa de navegação que permite ao usuário saber qual a área visualização atual do mapa de navegação em relação à extensão total do mapa.

Veja a figura abaixo:

Repare que o mapa de referência exibe um pequeno retângulo vermelho que representa a extensão corrente do mapa de navegação.

MapFile

1. Crie um arquivo chamado exercicio08.map na pasta:

C:/Arquivos de Programas/Apache Group/Apache/htdocs/learn2mapit/intro_mapserver/ ou /var/www/html/learn2mapit/intro_mapserver/

2. Edite o arquivo exercicio08.map e insira nele o seguinte conteúdo:

MAP EXTENT -53.11 -25.312 -44.161 -19.779 SHAPEPATH "../mapas/" SIZE 400 300 STATUS ON NAME "exercicio08" UNITS DD SYMBOL NAME "SYM_CIRCULO" TYPE ELLIPSE FILLED TRUE POINTS 1 1 END END SYMBOL NAME "SYM_PONTO" TYPE PIXMAP IMAGE "alfinete.png" END WEB

(29)

IMAGEPATH "../tmp/" IMAGEURL "/learn2mapit/tmp/" TEMPLATE "exercicio08_web_template.html" END LEGEND IMAGECOLOR 255 255 255 KEYSIZE 12 10 STATUS ON END SCALEBAR STYLE 0 COLOR 255 0 0 BACKGROUNDCOLOR 192 192 192 INTERVALS 3 OUTLINECOLOR 0 0 0 SIZE 200 3 STATUS ON UNITS KILOMETERS END

REFERENCE# linha 47: inicia a declaração do objeto mapa de referência

IMAGE "referencia.png" # linha 48: define o caminho relativo ou caminho completo

# para o arquivo de imagem que será usado como mapa de referência

EXTENT -53.11 -25.312 -44.161 -19.779 # linha 50: define o retângulo envolvente

# do mapa representado no mapa da imagem de referência.

SIZE 100 75 # linha 52: define as dimensões( Largura x Altura) em pixels

# da imagem do mapa de referência. Geralmente, as dimensões do mapa de referência

# são proporcionais às dimensões do mapa de navegação ( MAP->SIZE )

OUTLINECOLOR 255 0 0 # linha 55: define a cor da borda do retângulo

# que é desenhado sobre o mapa de referência

COLOR -1 -1 -1 # linha 57: define a cor de preenchimento

# do retângulo que é desenhado sobre o mapa de referência.

# O valor "-1 -1 -1" indica 'transparência'. Ou seja, o retângulo será desenhado sem preenchimento

MAXBOXSIZE 74 # linha 60: (valor em pixels) se a Largura ou Altura do retângulo de referência

# for maior que MAXBOXSIZE, então o retângulo de referência não é desenhado

STATUS ON# linha 62: quando STATUS = ON, a imagem temporária

# do mapa de referência será criada.

END 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 LAYER NAME "muni" TYPE POLYGON DATA "sp_muni" CLASS NAME "Municípios" OUTLINECOLOR 144 144 144 COLOR 255 192 192 END END LAYER NAME "rvia"

Referências

Documentos relacionados

13 Introdução ao MapServer ● Arquitectura Dados Serviços Servidor WEB Servidor Mapas Aplicações •Desktop •WEB.. Instalação

Consoante dispõe o Código de Posturas do Município de Niterói, a autorização para o exercício do comércio ambulante, a verificação do efetivo cumprimento da

f) Os espagos verdes apresentados deverao ser mais pormenorizados, assegurando que a estrutura arb6rea seja ordenada e coerente, devendo tambem ser apresentados

Entretanto, o que se observa, também, é que o Parque da Cidade acaba não sendo totalmente explorado durante uma visita escolar por causa de diversos fatores,

A Escala de Práticas Docentes para a Criatividade na Educação Superior foi originalmente construído por Alencar e Fleith (2004a), em três versões: uma a ser

Você já viu ele dando presentinhos e sendo super gentil com as mulheres? Pois é, por isso essa é mais uma crença errada. Quando falo isso, não quero que você seja também um

Em caso de rotura de stocks, reservamo-nos no direito de envio em várias expedições ou no não fornecimento desses produto.. Esta tabela pode sofrer alterações sem

1) As versões em hebraico (uma derivação do fenício) que existem, foram feitas quando ninguém mais falava hebraico. Os próprios judeus, quando “re-traduziram o Velho