Table of Contents
Compilando o TerraOGC no Linux
Arquivo atualizado para o uso do CMake. Para QMake, verifique as versões anteriores deste documento.
Dependências
Alguns pacotes necessários para compilar e usar o TerraOGC. Os nomes podem variar de distro para distro. Aqui seguem os do Mandriva:
- GD (criação de imagens)
- ZLib (compactação)
- PostgreSQL (SGBD)
- Apache (Web Server)
- Apache Xerces (API XML) >= 2.8.0
- cURL (API Web Client)
- LibZip (API p/ PKZip): Algumas distros não têm. Então baixe aqui.
- Boost Regexp (regular expressions)
Mandriva
- GD: libgd2, libgd2-devel
- ZLib: zlib1, zlib1-devel
- PostgreSQL: postgresql, postgresql-devel, postgresql-contrib, postgresql-plpgsql, postgresql-server
- Apache: apache-base, apache-conf
- Apache Xerces: libxerces-c0, libxerces-c0-devel
- cURL: libcurl4, libcurl-devel
- LibZip: libzip, libzip1-devel
OpenSUSE
- GD: gd, gd-devel
- ZLib: zlib, zlib-devel
- PostgreSQL: postgresql, postgresql-devel, postgresql-contrib, postgresql-server
- Apache: apache2
- Apache Xerces: Xerces-c, libXerces-c-devel
- cURL: libcurl4, libcurl-devel
- LibZip: libzip1 e libzip-devel (libzip2 no OpenSUSE 13.2)
- Boost: boost, boost-devel
Obs: a partir da versão 12.3 do OpenSUSE recomenda-se adicionar o repositório App:Geo e instalar o libgeotiff-devel, com os fontes da LibGeoTIFF, e libjpeg8-devel.
CentOS
- GD: gd e gd-devel
- ZLib: zlib e zlib-devel
- PostgreSQL: postgresql, postgresql-libs, postgresql-server, postgresql-contrib, postgresql-pl, postgresql-devel
- Apache: httpd
- Apache Xerces: Só encontrei pacotes ⇐ 2.7.0. Para gerar os pacotes:
- Baixe a versão 2.8.0 do site
- Para criar os pacotes use o comando:
# rpmbuild -ta xerces-c-src_2_8_0.tar.gz
- Instale os pacotes xerces-c e xerces-c-devel
- cURL: curl e curl-devel
- LibZip:
- Baixe a última versão do site
- Descompacte e entre no diretório
- Siga os procedimentos normais de instalação (./configure, make, su, make install)
- O default é instalar tudo no
/usr/local/
, inclusive o zip.h
- Extras: glibc-headers para código em C
Debian 5
- GD: libgd2-xpm, libgd2-xpm-dev
- ZLib: zlib1g, zlib1g-dev
- PostgreSQL: postgresql, postgresql-client, postgresql-contrib, libpq5, libpq-dev
- Apache: apache2
- Apache Xerces: libxerces-c28, libxerces-c2-dev
- cURL: libcurl3, libcurl4-openssl-dev
- LibZip: libzip1, libzip-dev
- Boost Regexp: libboost-regex, libboost-regex-dev
TerraLib
Obtendo e compilando a TerraLib.
Procedimento usando na versão 4.2.2, mas pode ser usada em outras versões posteriores com as devidas adaptações.
Crie uma pasta projetos
e crie a pasta para a TerraLib. Baixe a última TAG estável (nesse caso a 4.2.2). Use o CMake para compilar o projeto.
mkdir terralib422 cd terralib422 svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/build svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/src svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/extensions mkdir cmake && cd cmake cmake ../build/cmake
Após gerar esse código, é necessário mudar alguns parâmetros no arquivo terralib/cmake/CMakeCache.txt
. Alguns caminhos talvez precisem ser adaptados ao seu sistema:
- BUILD_TERRAMANAGER=ON
- BUILD_TERRAVIEW=OFF
- CMAKE_PROJECT_NAME=terralib
- GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff
- PostGIS_INCLUDE_DIR=/usr/include/pgsql
- SQLite_ENABLED=OFF
- TE_DTM_ENABLED=OFF
- TE_DXF_ENABLED=OFF
- TE_PDI_ENABLED=OFF
- TE_QT3_DRIVERS_ENABLED=OFF
- TE_QWT3_DRIVERS_ENABLED=OFF
- TE_SPL_ENABLED=OFF
- TE_STAT_ENABLED=OFF
- ZLIB_LIBRARIES:FILEPATH=/lib64/libz.so.1
Rodar o cmake de novo:
cmake ../build/cmake
e verificar se há algum erro de compilação. No meu ambiente eu ignorei a GDAL e diversas outras libs não usadas pelo TerraOGC.
Corrigir fontes TerraLib 422
Corrigir os seguintes arquivos da TerraLib 4.2.2:
Inserir a tag:
#include <unistd.h>
em src/terralib/kernel/TeConnectionPool.cpp e src/terralib/kernel/yyTemporal.cpp
Trocar o EPSG no arquivo TeProjection.cpp: 4979 → 4326 (Linhas 186 e 1435)
TePostgreSQL.cpp
Corrigir a linha do arquivo TePostgreSQL.cpp:
L728:
createTable += "\"" + (*it).rep_.name_ + "\" ";
L1030:
string q = "INSERT INTO "+tableName + " ( \""+ attrs+"\") " + " VALUES ("+values+") ";
L977:
attrs += "\" , \"";
TePostGIS.cpp
Corrigir o arquivo TePostGIS.cpp: L334:
createTable += "\"" + (*it).rep_.name_ + "\" ";
L1484:
create = "CREATE INDEX sp_idx_" + table + " ON " + table + " USING GIST (" + column + ")";
Esta última observação parece (L1484) ser aplicável ao PostGIS 2+.
Depois é só compilar
make
TerraOGC
Obtendo e compilando o TerraOGC. Você pode baixar a versão do TerraOGC compatível com a versão do TerraLib que você usa. Para a última versão usar o trunk
do SVN.
Baixa o TerraOGC
cd projetos svn co https://svn.dpi.inpe.br/terraogc/trunk/ terraogc
Prepara a TerraLib: duas opções, mover ou linkar. Para DEV melhor linkar.
cd terraogc mkdir lib && cd lib ln -s ../../terralib422/cmake/libterramanager.so . ln -s ../../terralib422/cmake/libterralib.so . ln -s ../../terralib422/cmake/libterralib_shp.so .
E ajusta no ~/bashrc:
export LD_LIBRARY_PATH=<your_path>projetos/terraogc/lib
Na produção, mover para lib.
Após isso, rodar o cmake para o TerraOGC. Ele será armazenado na pasta terraogc/bin, para evitar misturar com os demais pacotes de desenvolvimento.
cd terraogc/bin mkdir cmake && cd cmake cmake ../../build/cmake
Editar o terraogc/bin/cmake/CMakeCache.txt
. Aqui são poucos parâmetros para ajuste:
- CURL_LIBRARY=/usr/lib64/libcurl.so.4
- GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff
Roda o CMake de novo e compila:
cmake ../../build/cmake make
Após compilado, tudo fica nas subpastas do terraogc/bin/cmake/
. Duas opções, mover ou linkar. Para DEV melhor linkar.
cd terraogc/lib find ../bin/cmake -name "*.so" -exec ln -s {} . \; cd terraogc/bin find cmake -name "*.cgi" -exec ln -s {} . \;
Na produção, copiar ou mover para bin e lib ao invés de linkar.