quinta-feira, 21 de março de 2013

Consulta Recursiva

Tenho uma tabelas órgãos que necessito apresentar uma hierarquia.

select * from orgaos


codigo codigo_pai sigla
3 2 SAGI
1 null PR
4 3 DGI
5 3 DFD
6 3 DM
7 3 DA
2 1 MDS
12 1 MTE
13 1 MRE
11 3 Gab/SAGI

Para representar este organograma


A consulta abaixo:

with recursive org (codigo, codigo_pai, sigla, deep) as (
  select codigo, codigo_pai, sigla,1
    from orgaos
    where codigo_pai is null
  union all
    select o1.codigo, o1.codigo_pai, o1.sigla,o2.deep+1
    from orgaos o1, org o2
    where o2.codigo = o1.codigo_pai
 
 )
 select * from org

me gerou


orgao orgao_pai sigla path deep
1 PR {1} 1
2 1 MDS {1,2} 2
3 2 SAGI {1,2,3} 3
4 3 DGI {1,2,3,4} 4
5 3 DFD {1,2,3,5} 4
6 3 DM {1,2,3,6} 4
7 3 DA {1,2,3,7} 4
11 3 Gab/SAGI {1,2,3,11} 4
12 1 MTE {1,12} 2
13 1 MRE {1,13} 2

terça-feira, 25 de março de 2008

Configure do MapServer

./configure \
--with-wfs \
--with-wfsclient \
--with-wmsclient \
--with-proj=/opt/proj-4.4.9 \
--with-gdal=/usr/local/bin/gdal-config \
--with-ogr=/usr/local/bin/gdal-config \
--with-php=/home/caio/Apache/php-5.2.5/ \
--with-mygis=yes \
--with-postgis \
--with-httpd=/usr/local/apache2/bin/httpd \
--prefix=/usr/local

Linha configuração PHP

./configure --with-regex=system \
--with-pgsql \
--with-png-dir \
--with-jpeg-dir \
--with-gd \
--with-zlib \
--enable-sockets \
--enable-wddx=shared \
--with-xmlrpc=shared \
--enable-calendar \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-cgi \
--with-ldap \
--with-pgsql=shared,/dados/pgsql/dados

quarta-feira, 19 de março de 2008

Instalação do POSTGIS

2.1. Exigências
PostGIS tem as seguintes exigências para construção e uso:
* Uma configuração e construção completos do código fonte PostgreSQL em árvore. PostGIS usa definições de processo de configuração/construção PostgreSQL para uma plataforma particular sua que está em construção. PostgreSQL está disponível em http://www.postgresql.org/.
* O compilador de GNU C (gcc). Alguns outros compiladores de C ANSI podem ser usados para compilar PostGIS, mas nós achamos 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 prover suporte a reprojeções coordenadas dentro de PostGIS. Proj4 está disponível. Para carregá-la utilize o site, http://www.remotesensing.org/proj.

Baixar o software de:
http://www.remotesensing.org/proj/

A versão utilizada para elaborar este documento foi proj-4.4.9.tar.gz

Descompactar o arquivo com o comando

tar -zxvf proj-4.4.9.tar.gz

No diretório criado executar os seguintes comandos

./configure --prefix=/opt/proj-4.4.9


gmake
su
gmake install


/**************************************************************************/
* (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/.

A versão utilizada para elaborar este documento foi proj-4.4.9.tar.gz

Descompactar o arquivo com o comando

tar -jxvf geos-2.2.3.tar.bz2

No diretório criado executar os seguintes comandos

./configure --prefix=/opt/geos-2.2.3
gmake
su
gmake install


/**************************************************************************/

2.2. PostGIS

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

PostGIS 1.0.0 pode ser construído com versões de PostgreSQL 7.1.x, 7.2.x ou 7.3.x. As versões de PostgreSQL anteriores não são suportadas.

1. Antes de você compilar os módulos do servidor de postGIS, você tem que compilar e instalar o pacote PostgreSQL.
Nota Se você planeja usar funcionalidade de GEOS você poderia 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) tente este truque. Isso fará com que corra o risco de compilar o PostgreSQL.

2. Faça o download do arquivo fonte PostGIS de http://postgis.refractions.net/postgis-1.0.0.tar.gz. Descomprima o arquivo no diretório "contrib" do fonte PostgreSQL organizando os fontes no diretório.

# cd [postgresql source tree]/contrib
# gzip -d -c postgis-1.0.0.tar.gz | tar xvf -

3. Uma vez feita a instalação de PostgreSQL, entrar no diretório de "postgis", e editar o arquivo Makefile.config.
* Se quiser dar suporte a reprojeção de coordenada, você tem que ter a biblioteca de Proj4 instalada, atribuir valor 1 a variável USE_PROJ, e eventualmente ajustar PROJ_DIR para direcionar a sua instalação para o diretório Proj4.
* Se quer usar funcionalidades GEOS, você tem que ter instalada a biblioteca de GEOS, atribuir valor 1 a variável USE_GEOS, e eventualmente ajustar GEOS_DIR para direcionar a sua instalação para o diretório GEOS.

/******************************************************************/
Para o suporte ao PROJ4 e GEOS foram alteradas as seguintes linhas
no arquivo Makefile.config

USE_PROJ=1
PROJ_DIR=/opt/proj-4.4.9
PROJ_DIR=/opt/proj-4.4.9

USE_GEOS=1
GEOS_DIR=/opt/geos-2.2.1



/******************************************************************/
4. Rode o compilador e instale comandos.

./configure --with-pgsql=/usr/local/pgsql/bin/pg_config --with-geos=/opt/geos-2.2.1/bin/geos-config --with-proj=/opt/proj-4.4.9/

# make
# su
# make install

Todos os arquivos são instalados relativamente no diretório de instalação do PostgreSQL, [prefix].
* Bibliotecas são instaladas [prefix]/lib/contrib.
* Arquivos de suporte importantes como postgis.sql são instalados em
[prefix]/share/contrib.
* Carregador e binaries livres são instalados em [prefix]/bin.
5. PostGIS requer para o PL/pgSQL extensão da linguagem procedural. Antes de carregar o arquivo postgis.sql, você tem que habilitar primeiro o PL/pgSQL. Você deveria usar o comando createlang. O Guia de Programador PostgreSQL 7.1 tem detalhes, caso você queira executá-lo manualmente.

# /usr/local/pgsql/bin/createlang plpgsql template1

6. Carregue o objeto PostGIS e defina funções no banco de dados carregando definições de arquivo de postgis.sql.
Copiar as bibliotecas do GEOS e PROJ para
o postgres
# cp /opt/geos-2.2.3/lib/* /usr/local/pgsql/lib
# cp /opt/proj-4.4.9/lib/* /usr/local/pgsql/lib

No SUSE é preciso copiar as bibliotecas para

# cp /opt/geos-2.2.3/lib/* /usr/lib
# cp /opt/proj-4.4.9/lib/* /usr/lib


# /usr/local/pgsql/bin/psql -d template1 -f /usr/local/pgsql/share/contrib/lwpostgis.sql

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

7. Para um completo uso de coordenada de identificadores de definição de sistemas EPSG, você também pode carregar as definições de arquivo spatial_ref_sys.sql e conteúdos de tabela SPATIAL_REF_SYS.

# /usr/local/pgsql/bin/psql -d template1 -f /usr/local/pgsql/share/contrib/spatial_ref_sys.sql

Instalação Postgres

Baixar o software do site:
http://www.postgresql.org/download/

Descompactar o arquivo
tar -jxvf postgresql-8.1.2.tar.bz2

no diretório criado digitar os comandos abaixo:

./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres

/usr/local/pgsql/bin/initdb -D -A /usr/local/pgsql/data --locale='en_US.LATIN1'

Atualizar no arquivo postgres.conf

port = 5432

lc_messages = 'en_US.LATIN1' # locale for system error message
# strings
lc_monetary = 'en_US.LATIN1' # locale for monetary formatting
lc_numeric = 'en_US.LATIN1' # locale for number formatting
lc_time = 'en_US.LATIN1'


/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

Instalação do POSTGIS

2.1. Exigências
PostGIS tem as seguintes exigências para construção e uso:
* Uma configuração e construção completos do código fonte PostgreSQL em árvore. PostGIS usa definições de processo de configuração/construção PostgreSQL para uma plataforma particular sua que está em construção. PostgreSQL está disponível em http://www.postgresql.org/.
* O compilador de GNU C (gcc). Alguns outros compiladores de C ANSI podem ser usados para compilar PostGIS, mas nós achamos 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 prover suporte a reprojeções coordenadas dentro de PostGIS. Proj4 está disponível. Para carregá-la utilize o site, http://www.remotesensing.org/proj.

Baixar o software de:
http://www.remotesensing.org/proj/

A versão utilizada para elaborar este documento foi proj-4.4.9.tar.gz

Descompactar o arquivo com o comando

tar -zxvf proj-4.4.9.tar.gz

No diretório criado executar os seguintes comandos

./configure --prefix=/opt/proj-4.4.9


gmake
su
gmake install


/**************************************************************************/
* (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/.

A versão utilizada para elaborar este documento foi proj-4.4.9.tar.gz

Descompactar o arquivo com o comando

tar -jxvf geos-2.2.3.tar.bz2

No diretório criado executar os seguintes comandos

./configure --prefix=/opt/geos-2.2.3
gmake
su
gmake install


/**************************************************************************/