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-Ambiente de desenvolvimento
Para iniciar-mos o desenvolvimento do nosso sistema GIS, devemos primeiro verificar se possuímos, todos os itens necessários já instalados em nosso computador.
Neste caso iremos necessitar de:
- Microsoft Visual Studio 2005;
http://www.microsoft.com/emea/msdn/visualstudio/ptpt/getthetrials/
http://www.postgresql.org/ftp/binary/v8.3.3/win32/
Ao final da instalação do postgreSQL, você será questionado se deseja incluir a extensão PostGIS, selecione-a para instala-la.
Podemos nós mesmo compilar o Mapscript para .NET, seguindo esses passos: http://mapserver.gis.umn.edu/docs/howto/mapscriptcscompile
Mas como o foco não é esse eu já preparei uma compilação que irá funcionar perfeitamente no Visual Studio, inclusive já agreguei nesse pacote todas as dependencias necessárias.
Você pode baixar este pacote no link: http://www.rafaelsussel.mhx.com.br/ArquivosCodigos/DLL.rar
2-Criando nossa solução no Visual Studio 2005
Com o ambiente já preparado, vamos abrir o Visual Studio 2005, pra criarmos a estrutura de nossa solução.
Para esse projeto pensei em algo simples, com apenas 4 camadas:
- Web ira conter todas as interfaces de comunicação com o usuário
- Negócios ira conter algumas regras especificas para realizar-mos algumas pesquisas no GIS.
- GIS ira conter todas as regras necessárias para executarmos nossas operações.
- Dados quando necessário iremos utilizá-lo para acessar algum determinado dado.
Essa é uma estrutura básica, apenas para não ficarmos misturando códigos, e acabarmos nos perdendo no decorrer no projeto.

Para tal arquitetura iremos criar no Visual Studio uma solução contendo três projetos do tipo Class Library e um do tipo Asp.Net Web Site.
Depois de criado os projetos nossa solução ficará com o seguinte aspecto:

Agora devemos referenciar o Mapscript em nossa Solução, isto é, referenciá-lo apenas na camada GIS.
Neste momento iremos utilizar o pacote de dll´s necessárias para o Mapscript “executar” e realizar seu trabalho.
Para ficar mais fácil e garantido que essas dll´s não ficarão “perdidas” em qualquer lugar do computador iremos criar uma pasta com o nome de DLL, no projeto GIS, e colocar-las dentro da mesma. Após isso devemos finalmente referenciar em nosso projeto GIS o arquivo “mapscript_csharp.dll” o qual nos dará acesso as funcionalidades do Mapserver.
No final a estrutura de nosso projeto deverá ficar como a estrutura abaixo:

Pronto, finalmente estamos com nosso ambiente de desenvolvimento preparado e nossa solução estruturada para começar-mos o desenvolvimento do nosso sistema GIS.
Seguindo o cronograma, no próximo tutorial iremos preparar a base de dados geo-referenciada que ira armazenar os mapas a serem exibidos por nosso sistema.
Estou à disposição para eventuais duvidas que possa vir a aparecer.
Um forte abraço a todos
Sem mais
Rafael Sussel