Entries tagged with “C#”.


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/

  • PostgreSQL

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.

  • MapScript para .NET

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