Uncategorized


1. Introdução

Nesse novo post, vamos dar seqüência ao nosso projeto, partindo agora para a manipulação visual de nosso mapa, realizando as operações de zoom mais, zoom menos, os deslocamentos horizontais /verticais e claro o zoom total.

Estas manipulações podem ser implementadas de diversas formas, principalmente fazendo uso de artifícios, como javascript, para dar uma melhor interação, porem vamos fazer da maneira mais simples, fica a critério de vocês as implementações dessas “perfumarias” :)

2. Explicando

  • Zoom total

Para realizar o comando de zoom total deveremos “guardar” o primeiro extent existente no momento que nosso objeto mapa foi criado.

  • Demais controles

Todos os demais controles serão feitos através da função zoomPoint , dependendo de qual parâmetro nos passarmos será a alteração da posição do mapa.

Veja abaixo uma descrição dos parâmetros passados a essa função:

    • Fator de zoom = é o que tipo de zoom será feito, positivo zoom mais, negativo zoom menos. Existe uma exceção para o 0 (zero) que não serve como parâmetro e o 1 que serve apenas para um zoom estático.
    • Posição do zoom = esse parâmetro é de suma importância pois ele é posição há qual o mapa será centralizado, isto é, a imagem gerada terá essa posição como seu centro.
    • Tamanho horizontal = essa informação é em pixel.
    • Tamanho vertical = essa informação é em pixel.
    • Extent atual = atual extent do mapa.
    • Maximo extent = Maximo extent permitido, ignore esse parâmetro nesse momento não iremos nos atentar a ele.

Com a manipulação desses parâmetros conseguimos escrever os códigos abaixo, realizando assim as operações desejadas.

public void ZoomMais()
{
map.zoomPoint(2, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.h
eight / 2), 0, 0), map.width, map.height, map.extent, null);
}

public void ZoomMenos()
{
map.zoomPoint(-2, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.height / 2), 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaCima()
{
map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.height / 10) * 8, 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaBaixo()
{
map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.height / 10) * 2, 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaDireita(){map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 10) * 2, Convert.ToInt32(map.height / 2), 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaEsquerda(){map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 10) * 8, Convert.ToInt32(map.height / 2), 0, 0), map.width, map.height, map.extent, null);
}

Caso deseje realizar o download do código, clique aqui.

3. Finalizando

No próximo post será como criaremos consultas, isto é iremos localizar informações em nosso mapa.

Um abraço a todos.

Até mais.

Rafael Sussel Decleva

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