Capítulo 2. Instalação

Índice

2.1. Exigências
2.2. PostGIS
2.2.1. Criando PostGIS habilitando espacialmente um modelo de construção banco de dados
2.2.2. Atualização
2.2.3. Problemas Comuns
2.3. JDBC
2.4. Carregador/Descarregador

2.1. Exigências

PostGIS tem as seguintes exigências para construção e uso:

  • Uma instalação completa do PostgreSQL (incluindo servidor de headers).  PostgreSQL está disponível em http://www.postgresql.org/. Versão 7.2 ou posteriores.

  • O compilador de GNU C (gcc). Alguns outros compiladores de C ANSI podem ser usados para compilar PostGIS, mas foram achados poucos problemas ao compilar com gcc.

  • GNU Make (gmake ou make). Para muitos sistemas, GNU make é a versão default que faz falta. Para saber a versão, utilizar make -v. Outras versões de make não podem processar o PostGIS Makefile corretamente.

  • (Opcional) Biblioteca de reprojeção Proj4. A biblioteca Proj4 é usada para fornecer suporte a reprojeções coordenadas dentro de PostGIS. Proj4 está disponível para baixa em http://www.remotesensing.org/proj.

  • (Opcional) Biblioteca de geometria GEOS. A biblioteca GEOS é usada para fornecer testes em geometria (Touches(), Contains(), Intersects()) e operações (Buffer(), GeomUnion(), Difference()) com PostGIS. GEOS está disponível para baixa em http://geos.refractions.net/.

2.2. PostGIS

O módulo de PostGIS é uma extensão ao PostgreSQL servidor de retaguarda. Assim, PostGIS 1.2.1 requer um acesso completo do servidor de headers PostgreSQL organizado em diretório para compilar. O código fonte PostgreSQL está disponível em http://www.postgresql.org/.

PostGIS 1.2.1 pode ser construído com versões de PostgreSQL 7.2.0 ou posteriores. As versões de PostgreSQL anteriores não são suportadas.

  1. Antes de você compilar os módulos do servidor de PostGIS, terá que compilar e instalar o pacote PostgreSQL.

    Nota

    Se você planeja usar funcionalidade de GEOS precisará unir PostgreSQL à biblioteca de C++ padrão:

    LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE]

    Este é um trabalho voltado para exceções em C++ interando com ferramentas de desenvolvimento mais antigas. Se você
    perceber problemas estranhos (inesperadamente fechar uma retaguarda ou algo semelhante), faça esta tentativa. Isso fará com que corra o risco de compilar o PostgreSQL.

  2. Para recuperar o arquivo fonte PostGIS faça nova baixa em http://postgis.refractions.net/postgis-1.2.1.tar.gz. Descomprima o arquivo no diretório "contrib" do fonte PostgreSQL, organizando assim, os fontes no diretório.
    # cd [postgresql source tree]/contrib
    # gzip -d -c postgis-1.2.1.tar.gz | tar xvf -
  3. Entrar no diretório "postgis-1.2.1" e rodar:
    # ./configure
     
    • Se quiser dar suporte a reprojeção de coordenada, deverá ter a biblioteca de Proj4 instalada. Se ./configure não encontrá-la, tente usar  --with-proj=PATH para ajustar para um diretório específico da instalação Proj4.
    • Se quiser usar funcionalidades GEOS, terá que ter instalada a biblioteca de GEOS. Se ./configure não encontrá-la, tente usar  --with-geos=PATH para especificar o path completo para o programa geos-config path completo.
  4. Rodar o compilador e instalar comandos.
    # make
    # make install

    Todos os arquivos são instalados usando informações fornecidas por pg_config.

    • Bibliotecas são instaladas [pkglibdir]/lib/contrib.

    • Arquivos de suporte importantes como lwpostgis.sql são instalados em
      prefix]/share/contrib.

    • Carregador e binários livres são instalados em [bindir]/.
  5. PostGIS requer para o PL/pgSQL extensão da linguagem procedural. Antes de carregar o arquivo lwpostgis.sql, terá que habilitar primeiro o PL/pgSQL. Deverá usar o comando createlang. O Guia de Programador PostgreSQL tem os detalhes, caso queira executá-lo manualmente.

    # createlang plpgsql [yourdatabase]
  6. Carregar o objeto PostGIS e definir funções no banco de dados, carregando definições de arquivo lwpostgis.sql.

    # psql -d [yourdatabase] -f lwpostgis.sql

    Extensões de servidor de PostGIS agora estão carregadas e prontas para uso.

  7. Para um completo uso de coordenada de identificadores de definição de sistemas EPSG, poderá tambem carregar o arquivo de definições  spatial_ref_sys.sql e conteúdos de tabela SPATIAL_REF_SYS.

    # psql -d [yourdatabase] -f spatial_ref_sys.sql

    2.2.1. Criando PostGIS habilitando espacialmente um modelo de construção de banco de dados

Algumas distribuições empacotadas de PostGIS (em particular os instaladores Win32 para o PostGIS >= 1.1.5) carregam as funções de PostGIS dentro de um banco de dados chamado template_postgis. Se o banco de dados template_postgis existir em sua instalação de PostgreSQL, então é possível para usuários e/ou as aplicações, criarem bancos de dados espacialmente habilitados, usando um único comando. Note que em ambos os casos, o usuário do banco de dados terá um grande privilégio para criar novos bancos de dados.

Do shell:

# createdb -T template_postgis my_spatial_db

Do SQL:

postgres=# CREATE DATABASE my_spatial_db
TEMPLATE=template_postgis

2.2.2. Atualização

Atualizando bancos de dados espacial existente pode ser complicado como requer a recolocação ou a introdução de novas definições de objeto de PostGIS

Infelizmente nem todas as definições podem ser substituídas facilmente em um banco de dados vivo, assim às vezes sua melhor aposta são um processo de descarregar/carregar (dump/reload). 

PostGIS fornece uma proceduce SOFT UPGRADE para liberações menores ou de pequenas correções (bugfix) e uma procedure HARD UPGRADE para liberações maiores.

Antes de tentar atualizar o postgis, é sempre válido fazer uma cópia dos seus dados. Se usar o flag -Fc para pg_dump, estará apto a restaurar o descarregador com um HARD UPGRADE.

2.2.2.1. Soft upgrade

Soft upgrade consiste do fonte de script lwpostgis_upgrade.sql em seu banco de dados espacial:

$ psql -f lwpostgis_upgrade.sql -d your_spatial_database

Se um soft upgrade não for possível, o script abortará e será advertido sobre o HARD UPGRADE que esá sendo requerido, assim não hesite tentar primeiro um soft upgrade.

Se um melhoramento macio não for possível o certificado abortar e você estará advertido sobre o MELHORAMENTO DURO que está sendo requerido, assim que não hesitate tentar primeiramente um melhoramento macio.

Note

Se você não encontrar o arquivo lwpostgis_upgrade.sql, estará usando uma versão antereior a 1.1 e gerará esse arquivo por si mesmo. Isto é feito com o seguinte comando:

$ utils/postgis_proc_upgrade.pl lwpostgis.sql > lwpostgis_upgrade.sql

2.2.2.2. Hard upgrade

Por HARD UPGRADE pretendemos descarregar/carregar (dump/reload) do banco de dados habilitando o postgis completo. Precisará de um HARD UPGRADE quando o armazenamento interno dos objetos de postgis alterar ou quando o SOFT UPGRADE  não for possível. O apêndice  Notas de Versão reportará para cada versão se você necessitar descarregar/carregar (HARD UPGRADE) para atualizar.

PostGIS provides an utility script to restore a dump produced with the pg_dump -Fc command. It is experimental so redirecting its output to a file will help in case of problems. The procedure is as follow:

PostGIS fornece um script utilitário para restaurar uma descarga produzida com o comando pg_dump -Fc. Assim, é experimental redirecionar sua  saída para um arquivo que o ajudará em caso de problemas. O procedimento é como segue:

Criar um "custom-format" para descarregar do banco de dados se quiser atualizar (chamamos de "olddb").

$ pg_dump -Fc olddb > olddb.dump

Restaurar a descarga atualizando contextualmente postgis em um banco de dados novo. O novo banco de dados não pode existir. postgis_restore aceita parâmetros  createdb depois da descarga de um nome de arquivo (file name) e isso pode por instância ser usado se estiver usando o caracter enconding non-default para seu banco de dados. Chamamos de “newdb”, com UNICODE como o caracter encoding:

$ sh utils/postgis_restore.pl lwpostgis.sql newdb olddb.dump -E=UNICODE > restore.log

Certificar-se de que todo objeto de descarga restaurado realmente tenha que ser restaurado dda descarga e não entrar em conflito com esses definidos em lwpostgis.sql

$ grep ^KEEPING restore.log | less

Se atualizar de PostgreSQL < 8.0 para >= 8.0 poderá  apagar o attrelid, o varattnum e as colunas do stats na tabela dos geometry_columns, que não  é mais necessário. Mantê-los não terá problemas. DROPPING THEM WHEN REALLY NEEDED WILL DO HURT !

$ psql newdb -c "ALTER TABLE geometry_columns DROP attrelid"
$ psql newdb -c "ALTER TABLE geometry_columns DROP varattnum"
$ psql newdb -c "ALTER TABLE geometry_columns DROP stats"

A tabela spatial_ref_sys são recuperadas da descarga, para assegurar seus costumes adicionais são mantidos, mas a distribuição pôde conter modificação como voce recupera suas entradas, apagar a tabela e a fonte de uma nova. Se fizer adições, supomos que conheça como recuperá-las antes de atualizar a tabela. Substituí-la com a nova é feita desta forma:

$ psql newdb
newdb=> delete from spatial_ref_sys;
DROP
newdb=> \i spatial_ref_sys.sql
	

2.2.3. Problemas Comuns

Existem várias coisas para conferir quando sua instalação ou atualização não acontece como você espera.

  1. Será mais fácil se você descomprimir os arquivos de PostGIS no diretório "contrib" do fonte PostgreSQL em árvore. Porém, se isto não for possível por alguma razão, você poderá criar uma variável de desenvolvimento PGSQL_SRC para o caminho do diretório fonte PostgreSQL Isto permitirá você compilar PostGIS, mas o comando make install pode falhar, assim voce deverá estar preparado para copiar a biblioteca de PostGIS e arquivos executáveis para os seus locais apropriados você.

  2. Verifique se você instalou PostgreSQL 7.2 ou mais novo, e então você estará compilando mesma versão de fonte de PostgreSQL contra a versão de PostgreSQL que está executando. Confusões podem ocorrer quando sua distribuição (Linux) já instalou PostgreSQL, caso contrário, voce pode ter instalado PostgreSQL antes e se esquecido disto. PostGIS só trabalhará com versões PostgreSQL 7.2 ou mais novas. Mensagens de erros estranhas e inesperadas resultarão se você usar uma versão mais velha. Para conferir a versão de PostgreSQL que está executando, conecte-se ao banco de dados, usando psql e execute o comando:

    SELECT version();

    Se rodar uma distribuição baseada RPM, voce pode verificar a existência de pacotes pré-instaladores usando o comando rpm como segue:
     rpm -qa | grep postgresql

Também verifique se fez qualquer alteração necessária do Makefile.config. Isto inclui:
  1. Se quiser pode fazer reprojeções coordenadas, deverá instalar a biblioteca de Proj4 em seu sistema, atribuir 1 a variável USE_PROJ e para seu prefixo de instalação PROJ_DIR dentro de Makefile.config.

  2. Se você quer estar hábil para usar funções de GEOS, deverá instalar a biblioteca de GEOS em seu sistema, e atribuir 1 a variável USE_GEOS e para sua instalação GEOS_DIR dentro de Makefile.config.

2.3. JDBC

As extensões de JDBC provêem de objetos de Java correspondentes aos tipos de PostGIS internos. Estes objetos podem ser usados para gravar clientes Java, que verificam o banco de dados de PostGIS e extraem ou fazem cálculos em dados de GIS em PostGIS.
  1. Entrar no sub-diretório de distribuição de PostGIS jdbc.

  2. Editar Makefile para prover os caminhos corretos de seu compilador de java (JAVAC) e interprete (JAVA).

  3. Executar o comando make. Copiar o arquivo postgis.jar onde quer que mantenha suas bibliotecas de java.

2.4. Carregador/Descarregador

Os dados para o carregador e descarregador são construídos e instalados automaticamente, como parte da construção de PostGIS. Para construí-los e os instalá-los manualmente, execute os comandos, conforme abaixo descritos:

# cd postgis-1.2.1/loader
# make
# make install

O carregador é chamado shp2pgsql e converte arquivos ESRI Shape em SQL apropriado por carregar no PostGIS/PostgreSQL. O descarregador é chamado pgsql2shp e converte tabelas PostGIS em arquivos ESRI Shape.