1-Introdução

Nossa, já faz um certo tempo que não posto aqui, essa falta de tempo tá fod… , mas vamos ao que interessa, esse artigo será com certeza um dos mais esperados, pois mostra como exibir os mapas que nos armazenamos na nossa base de dados.

2-Preparando o arquivo .map

Primeiro vamos preparar o nosso arquivo .map, que nada mais é do que uma workspace, isto é, nele estará contido todos os layers que serão exibidos no nosso mapa, claro que poderíamos adicioná-los via código mas dessa maneira é mais simples.

*Início

MAP *

*Nome

NAME MAPACURSO

*Unidade a ser utilizada

UNITS METERS

*Extremidades do mapa (minx, miny, maxx, maxy)

EXTENT -85.133507 -34.727177 -21.249626 6.247749

*Definições para criação da legenda

LEGEND

IMAGECOLOR 255 255 255

STATUS ON

KEYSIZE 18 12

LABEL

TYPE BITMAP

SIZE MEDIUM

COLOR 0 0 89

END

END

*Início da definição do layer Brasil

LAYER

*Nome

NAME ‘Brasil’

*Tipo

TYPE POLYGON

*Tipo da conexão

CONNECTIONTYPE postgis

*String para conexão

CONNECTION “host=localhost user=postgres password=postgres dbname=gis_db”

*Select que trará os dados a serem exibidos

DATA ‘the_geom FROM brasil USING UNIQUE gid’

*Status ON, OFF e DEFAULT, se colocar off ele não aparece no mapa, até que se mude para ON

STATUS DEFAULT

*Definições de layout do layer

CLASS

STYLE

OUTLINECOLOR 0 0 255

END

END

END

*Fim

LAYER

NAME ‘SaoPaulo’

TYPE POLYGON

CONNECTIONTYPE postgis

CONNECTION “host=localhost user=postgres password=postgres dbname=gis_db”

DATA ‘the_geom FROM saopaulo USING UNIQUE gid’

STATUS DEFAULT

CLASS

STYLE

OUTLINECOLOR 210 140 140

END

END

END

END

Caso tenha interesse, você pode se aprofundar mais nas configurações possíveis de se realizar no mapfile no site http://mapserver.org/mapfile

3 – Codificando

Bem agora que estamos com nosso mapfile pronto, nos resta codificar o que for necessário para o mapserver interpreta-lo e exibir o mapa para nós.

O nosso primeiro site será bem simples, apenas um “web form” contendo um “image control”, que servira para exibir nosso mapa, veja abaixo :

Agora é só codificarmos

OSGeo.MapServer.mapObj map;

map = new OSGeo.MapServer.mapObj(“Caminho fisico do arquivo mapfile”);

map.width = 200; //Tamanho horizontal do mapa

map.height = 100; //Tamanho vertical do mapa

OSGeo.MapServer.imageObj img = map.draw();//Cria a imagem do mapa

img.save(“Caminho fisico, inclusive com o nome da imagem a ser gerada”, map);

Image1.ImageUrl = “url do caminho aonde a imagem foi salva”;

Bem, a grosso modo, é basicamente essas linhas acima que nos permitem exibir um mapa, claro que na hora de criar o projeto e codificar eu dei uma incrementada, portanto baixem o código fonte no link abaixo e vocês terão a solução completa desse artigo, vale lembrar que talvez seja necessário realizar algumas alterações no web.config.

Link para baixar o código fonte

E como resultado temos:

1-Introdução

Pretendo hoje criar e carregar o banco de dados com alguns layer´s, alem de preparar a workspace de nosso mapa, isto é o arquivo mapfile, o qual conterá a configuração de quais layer´s serão exibidos em nosso mapa, o local onde esses layer´s estão armazenados, cores e estilos com que serão exibidos, dentre outras informações.

2-Criando a base de dados

Como já temos o PostgreSQL com a extensão PostGIS instalada, basta apenas criarmos um novo banco de dados e inserir no mesmo algumas informações geo-referenciadas.

Para criarmos o nosso banco de dados, devemos abrir o prompt de comando do Windows e entrarmos no Shell de comando do PostgreSQL:

psql.exe –U usuário <enter>

Após estarmos no Shell iremos para o comando SQL necessário para criarmos a nossa base.

CREATE DATABASE gis_db TEMPLATE = template_postgis;

*onde gis_db é o nome do banco de dados a ser criado

Essa maneira de criarmos a base de dados tem a particularidade da utilização de um “template”, isto é, o banco criado por nós ira “copiar” toda a estrutura do “template”, facilitando a criação do banco, porem, nada impede a criação na mão através dos passos abaixo:

  • Comando para criar nosso banco de dados:

createdb.exe -U postgres gis_db

  • Comando para carregar todos os objetos e funções referentes ao PostGIS:

psql.exe -U postgres -d gis_db -f “c:\Arquivos de programas\PostgreSQL\8.3\share\contrib\lwpostgis.sql”

  • Comando para carregar informações referentes as definições dos sistemas de coordenas do EPSG (European Petroleum Survey Group), que é uma tabela que define indicadores números para as projeções mais utilizadas e para cada indicador associa projeções ou metadados de coordenadas:

psql.exe -U postgres -d gis_db -f “c:\Arquivos de programas\PostgreSQL\8.3\share\contrib\ spatial_ref_sys.sql”

Obs: os arquivos lwpostgis.sql e spatial_ref_sys.sql são scripts que acompanham a instalação do PostGIS.

De uma maneira de outra, o resultado esperado por nós será o mesmo, portando se você seguiu corretamente um dos passos, seu banco deverá nesse momento estar pronto para receber os dados geo-refenciados.

Obs.: Lembrando que os comandos acima foram feitos diretamente no prompt de comando do Windows sem a necessidade de acessar o Shell de comando do Postgres e ao menos que o path dos binários do postgres esteja setado nas variáveis de ambiente esses comandos deverão ser efetuados no caminho em que se encontram os binários, no meu caso “C:\Arquivos de programas\PostgreSQL\8.3\bin”

3-Obtendo dados

Para “dar carga” na nossa base de dados vamos utilizar dois shape-files que devem ser baixados no site do IBGE, nos seguintes links:


Após baixarmos todos os arquivos existentes no links, devemos convertê-los em instruções SQL, para que as mesmas possam ser interpretadas pelo Shell do PostgreSQL.

Para fazer essa conversão vamos utilizar o seguinte comando:

shp2pgsql.exe <arquivo shape-file> <Nome da tabela> <arquivo para armazenar os scripts sql>

Veja abaixo os comandos executados em minha maquina para realizar a conversão:

shp2pgsql.exe D:\Mapas\Brasil\55mu2500gsd.shp Brasil > D:\Mapas\Brasil\brasil.sql

shp2pgsql.exe D:\Mapas\saopaulo\35mu2500gsd.shp Municipios > d:\Mapas\saopaulo\municipios.sql

Com os scripts brasil.sql e municípios.sql gerados basta apenas carregá-los no nosso banco de dados, através dos comandos abaixo:

psql.exe -U postgres -d gis_db -f D:\Mapas\Brasil\brasil.sql

psql.exe -U postgres -d gis_db -f D:\Mapas\SaoPaulo\municipios.sql

Para “facilitar” essa conversão existe um aplicativo visual chamado Gshp2pgsql, que pode ser “baixado” no site http://sdteffen.de/gis/gshp2pgsql.html

Porem, como ainda não o testei, não tem como dar o meu parecer a respeito sobre o mesmo :).

4-Criando a Workspace (MapFile)

MapFile é um arquivo que conterá as definições do mapa que iremos criar, isto é, nele será informado diversos parâmetros tais como:layer´s que serão exibidos, layout dos layer´s, origem dos layer´s, formato de imagem que será salvo o mapa, etc.

Eis agora o nosso arquivo MapFile:

Agora vou procurar explicar os pontos mais importantes de um arquivo mapfile, seguindo o padrão <numero da linha>:<explicação>

3: Informa qual será o nome do mapa.

6: Qual será o tamanho da imagem do mapa gerada pelo mapserver.

7: Qual unidade de medida que será utilizada.

8: Extent essa é a posição inicial que o mapserver usara como padrão para plotar o mapa.

10-17: Definições do tipo de imagem a ser gerada, no caso JPEG.

19-28: Definições para a criação da legenda do mapa.

29-46, 48-76 : São as informações necessárias para o carregamento dos nossos layer´s, note que temos diversas informações tais como:

31,50:Tipo do layer

32-33,51-52 : Informações necessárias para conexão com o PostGIS.

37-45,57-66,67-75: Informações de como nossos layer´s serão exibidos no mapa.

Como disse no MapFile existem muitas opções de configurações que não expusemos aqui, para ler mais a respeito do mesmo sugiro que consultem o site : http://mapserver.gis.umn.edu/docs/reference/mapfile

Maiores informações a respeito do PostGIS podem ser obtidas em: http://postgis.refractions.net

5 - Finalizando

Acredito que a partir do próximo artigo, veremos um maior rendimento em nosso sistema, pois começaremos a exibir mapas em nossa tela, através no Mapscrip, mas pra matar um pouco a curiosidade e verificar se nossos dados estão corretamente salvas em nosso banco de dados, sugiro que instalem o aplicativo Quantum GIS, que pode ser baixado gratuitamente no endereço www.qgis.org, após instalá-lo siga os passos abaixo para visualizar os layer´s.

Com o Quantum GIS aberto clique no ícone “Adicionar uma camada PostGIS”:

Será aberta uma tela para adicionar tabelas PostGIS, mas como não existe nenhuma conexão com o PostGIS já salva, devemos criar uma nova, para isto, clique no botão “Novo”, em seguida ira aparecer uma tela de configuração de conexão, preencha todos os campos, como feito abaixo, em seguida clique em “Ok”.

Agora basta clicar em conectar para que a conexão seja efetuada e uma lista com as duas tabelas (layer´s) adicionadas por nos no banco apareçam:


Selecione uma delas, ou as duas, e clique em adicionar, como resultados termos nosso layer sendo exibido no Quantum GIS, veja:

Com isto finalizo o segundo tutorial, espero que estejam correspondendo as expectativas, no próximo tutorial, finalmente, começaremos a por a “mão na massa” no Visual Studio 2005, dando inicio ao nosso sistema.

Um forte abraço a todos
Sem mais
Rafael Sussel Decleva

« Previous PageNext Page »