segunda-feira, 10 de junho de 2013

x-sendfile no i3Geo

Listas de discussão são sempre uma fonte importante de inspiração. Não conhecia o X-sendfile (https://tn123.org/mod_xsendfile/) até ver uma pergunta sobre ele na lista do Mapserver: http://osgeo-org.1560.x6.nabble.com/Does-MapCache-supports-x-sendfile-td5058814.html

Fiz alguns testes no i3Geo e me parece que a performance realmente melhorou um pouco, então, implementei uma opção para permitir seu uso.

De quebra resolvi um problema  que estava ocorrendo em algumas instalações do Mapserver que exigiam um "contorno" não muito amigável. Em suma, no arquivo de configuração do i3Geo ms_configura.php incluí uma nova variável chamada $i3georendermode, que pode assumir os valores 0, 1 e 2:

    0 - modo default. Utiliza a função imagepng() do PHP para enviar a imagem ao navegador
    1 - utiliza a função do Mapserver saveImage() para enviar a imagem ao navegador (é mais rápida, mas não funciona em algumas versões do Mapserver)
    2 - utiliza X-Sendfile (mais rápido que as outras opções) mas exige modificações na instalação do Apache.

X-sendfile é um módulo que pode ser instalado no Apache, no Ubuntu eu instalei com Synaptic procurando por "libapache2-mod-xsendfile". Depois foi só alterar o arquivo /etc/apache2/sites-available/default e incluir as linhas

  XSendFile on
  XSendFilePath /tmp

dentro de

Feito isso, reinicie o apache digitando no terminal:  sudo /etc/init.d/apache2 restart

Para testar, edite o arquivo i3geo/ms_configura.php e modifique a variável $i3georendermode

Os códigos que possibilitam essa configuração foram implementados na versão 4.7 e 5 do i3Geo, sendo que não constam ainda nos arquivos zipados para download, para usar esse código é necessário fazer o "update" ou "checkout" via SVN.


sexta-feira, 31 de maio de 2013

Como criar e salvar um mapa rapidamente com o i3Geo 4.7

O catálogo de temas do i3Geo é a melhor forma de se organizar dados para uso nos mapas, mas seu uso não é obrigatório. Nesse artigo eu mostro um procedimento alternativo para a criação de mapas utilizando os dados armazenados no servidor.

No arquivo de configuração i3geo/ms_configura.php é possível cadastrar usuários que poderão ver os arquivos existentes no servidor web, por exemplo, a variável $navegadoresLocais permitiria ao "localhost" navegar pelas pastas /tmp e /var/www

$navegadoresLocais = array(
        array(
            "ip"=>"localhost",
            "drives"=>array(
                    array("caminho"=>"/tmp","nome"=>"tmp"),
                    array("caminho"=>"/var/www","nome"=>"www")
            )
        )
    );

Ao abrir o catálogo de temas, o usuário da máquina "localhost" verá um item chamado "Acesso aos arquivos do servidor" que consiste em um navegador de diretórios que mostra apenas os arquivos do tipo "shape file" e "tiff". Ao clicar em um arquivo, uma nova camada é adicionada ao mapa (desde que o "shape file" esteja na mesma projeção do mapa). Dessa maneira é possível montar um mapa rapidamente sem a necessidade de se recorrer aos temas pré-configurados existentes no catálogo.

Na versão 4.7 o arquivo "mapfile" que contém toda a configuração do mapa que está sendo visto, pode ser salvo no banco de dados de administração. Assim, utilizando-se a opção de acesso direto aos arquivos "shapefile" e a possibilidade de salvar o mapa para uso posterior, um mapa pode ser feito e compartilhado de forma rápida. Como mostrado no vídeo abaixo.



Um mapa salvo pode ser aberto de diferentes maneiras. No exemplo o mapa criado possuí o número de identificação 7 e as seguintes urls podem ser utilizadas para recuperar o mapa que foi salvo:

http://localhost/i3geo/ms_criamapa.php?temasa=&layers=&restauramapa=7&interface=http://localhost/i3geo/interface/openlayers.htm

http://localhost/i3geo/ms_criamapa.php?temasa=&layers=&restauramapa=7&interface=http://localhost/i3geo/interface/googlemaps.phtml

localhost/i3geo/mashups/openlayers.php?restauramapa=7&botoes=zoombox,zoomtot


sexta-feira, 24 de maio de 2013

Google Maps é legal mas o uso pode não ser...

A API do Google Maps não é sempre de graça. Para usá-la em um site é necessário concordar com as restrições e regras que o Google estabelece. E concordar significa não usar naquilo que não é permitido, a não ser que você pague por isso.

Uma restrição que é bastante conhecida estabelece que você não pode usar o Google Maps em uma página cujo acesso é restrito. Ou seja, a página deve ser pública e qualquer pessoa poderá utilizá-la. Você pode até solicitar que o usuário faça um cadastro, mas não pode haver nenhuma restrição quanto a isso, qualquer um poderá se cadastrar sem a necessidade de aprovação ou outro tipo de controle.

Uma outra restrição, que eu não conhecia é a seguinte: qualquer dado derivado só pode ser utilizado com o Google Maps. Sentiu o drama?

Isso significa que se você obtém um ponto (linha ou polígono) e armazena ou não, seja lá de que forma for, você só poderá mostrar esse ponto no Google Maps. Você pode até usar os dados para realizar operações espaciais em seu banco de dados, mas fazer um mapa, só com o Google Maps.

E nem pagando. Essa última regra vale mesmo que você pague a licença.




quinta-feira, 16 de maio de 2013

Uso de estilos na interface Google Maps do i3Geo

Aqui vão algumas imagens que mostram o resultado da aplicação de estilos nos mapas do i3Geo que utilizam a API do Google Maps.
O código que possibilita isso está disponível na versão 4.7 do i3Geo, mas apenas na versão atual do SVN, ou seja, por enquanto para utilizá-lo é necessário fazer o "update" ou o "checkout" do código do i3Geo diretamente do SVN.
Os estilos pré-configurados são os mesmos que podem ser vistos aqui: http://maps-api-tt.appspot.com/apilite/styled/styled.html