domingo, 28 de fevereiro de 2010

MapServer em modo FastCGI

Uma das formas de optimizar o MapServer do lado do servidor web consiste em corrê-lo em modo FastCGI.

Instalação
(Em Windows com MS4W)

1. Actualmente o MS4W vem com suporte a FastCGI sendo o módulo do Apache (mod_fcgid) necessário carregado por defeito. Instalar o MS4W em:
"c:/ms4w/"
Verificar se está instalado o Visual C++ 2008 Redistributable Package

2. Editar o ficheiro de configuração do Apache httpd.conf
  • remover o comentário da linha:
    LoadModule fcgid_module modules/mod_fcgid.so
  • remover os comentários das seguintes linhas e colocar os caminhos correctos:

    DefaultInitEnv PROJ_LIB "c:/ms4w/proj/nad/"
    DefaultInitEnv PATH "c:/ms4w/Apache/cgi-bin;
    c:/WINDOWS/system32;c:/WINDOWS;c:/WINDOWS/System32/Wbem;"
    DefaultInitEnv windir "c:/WINDOWS"
    DefaultInitEnv SystemRoot "c:/WINDOWS"
    DefaultInitEnv SystemDrive "c:"
    DefaultInitEnv GDAL_DATA "c:/ms4w/gdaldata"
    DefaultInitEnv GDAL_DRIVER_PATH "c:/ms4w/gdalplugins"
    DefaultInitEnv TMP "c:/ms4w/tmp"
    DefaultInitEnv TEMP "c:/ms4w/tmp"
  • adicionar parâmetros de configuração do FastCGI como por exemplo:

    IPCCommTimeout 60
    IdleTimeout 60
    DefaultMinClassProcessCount 2
    DefaultMaxClassProcessCount 20
    DefaultInitEnv PROJ_LIB "c:/ms4w/proj/nad/"
    DefaultInitEnv PATH "c:/ms4w/Apache/cgi-bin;
    c:/WINDOWS/system32;c:/WINDOWS;c:/WINDOWS/System32/Wbem;"
    DefaultInitEnv windir "c:/WINDOWS"
    DefaultInitEnv SystemRoot "c:/WINDOWS"
    DefaultInitEnv SystemDrive "c:"
    DefaultInitEnv GDAL_DATA "c:/ms4w/gdaldata"
    DefaultInitEnv GDAL_DRIVER_PATH "c:/ms4w/gdalplugins"
    DefaultInitEnv TMP "c:/ms4w/tmp"
    DefaultInitEnv TEMP "c:/ms4w/tmp"
  • salvar o ficheiro httpd.conf e reiniciar o Apache.
3. Modificar a aplicação CGI de forma a apontar para "/fcgi-bin/mapserv.exe" em vez de "/cgi-bin/mapserv.exe".

4. Adicionar o parâmetro seguinte às layers para as quais queremos uma ligação FastCGI:
         PROCESSING "CLOSE_CONNECTION=DEFER"
5. Testar a aplicação. Se a instalação tiver sido bem sucedida então deveremos ver o processo "mapserv.exe" no Windows Task Manager, mantendo-se aberto enquanto o utilizador interage com a aplicação.

Notas

Em modo FastCGI poderá não se verificar um aumento de performance embora haja um ganho em utilização de recursos e eficiência.

Com layers de shapefiles o parâmetro "CLOSE_CONNECTION=DEFER" é simplesmente ignorado, não havendo portanto, um ganho de performance assinalável, por maiores que sejam as shapefiles.

O FastCGI compensa em situações em que exista um "custo" de ligação elevado, por exemplo, em ligações a ArcSDE, Oracle ou PostGIS.

O melhor será sempre fazer testes de benchmarking.





sábado, 20 de fevereiro de 2010

Serviços geográficos disponibilizados em Portugal


O Capítulo Português do OSGeo teve a feliz ideia de, através do grupo de trabalho OGC Web Services, criar e manter uma lista de webservices nacionais ou contendo dados nacionais.

Os serviços listados são basicamente os do IGP, SNIRH, Entre Douro e Vouga Digital, Esri Portugal (MDT de 30 metros já mencionado neste blog) e Atlas Interactivo do Alentejo, Algarve e Andaluzia. Destes apenas o IGP dispõe de serviços WFS. Não é muito mas é o que temos.

Podemos, no entanto, ensaiar uma pequena listagem de "candidatos a felizes contemplados":
  • Web Map Service do Atlas de Portugal , cuja página diz "O serviço WMS do Atlas de Portugal encontra-se temporariamente indisponível". Substituir "temporariamente" por "indefinidamente". Não me lembro de ver este serviço disponível, num passado recente;
  • Web Map Service do SNIT da DGOTDU o qual necessita de acreditação, pelo menos "nesta fase de desenvolvimento do sistema". Não vejo que desenvolvimento visto utilizarem uma solução out of the box;
  • Geo-WebServices do IGeoE. Dividem-se em serviços pagos (carta militar 1:25.000 e 1:50.000) e gratuitos (carta militar 1:250.000 e 1:500.000). O IGeoE disponibiliza não só serviços WMS mas também ArcIMS. Exelente oportunidade para testar a classe OpenLayers.Layer.ArcIMS.
E é tudo, tirando alguns serviços publicados por acidente (por exemplo, WebSIGs municipais que consomem serviços wms "internos" que de interno têm muito pouco).

domingo, 14 de fevereiro de 2010

WMS no Maps


Há uns tempos atrás andei a testar as possibilidades de integração de Web Map Services (WMS) com a API do Google Maps.

Deixo aqui um pequeno exemplo. Neste exemplo foi utilizado o serviço WMS arcgis_online/MDT30m_PT_WGS84 da ESRI.

Para quem esteja interessado na temática WMS/Google Maps deixo as seguintes referências obrigatórias:

terça-feira, 9 de fevereiro de 2010

Google maps: curiosidades

Servidores

Mapa (G_NORMAL_MAP)
  • No mapa normal o Google utiliza quatro servidores para fazer balanceamento de carga: mt0, mt1, mt2 e mt3 (http://mt_.google.com);
  • Os servidores devolvem tiles de dimensão 256*256 no formato PNG;
Satélite (G_SATELLITE_MAP)
  • Para servir imagens de satélite o Google utiliza quatro servidores para fazer balanceamento de carga: kh0, kh1, kh2 e kh3 (http://kh_.google.com).
  • O "kh" significa Keyhole;
  • Os servidores devolvem tiles de dimensão 256*256 no formato JPG;
No modo híbrido G_HYBRID_MAP os dados são servidos tanto por servidores http://mt_.google.com como por servidores http://kh_.google.com. É utilizada uma combinação de satélite e mapa em que os dados do mapa são servidos em tiles transparentes.

Projecção dos tiles

Os tiles são projectados segundo a versão esférica da projecção de Mercator em que o raio da esfera é igual ao semi-eixo maior do elipsóide associado ao sistema WGS-84.

Na sintaxe da PROJ4 vamos ter:
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext
+no_defs
A projecção dos tiles é importante se quisermos trabalhar com Tile Overlays.

Nos restantes casos estaremos sempre a trabalhar com coordenadas geográficas (referentes ao sistema WGS-84), seja para fazer o upload de um ficheiro KML nos My Maps, seja na utilização da API.

Por exemplo, quando definimos o centro de um mapa e o nível de zoom, temos:
map.setCenter(new GLatLng(38.5, -9.5), 7);
GLatLng é um ponto definido em coordenadas geográficas (latitude e longitude) no sistema WGS-84.

domingo, 7 de fevereiro de 2010

Shapefile


Em 1998 a ESRI publicou um white paper, com a descrição técnica do formato ESRI Shapefile.

Nesse momento passou a ser possível, sem constrangimentos de qualquer ordem, a leitura e escrita neste formato, o qual se tornou (já era?) no standard de facto no que diz respeito a formatos vectoriais de SIG.

Aliás, nessa descrição técnica, na secção How Shapefiles Can Be Created, é referido explicitamente, depois de mencionar a linha de produtos ESRI, "Write directly to the shapefile specifications by creating a program".

Na realidade, este facto foi dos que mais contribuíram para o aparecimento de software open-source GIS. Repare-se que, existem ferramentas open-source que utilizam exclusivamente a shapefile como formato vectorial nativo. Exemplos? Por exemplo, o MapWindow GIS.

O mesmo podemos dizer da introdução do formato ARC/INFO ASCII GRID, o qual devido à sua natureza (ficheiro de texto com Header), não necessitou de ver a sua especificação publicada para que fosse adoptado por terceiros.

Enfim, a César o que é de César.