Um SIG trata-se de um Sistema de Informação Geográfica, ou também Sistema de Informação Geoespacial.
Dois sistemas livres amplamente utilizados são o MapServer e o GeoServer. Conheço um pouco (bem pouco, na verdade) o MapServer e desconheço o outro. Minha intenção é documentar, nesta página, todo o processo para a instalação e configuração de ambos.
O MapServer é um WMS que roda como cgi, mas possui alguns módulos que dão suporte a algumas linguagens, como o PHP, e rodar diretamente do servidor Apache.
O GeoServer é uma aplicação java, que por esta razão necessita de um servidor de aplicações java para web. Além disso ele tem a possibilidade de, assim como o MapServer, obter dados a partir do PostGis
O PostgreSQL, ou postgres, é um banco relacional amplamente conhecido e utilizado. O PostGIS é um conjunto de extensões ao postgres que lhe confere a capacidade de realizar cálculos e armazenamento de informações georeferenciadas.
O Jetty é um servidor de aplicações java web escrito 100% em java. É conhecido por seu desempenho, em contraste com o ApacheTomcat. Uma opção para rodar o GeoServer é baixar o pacote binário e rodá-lo a partir do servidor Jetty embarcado no próprio GeoServer:
Aponte seu navegador para http://localhost:8080/geoserver e poderá ver seu servidor GeoServer rodando. Para se entrar na área restrita o nome de usuário é admin e a senha é geoserver.
Outra opção é pegar o pacote war e implantá-lo no ApacheTomcat. Com o Tomcat rodando, entre em sua interface de gerenciamento, provavelmente http://localhost:8180/manager para fazer o deploy. Talvez seja preciso editar as políticas de sistema para que tudo funcione, como pode ser visto no Southern Tip blog.
Caso você tenha shapefiles para testar, recomendo este tutorial.
No Ubuntu, após instalar o pacotes referentes ao PostgreSQL e ao PostGIS é preciso executar o seguinte procedimento para criar um template no postgres habilitado a executar funções SIG:
Entre como o usuário postgres:
Crie um banco de dados. Coloque o sufixo template_ para facilitar tua vida:
Habilite a linguagem plpgsql para criação de stored procedures:
Alimente o banco com as funções e tabelas de referência do sistema SIG (serão criadas várias funções e inserções no banco, aguarde):
Entre no banco criado (isto abrirá um terminal de comandos do postgresql):
Finalmente transforme o banco criado em um template:
Saia do terminal do postgres:
A partir daí pode-se criar novo bancos SIG a partir do nosso template criado. Recomendo a utilização do pgAdmin III (pacote pgadmin3).
Atenção: caso ainda não tenha feito, é preciso criar uma senha para o usuário postgres no próprio banco de dados. Abra um terminal de comando do postgres:
Altere a senha do usuário postgres:
E se for necessário logar no postgres remotamente, isto é, via tcp/ip a partir de outra máquina (útil para separar o banco de dados da aplicação SIG), é preciso editar o arquivo /etc/postgresql/8.2/main/postgresql.conf:
E o arquivo /etc/postgresql/8.2/main/pg_hba.conf:
Para carregar shapefiles siga os passos contidos neste ótimo tutorial. Só houve um problema que ocorreu comigo foi do sistema não encontrar automaticamente o número EPSG (Wikipedia:EPSG). Tive de obter a listagem gerada pelo próprio GeoServer e buscar o número correspondente aos dados.
Para carregar os shapefiles no postgis é preciso utilizar o programa shp2pgsql, instalado com os pacotes referentes ao postgis:
Onde SRID é um número que você deve encontrar da seguinte maneira:
Referência: started with PostGIS http://www.bostongis.com/?content_name=postgis_tut01
Isto criará um arquivo de comandos SQL arquivo.sql. Tive outros problemas ao tentar executar os comandos contidos no arquivo SQL: ele não estava em utf8, e sim em latin1; e o usuário geo_user que criei não tinha as permissões necessárias para criar tabelas no banco.
Bom, como meu banco está em utf8 tive de converter o arquivo SQL com o seguinte comando:
Quanto às permissões, é preciso conceder ao usuário em questão acesso à tabela geometry_columns, pois ela controla as colunas com as geometrias (pontos, linhas, polígonos) das demais tabelas no banco em que se deseja guardar informações geográficas. Também é preciso conceder permissões sobre a tabela spatial_ref_sys, que possui os dados geográficos necessários para o funcionamento do SIG.
Após tudo acertado basta executar o seguinte comando para criar uma tabelas contendo os dados geográficos extraídos do shapefile:
Para configurar o GeoServer siga os passos do seguinte tutorial.
Plugins para acesso a outras fontes de dados podem ser encontrados na página na sourceforge.
O ArcSDE é um sistema proprietário desenvolvido pela ESRI que efetua a conexão entre o sistema ArcGIS e diversos SGBDs. O GeoServer pode ser configurado para utilizar o ArcSDE como fonte de dados de suas requisiçõs.
Tutorial de como utilizar o plugin para conexão com o ArcSDE (note que o plugin não funciona no GeoServer 1.6 RC2 ou RC3.
Lembre-se de baixar o pacote com o patch da ESRI ArcSDE e colocar os todos os arquivos jar necessários (é só ver o tutorial) no diretório $GEOSERVER_HOME/webapps/geoserver/WEB_INF/lib/.
Instalado o GeoServer é preciso pensar: como criar um aplicação PHP com ela? Ok, não é preciso pensar nisso, mas é o que estou me perguntando agora.
A interface com o usuário apresentada pelo GeoServer é baseada na biblioteca de OpenLayers, que se trata de uma biblioteca javascriptaberta e livre para criação de sistemas semelhantes ao Google Maps ou ao MS Live Earth.
A configuração e personalização do openlayers exige bastante programação javascript, por isso recomendo a utilização do plugin do Eclipse jseclipse.