Professional Documents
Culture Documents
Criando mapas usando o Mapserver no modo CGI por meio de um programa em HTML
Prof. Dr. Marcelo Felipe Moreira Persegona
Crditos
Este curso foi elaborado a partir do Curso de Introduo 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.
Apresentao do Professor
Marcelo Felipe Moreira Persegona doutor em Poltica e Gesto Ambiental pela Universidade de Braslia - UnB (2010) e mestre em Desenvolvimento Sustentvel com nfase em Poltica e Gesto de Cincia e Tecnologia pela UnB (2005) e graduado em Cincia da Computao pela Universidade Catlica de Braslia - UCB (1998). Atualmente professor da Faculdade SENAC e exerce a funo de Diretor de Projetos na IP Consultoria e Informtica Ltda., associado Associao Brasileira dos Analistas de Inteligncia Competitiva, pesquisador da Universidade de Braslia e da American Association for the Advancement of Sciences nos temas de Cincia e Tecnologia e Desenvolvimento Sustentvel. Tem experincia na rea de Cincia da Computao, atuando principalmente nos seguintes temas: gesto do conhecimento, gesto da informao, Tecnologia da Informao, Sistemas de Informaes Geogrficas (SIG) e mapserver.
Alguns conceitos
Sistemas de Coordenadas
Projees Cartogrficas
Projeo de Mercator
Projeo ortogrfica
Projeo de Mollweide
Projeo de Holzel
Projeo Azimutal Eqidistante Oblqua Centrada na Cidade de So Paulo Projeo Azimutal Eqidistante Polar
http://www.uff.br/mapprojections/mp_br.html
Representao: polgono
Representao: ponto
Representao: linha
Representao: crculo
Representao: raster
Alguns conceitos
Caractersticas do MapServer
Formatos de Sada
O MapServer pode gerar mapas nos seguintes formatos: * PNG * JPEG * GIF * WBMP (para WAP) * SWF (Flash) * PDF * SVG * DXF * formatos GDAL
KANEGAE, 2005.
Funcionalidades
* indexao espacial para ShapeFiles * customizao por meio de arquivos "template" ou MapScript * seleo de objetos por ponto, rea, valor ou item * suporte a fontes TrueType * legenda, barra de escala, mapa de referncia e controles de navegao * desenho de objetos de acordo com a escala * mapas temticos a partir de expresses lgicas, regulares ou constantes string * sistema anti-coliso para rtulos (labels) * reprojeo de dados cartogrficos em tempo de execuo (PROJ.4) * configurao de parmetros via URLs * compatibilidade OGC o WMS - implementa os modos servidor e cliente o WFS - implementa os modos servidor e cliente o WCS - implementa o modo servidor o WMC o SLD o GML o Filter encoding KANEGAE, 2005.
Modos de Funcionamento
O MapServer pode ser utilizado basicamente de trs modos: CGI, MapScript e WebServices. CGI
Esta a maneira mais simples de se trabalhar com o MapServer e tambm a abordagem que ser exposta neste curso. Quando se utiliza o MapServer em modo CGI, o seu arquivo executvel deve ser colocado em diretrio apropriado do servidor web. Este executvel ir receber parmetros de inicializao da aplicao webmapping, processar as requisies solicitadas e retornar ao aplicativo cliente (navegador) o resultado esperado (imagens do mapa, legenda, barra de escala, mapa de referncia, ou mesmo cdigos HTML).
KANEGAE, 2005.
MapScript
Historicamente o conceito do MapScript foi introduzido em 2001 quando a canadense DM Solutions disponibilizou a API do MapServer para a linguagem de programao PHP, em uma extenso chamada de PHP/MapScript. De maneira sucinta, o MapScript a disponibilizao dos recursos do MapServer para linguagens de programao. Dessa forma, pode-se combinar os recursos do MapServer com recursos da sua linguagem de programao preferida, visando a criao de aplicaes com um grau de customizao maior, eventualmente no atingido com aplicaes do MapServer em modo CGI. O MapServer MapScript est disponvel para as seguintes linguagens de programao: * PHP * Python * Perl * Ruby * TCL * Java * C#
WebServices
O MapServer implementa algumas especificaes do Open Geospatial Consortium - e mais precisamente as especificaes WMS, WFS e WCS - que permitem o desenvolvimento de aplicaes que fazem o MapServer operar como um servio de mapas via web. Dessa forma, pode-se utilizar o MapServer para disponibilizar dados via web que sero acessados via aplicaes desktop como ArcView, ArcExplorer, ArcGIS, Quantum GIS, JUMP, uDig ou mesmo por aplicaes web. Nota: este modo de funcionamento no ser exposto neste curso.
KANEGAE, 2005.
Opes de parmetros do comando shp2pgsql para transformao de um shape file para SQL
KANEGAE, 2005.
O objetivo do curso
Componentes da interface
Boto de Incio
rea de trabalho
Busca textual
2. 3. 4. 5.
Baixar o arquivo:
v3_9_windows_ms4w_20080324.zip ou a verso mais atual
Descompactar o arquivo no raiz do c:\ Iniciar o servio do Apache contido dentro da distribuio ms4w
c:\ms4w\apache-install.bat
6.
Testar o I3Geo
http://localhost/i3geo/index.htm
Testar o I3Geo
http://localhost/i3geo
Testar o I3Geo
http://localhost/i3geo
Estados do Brasil
Camada do tipo polgono
Sedes Municipais
Camada do tipo ponto
Rodovias Federais
Camada do tipo linha
Spot Vegetation
Camada do tipo raster
Este primeiro exerccio, tem por finalidade criar um mapa simples do contorno do Brasil no seu navegador de Internet.
C:/ms4w/curso_mapserver/mapfiles/
http://localhost/cgi-bin/mapserv.exe? map=/ms4w/curso_mapserver/mapfiles/exercicio_1.map&mode=map
O resultado ser:
onde:
localhost: o endereo do servidor web /cgi-bin/mapserv.exe: indica o arquivo executvel (binrio) do MapServer CGI. Neste caso, ele se encontra na pasta cgi-bin map: este parmetro indica a localizao do MapFile a ser interpretado pelo MapServer. O parmetro map essencial para a inicializao de uma aplicao MapServer. mode: este parmetro indica o modo de operao do MapServer. Neste caso, o modo map resultada na gerao da imagem do mapa da aplicao.
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 dimenses (largura X altura) da imagem do mapa. Os valores de Largura e Altura da imagem deve ser especificados em pixels.
Neste exerccio, veremos como fazer para adicionar duas camadas temticas (layers) ao MapFile. E veremos como apresentar a legenda das camadas que esto sendo exibidas.
C:/ms4w/curso_mapserver/mapfiles/
onde:
layer: este parmetro indica ao MapServer que o layer de nome estados deve ser desenhado. O uso deste parmetro foi necessrio porque este novo layer, ao contrrio do layer brasil, no est com o parmetro STATUS definido.
O MapServer possui a caracterstica de permitir que propriedades de seus objetos no MapFile sejam manipulados em tempo de execuo. Para isto, parmetros podem ser passados por meio da URL de acesso ao MapServer CGI, conforme veremos nos exemplos do exerccio a seguir.
Exerccio 3
C:/ms4w/curso_mapserver/mapfiles/
Exerccio 3.1
Para alterar a cor do fundo da imagem, acrescente a URL anterior:
http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_3. map&mode=map&layer=estados&map_imagecolor=70+166+239
O resultado ser:
Neste link o parmetro map_imagecolor na URL faz a modificao da cor de fundo da imagem do mapa, que por padro da cor branca (255 255 255). Os sinais de "+" no cdigo da cor representam os "espaos".
Exerccio 3.2
Para o tipo de imagem, acrescente a URL anterior:
http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_3. map&mode=map&layer=estados&map_imagecolor=70+166+239&map
_imagetype=png O resultado apresentado ser a mesma imagem anterior, porm, agora a sua extenso do tipo png:
Neste exemplo a imagem de sada tem seu tipo alterado para PNG pelo parmetro map_imagetype. Experimente trocar o valor png na URL por outras opes como jpeg, pdf ou swf. NOTA: para que formatos de sada no comuns como SWF ou PDF sejam utilizados, necessrio que o MapServer tenha sido compilado com este recurso.
Exerccio 3.3
Para alterar vrios parmetros ao mesmo tempo, acrescente a URL anterior: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_3.map&m ode=map&layer=estados&map_imagecolor=70+166+239&map_imagetype=p ng&map_size=600+450 O resultado ser a mesma imagem anterior, porm, agora a sua extenso do tipo png, fundo azul e o seu tamanho alterado de 400 x 300 para 600 x 450 pixels:
Exerccio 4
A criao de mapas temticos no MapServer pode ser feita pelo uso de expresses. Pode-se utilizar expresses string de valor fixo, expresses regulares ou expresses lgicas. Vamos ver alguns exemplos.
Exerccio 4.1
Criando temas com expresses string.
C:/ms4w/curso_mapserver/mapfiles/
Exerccio 4.1
Para testar o mapfile, digite:
http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_41 .map&mode=map&layer=estados
O resultado ser:
Exerccio 4.2
Criando temas com expresses regulares.
C:/ms4w/curso_mapserver/mapfiles/
Exerccio 4.2
Para testar o mapfile, digite:
http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_42 .map&mode=map&layer=estados
O resultado ser:
Exerccio 4.3
C:/ms4w/curso_mapserver/mapfiles/
Exerccio 4.3
Para testar o mapfile, digite:
http://localhost/cgibin/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 (So Paulo e Rio de Janeiro) representados.
Exerccio 5
Para testar o mapfile, digite: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_5.map&m ode=map&layer=estados&layer=estados_rotulos O resultado ser:
Crie o mapfile:
Exerccio 6
Para testar o mapfile, digite: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_6.map&la yer=imagem_spot_vegetation&mode=map O resultado ser:
Crie o mapfile:
Exerccio 7
Para testar o mapfile, digite: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_7.map&la yer=raster_brasil&layer=estados&mode=map O resultado ser:
Exerccio 8
Neste exerccio iremos criar a nossa primeira interface de usurio em HTML. Funcionalidades:
Pgina de inicializao de variveis rea de trabalho Aproximar Afastar Mover o mapa pela rea de trabalho Seleo de camadas
Exerccio 8
Crie o mapfile que ser chamado pela interface do usurio.
C:/ms4w/curso_mapserver/mapfiles/
Exerccio 8
Exerccio 8
Como funciona:
Aps clicar no boto Iniciar da pgina de inicializao, os parmetros contidos no formulrio (program e map) so enviados ao executvel CGI do MapServer. Como no foi enviado o parmetro mode (que nos exerccios anteriores fora definido com valor map), o MapServer iniciado automaticamente com mode = browse. O modo browse o modo de navegao por interface de usurio e o MapServer procurar pelo arquivo web05_template.html que foi definido na propriedade TEMPLATE do objeto WEB na linha 13 do MapFile exercicio_5.map. Existindo o arquivo Template, o MapServer vai processar este arquivo, e substituir todas as palavras entre colchetes [ ] por valores especiais que sero preenchidos pelo MapServer.
Exerccio 8
Como funciona:
KANEGAE, 2005.
Exerccio 8
Criando a pgina de inicializao da interface do usurio.
C:/ms4w/apache/htdocs/curso_mapserver/templates/
Exerccio 8
Criando a interface do usurio.
C:/ms4w/apache/htdocs/curso_mapserver/templates/
Exerccio 8
Como funciona:
Uma vez que o arquivo template web05_template.html foi encontrado pelo MapServer, ser realizada a substituio de valores definidos entre colchetes por valores gerados pelo MapServer em tempo de execuo. Veja a lista das substituies realizadas no arquivo web05_template.html:
Linha 6: nesta linha define-se o action do formulrio com o valor da varivel [program]. Esta varivel enviada pela primeira vez pelo formulrio de inicializao (no arquivo web05_iniciar.html) e deve ser mantida pela declarao feita na linha 8. Linha 8: nesta linha a declarao de um objeto hidden que possui seu nome definido como "program" e seu valor ser a substituio do texto "[program]" pela URL de endereo do MapServer CGI. Linha 9: tal qual ocorre com a linha 8, temos a declarao de um objeto hidden, nomeado como "map" e seu valor ser a substituio do texto "[map]" pelo caminho do MapFile. Linha 10: o parmetro imgext necessrio para que a aplicao contenha a informao sobre qual o retngulo envolvente atual. Ou seja, toda vez que o MapServer executado, ele precisa saber quais as coordenadas do retngulo envolvente que a aplicao est naquele momento. O valor "[mapext]" ser substitudo pelas coordenadas do retngulo envolvente corrente em cada interao com a aplicao. Linha 11: o parmetro imgxy ter o seu valor substitudo pela string "[center]". A palavra "[center]" calcula as coordenadas do centro da imagem em pixels. E o parmetro imgxy com este valor servir para *simular* um clique bem no centro da imagem quando o usurio clicar no boto Atualizar.
Exerccio 8
Como funciona:
Linha 12: o parmetro zoomsize define o fator de zoom que ser usado nas operaes de aproximar (zoom in) e afastar (zoom out). Linha 14: esta linha define o "mapa clicvel" para a aplicao. O texto "[img]" ser substitudo pela URL da imagem temporria que foi gerada pelo MapServer. A cada interao com a aplicao, o MapServer ir gerar uma imagem temporria dentro da pasta definida em MAP->WEB->IMAGEPATH, que ser a imagem resultante da solicitao do usurio. Note tambm que toda vez que o usurio clica sobre este mapa de navegao, so enviados para o MapServer CGI dois parmetros essenciais para o correto funcionamento do sistema: img.x e img.y - estes parmetros so as coordenadas (em pixels) do exato ponto clicado pelo usurio. Linhas 18, 19 e 20: essas trs linhas definem os controles de Zoom da aplicao. O parmetro 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]" so processados pelo MapServer em cada interao e servem para deixar a ltima opo que o usurio escolheu j selecionada aps o processamento da interao. Linhas 25, 26, 27 e 28: estas linhas definem os controles de exibir/ocultar layers da aplicao. Se voc ligar um destes layers e interagir na aplicao, aps o processamento da solicitao poder notar que o layer ligado anteriormente j aparecer ligado na caixa de seleo. Isto ocorre pelo processamento das variveis "[estados_check], "[rodovias_check], "[estados_check], "[sedes_municipais_check] e "[spot_vgt_brasil_check]".
Uma vez que o arquivo template processado com as devidas substituies, o resultado apresentado no navegador do usurio como uma pgina HTML.
Exerccio 9
Para testar o mapfile, digite: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_9.map&la yer=estados O resultado ser a mudana de posio do mapa a cada clique na rea de trabalho:
Crie o mapfile:
Exerccio 10
Para testar o mapfile, digite: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_10.map& layer=estados O resultado ser:
Crie o mapfile:
Exerccio 11
Para testar o mapfile, digite: http://localhost/cgibin/mapserv.exe?map=/ms4w/curso_mapserver/mapfiles/exercicio_11.map& layer=estados O resultado ser:
Exerccio 12
www.maptools.org
Obrigado!!!
Prof. Dr. Marcelo Felipe Moreira Persegona marcelo.persegona@gmail.com
Referncias Bibliogrficas
KANEGAE, Eduardo Patto. Curso de Introduo ao MapServer. 2005. KROPLA, Bill. Beginning Mapserver: Open Source GIS Development. Berkeley: Apress, 2005. Mitchell, Tyler. Web Mapping: Ilustrated. Sebastopol: OReilly, 2005.