Posts com Tag ‘MapServer’

Existem outros posts mais básicos publicados neste blog sobre o MapServer. Se desejar, verifique os posts sobre o ambiente criado na instalação do MapServer , a primeira aplicação MapServer e o primeiro exemplo de criação de mapas com MapServer que foram publicados anteriormente.

Suponhamos que parte de um arquivo Mapfile seja o seguinte:

MAP
# Esta é uma aplicação com fontes truetype
NAME "exemplo_fontes"
UNITS DD
EXTENT -180.00 0.00 -60.00 90.00
SIZE 640 480
IMAGECOLOR 189 202 222
IMAGETYPE PNG
SHAPEPATH "/home/mapdata/mapas"
FONTSET "/var/www/fontset.txt"
#
# Legend
#
LEGEND
STATUS on
IMAGECOLOR 230 230 230
LABEL
TYPE truetype
FONT "arial"
COLOR 0 0 0
SIZE 10
ANTIALIAS true
END
END
#
LAYER
NAME "urbanareas"
DATA "urbanap020"
STATUS on
TYPE polygon
LABELCACHE on
LABELITEM "NAME"
MAXSCALE 1999999
CLASS
STYLE
COLOR 212 192 100
OUTLINECOLOR 0 0 0
END
LABEL
TYPE truetype
FONT "arialbd"
SIZE 10
OUTLINECOLOR 255 255 255
COLOR 0 0 0
POSITION auto
END
END
END
#

Onde se observa a referência ao arquivo de fontes /var/www/fontset.txt. Neste arquivo poderíamos colocar o seguinte conteúdo:


Arial /usr/share/fonts/truetype/freefont/FreeMono.ttf
Arialbd /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf

Em função da fonte Arial não ser livre, fizemos o direcionamento da referência a fonte Arial para ser utilizada a fonte FreeMono, que está na pasta indicada.

Com perfil de administrador, defina as permissões para este arquivo da seguinte forma:


# chown www-data:www-data /var/www/fontset.txt
# chmod 444 /var/www/fontset.txt

Para entender mais:
1- Instalar o MapServer com PHP/MapScript no Debian
2- Executando a primeira aplicação MapServer no Debian
3- Visualizando um primeiro mapa com MapServer
4- Documentação MapServer
5- Livro: Beginning MapServer: open source GIS development

Anúncios

Antes de prosseguir neste post, verifique o ambiente criado na instalação do MapServer , a primeira aplicação MapServer e o primeiro exemplo de criação de mapas com MapServer que estão em posts anteriores. Este post é uma continuação dos anteriores.

1. Criar o arquivo mapfile /home/mapdata/second.map

MAP
# This is our second map file
NAME "second"
UNITS dd
SIZE 640 480
IMAGECOLOR 255 255 255
IMAGETYPE gif
SHAPEPATH "/home/mapdata/mapas/"
EXTENT -180.00 0.00 -60.00 90.00
# FONTSET "/var/www/fontset.txt"
WEB
TEMPLATE "/var/www/second.html"
IMAGEPATH "/var/www/tmp/"
IMAGEURL "/tmp/"
END
#
LAYER
NAME "urbanareas"
DATA "urbanap020"
STATUS on
TYPE polygon
LABELCACHE on
LABELITEM 'NAME'
CLASS
NAME "Urban Areas"
STYLE
COLOR 212 192 100
END
LABEL
COLOR 0 0 0
SIZE small
END # label
END # class Urban Areas
END # layer urbanareas
#
LAYER
NAME "lakes"
DATA "hydrogp020"
STATUS on
TYPE polygon
LABELCACHE on
LABELITEM "NAME"
CLASSITEM "FEATURE"
MAXFEATURES 100
CLASS
NAME "Lakes"
EXPRESSION 'Lake'
STYLE
SIZE 1
COLOR 0 0 255
END
LABEL
MINFEATURESIZE auto
COLOR 0 0 0
SIZE small
END # label
END # class Lakes
END # layer lakes
#
LAYER
NAME "states"
DATA "statesp020"
STATUS on
TYPE polygon
LABELCACHE on
CLASS
STYLE
OUTLINECOLOR 0 0 0
END
END # class
END # layer states
#
LAYER
NAME "roads"
DATA "roadtrl020"
STATUS on
TYPE line
LABELCACHE on
LABELITEM "NAME"
CLASSITEM "FEATURE"
CLASS
NAME "Principal Highway"
EXPRESSION /Principal Highway*/
STYLE
SIZE 1
COLOR 0 0 0
END
LABEL
COLOR 0 0 0
SIZE small
END # label
END # class Principal Highway
END # layer roads
END # mapfile

OBS:
a) o exemplo acima é compatível com MapServer versão 5 ou superior, a partir de março de 2009. Mais detalhes vide MS RFC 56: Tighten control of access to mapfiles and templates e Guia de Migração para MapServer 5. Isso foi parte de um conjunto de medidas de segurança para o funcionamento do MapServer.

b) Com privilégios de administrador, fazer:

# chown nobody:nogroup /home/mapdata/second.map
# chmod 444 /home/mapdata/second.map

2. Criar o arquivo de Inicialização /var/www/second_i.html

<html>
<head> <title>MapServer Second Map</title></head>
<body>
<form method=POST action="/cgi-bin/mapserv">
<input type="submit" value="Click to initialize">
<input type="hidden" name="program" value="/cgi-bin/mapserv">
<input type="hidden" name="map" value="/home/mapdata/second.map">
<input type="hidden" name=zoomsize size=2 value=2>
<input type="hidden" name="layers"
value="urbanareas lakes states roads capitals">
</form>
</body>
</html>

OBS: Com privilégios de administrador, fazer:

# chown www-data:www-data /var/www/second_i.html
# chmod 644 /var/www/second_i.html

3. Criar o arquivo de template /var/www/second.html

<!-- MapServer Template -->
<!-- o comentário acima é OBRIGATÓRIO na primeira linha deste template MapServer -->
<html>
<head><title>Second Map</title></head>
<body>
<form name="the_form" method=GET action="[program]">
<table width="100%">
<tr>
<td width="60%">
<input name="img" type="image" src="[img]"
width=640 height=480 border=2></td>
<td width="40%" align="left">
<table border="1" width="300">
<tr><td align="center" colspan="3">
<input type="submit" value="Refresh"></td></tr>
<tr><td align="center" colspan="3">Zoom</td></tr>
<tr><td align="right" width="100">Zoom In
<input type=radio name=zoomdir value=1
[zoomdir_1_check]></td>
<td align="right" width="100">Zoom Out
<input type=radio name=zoomdir value=-1
[zoomdir_-1_check]></td>
<td align="right" width="100">Size
<input type=text name=zoomsize size=2
value=[zoomsize]></td></tr>
<tr><td align="center" colspan="3">Pan
<input type=radio name=zoomdir
value=0 [zoomdir_0_check]></td></tr>
</table>
<hr size="1">
<table>
<tr><td colspan="3">
<input type="checkbox" name="layer" value="urbanareas"
[urbanareas_check]>Urban Areas</td></tr>
<tr><td colspan="3"><input type="checkbox"
name="layer" value="lakes"
[lakes_check]>Lakes</td></tr>
<tr><td colspan="3"><input type="checkbox"
name="layer" value="states"
[states_check]>State Boundaries</td></tr>
<tr><td colspan="3"><input type="checkbox"
name="layer" value="roads"
[roads_check]>Roads</td></tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="imgxy" value="320 240">
<input type="hidden" name="imgext" value="[mapext]">
<input type="hidden" name="map" value="[map]">
<input type="hidden" name="program" value="[program]">
</form>
</body>
</html>

OBS: Com privilégios de administrador, fazer:

# chown www-data:www-data /var/www/second.html
# chmod 644 /var/www/second.html

4. Carregue a página no navegador digitando a URL http://localhost/second_i.html

Uma imagem como a abaixo irá aparecer.

Agora, clique no botão e uma nova página será gerada como a abaixo.

As imagens renderizadas estarão sendo armazenadas em /var/www/tmp.

Veja também o post Aplicações MapServer com fontes Truetype.

Para entender mais:
1- Instalar o MapServer com PHP/MapScript no Debian
2- Executando a primeira aplicação MapServer no Debian
3- Visualizando um primeiro mapa com MapServer
4- Documentação MapServer
5- Exemplo de MapServer Template
6- Variáveis CGI MapServer
7- HTML Templates e Query
8- Livro: Beginning MapServer: open source GIS development

Antes de prosseguir neste post, verifique o ambiente criado na instalação do MapServer e a primeira aplicação MapServer que estão em posts anteriores.

1. Criação das pastas básicas


mkdir /home/mapdata/mapas
chown nobody:nogroup /home/mapdata/mapas
chmod 755 /home/mapdata/mapas

2. Criar o arquivo mapfile /home/mapdata/first.map

MAP
# This is our first mapfile
NAME "First"
SIZE 400 300
IMAGECOLOR 255 255 255
IMAGETYPE JPEG
SHAPEPATH "/home/mapdata/mapas/"
EXTENT -185.00 20.00 -65.00 50
WEB
TEMPLATE '/var/www/first.html'
IMAGEPATH '/var/www/tmp/'
IMAGEURL '/tmp/'
END
LAYER
NAME "US States"
STATUS default
TYPE line
DATA "statesp020"
LABELITEM "STATE"
CLASS
STYLE
COLOR 0 0 0
END
LABEL
COLOR 0 0 0
SIZE small
END
END
END
END
END

OBS:
a) o exemplo acima é compatível com MapServer versão 5 ou superior, a partir de março de 2009. Mais detalhes vide MS RFC 56: Tighten control of access to mapfiles and templates e Guia de Migração para MapServer 5. Isso foi parte de um conjunto de medidas de segurança para o funcionamento do MapServer.

b) Com privilégios de administrador, fazer:

# chown nobody:nogroup /home/mapdata/first.map
# chmod 444 /home/mapdata/first.map

3. Baixe os arquivos de dados espaciais utilizados neste post para /home/mapdata/mapas

Os mapas utilizados neste post devem ser baixados de http://nationalatlas.gov/atlasftp.html.

wget -c http://dds.cr.usgs.gov/pub/data/nationalatlas/citiesx020.tar.gz (Cities and Towns)
wget -c http://dds.cr.usgs.gov/pub/data/nationalatlas/roadtrl020.tar.gz (Roads)
wget -c http://dds.cr.usgs.gov/pub/data/nationalatlas/statesp020.tar.gz (State Boundaries)
wget -c http://dds.cr.usgs.gov/pub/data/nationalatlas/hydrogm020.tar.gz (Streams and Waterbodies)
wget -c http://dds.cr.usgs.gov/pub/data/nationalatlas/urbanap020.tar.gz (Urban Areas)

tar -xvzf citiesx020.tar.gz -C /home/mapdata/mapas
tar -xvzf roadtrl020.tar.gz -C /home/mapdata/mapas
tar -xvzf statesp020.tar.gz -C /home/mapdata/mapas
tar -xvzf hydrogm020.tar.gz -C /home/mapdata/mapas
tar -xvzf urbanap020.tar.gz -C /home/mapdata/mapas

4. Criar o arquivo de Inicialização /var/www/first.html

<!-- MapServer Template -->
<!-- o comentário acima é OBRIGATÓRIO na primeira linha deste template MapServer -->
<html>
<head>
<title>MapServer First Map</title>
</head>
<body>
<form method=POST action="/cgi-bin/mapserv">
<input type="submit" value="Click Me"><p></p>
<input type="hidden" name="map" value="/home/mapdata/first.map">
<input type="image" name="img" src="[img]" width="400" height="300" border="0">
</form></body>
</html>

OBS: Com privilégios de administrador, fazer:

# chown www-data:www-data /var/www/first.html
# chmod 644 /var/www/first.html

5. Carregue a página no navegador digitando a URL http://localhost/first.html

Uma imagem como a abaixo irá aparecer.

Agora, clique no botão e uma nova página será gerada como a abaixo.


OBS: esta imagem renderizada estará sendo armazenada em /var/www/tmp

Veja também Criando uma aplicação de mapeamento com camadas com MapServer

Para entender mais:
1- Instalar o MapServer com PHP/MapScript no Debian
2- Executando a primeira aplicação MapServer no Debian
3- Documentação MapServer
4- Exemplo de MapServer Template
5- Variáveis CGI MapServer
6- HTML Templates e Query
7- Livro: Beginning MapServer: open source GIS development

Com o MapServer já funcionando, executar os procedimentos abaixo criando o ambiente necessário para testar a primeira aplicação MapServer.

1. Criação das pastas básicas

a) Para colocar os arquivos mapfiles:

mkdir /home/mapdata
chown nobody:nogroup /home/mapdata
chmod 755 /home/mapdata

b) Para receber os arquivos imagens renderizados

mkdir /var/www/tmp
chown www-data:www-data /var/www/tmp
chmod 755 /var/www/tmp

2. Configuração do Apache

a) Arquivo básico para o /etc/apache2/httpd.conf

ServerName   localhost
NameVirtualHost   *:80
<VirtualHost   *:80>
ServerName   default
DocumentRoot   “/var/www”
DirectoryIndex   /erro.html
ErrorDocument 404   /documentoerro404.html
</VirtualHost>

b) Quanto ao arquivo /etc/apache2/sites-available/default: configure o DocumentRoot conforme abaixo.

DocumentRoot /var/www

3. Criar o arquivo mapfile /home/mapdata/hello.map

MAP
DEBUG on
NAME "HelloWorld"
SIZE 400 300
IMAGECOLOR 249 245 186
IMAGETYPE png
EXTENT -1.0 -1.0 1.0 1.0
WEB
TEMPLATE "/var/www/hello.html"
IMAGEPATH "/var/www/tmp/"
IMAGEURL "/tmp/"
END
LAYER
STATUS default
TYPE point
FEATURE
POINTS  0.00 0.00 END
TEXT "Hello World"
END # end feature
CLASS
STYLE
COLOR 255 0 0
END
LABEL
TYPE bitmap
END
END
END
END

OBS:
a) o exemplo acima é compatível com MapServer versão 5 ou superior, a partir de março de 2009. Mais detalhes vide MS RFC 56: Tighten control of access to mapfiles and templates e Guia de Migração para MapServer 5. Isso foi parte de um conjunto de medidas de segurança para o funcionamento do MapServer.

b) Com privilégios de administrador, fazer:

# chown nobody:nogroup /home/mapdata
# chmod 555 /home/mapdata
# chown nobody:nogroup /home/mapdata/hello.map
# chmod 444 /home/mapdata/hello.map

4. Criar o arquivo de Inicialização /var/www/hello.html

<!-- MapServer Template -->
<!-- o comentário acima é OBRIGATÓRIO na primeira linha deste template MapServer -->
<html>
<head> <title>MapServer Hello World</title></head>
<body>
<form method=POST action="/cgi-bin/mapserv">
<input type="submit" value="Click Me"><p></p>
<input type="hidden" name="map" value="/home/mapdata/hello.map">
<input type="image" name="img" src="[img]" width="400" height="300" border="0">
</form>
</body>
</html>

OBS: Com privilégios de administrador, fazer:

# chown www-data:www-data /var/www/hello.html
# chmod 644 /var/www/hello.html

5. Reinicie o Apache (com privilégios de administrador)

# /etc/init.d/apache2 restart

6. Carregue a página no navegador digitando a URL http://localhost/hello.html

Uma imagem como a abaixo irá aparecer.

Agora, clique no botão e uma nova página será gerada como a abaixo.

OBS: esta imagem renderizada estará sendo armazenada em /var/www/tmp

Veja também: Visualizando um primeiro mapa com MapServer

 

Outras referências:
1- Documentação MapServer
2- Exemplo de MapServer Template
3- Variáveis CGI MapServer
4- HTML Templates e Query
5- Visualizando um primeiro mapa com MapServer