Você está na página 1de 89

Manual PostGIS

Sumrio
1. Introduo
1.1. Crditos
1.2. Mais Informaes
2. Instalao
2.1. Exigncias
2.2. PostGIS
2.2.1. Criando PostGIS habilitando espacialmente um banco de dados de modelo de
construo
2.2.2. Melhorias
2.2.3. Problemas Comuns
2.3. JDBC
2.4. Carregador/Descarregador
3. Perguntas Mais Frequentes
4. Usando PostGIS
4.1. Objetos GIS
4.1.1. Padres de OpenGIS WKB e WKT
4.1.2. Padres de PostGIS EWKB, EWKT e Forma Cannica
4.1.3. SQL-MM Parte 3
4.2. Usando Padres de OpenGIS
4.2.1. Tabela de Sistemas de Referncias Espacial (SPATIAL_REF_SYS)
4.2.2. Tabela de Colunas Geomtricas (GEOMETRY_COLUMNS)
4.2.3. Criando uma Tabela de espacial
4.2.4. Assegurando-se conforme a geometria de OpenGIS
4.3. Carregando Dados de GIS
4.3.1. Usando SQL
4.3.2. Usando o Carregador
4.4. Recuperando Dados de GIS
4.4.1. Usando SQL
4.4.2. Usando o Descarregador
4.5. Construindo ndices
4.5.1. ndices GiST
4.5.2. Usando ndices
4.6. Queries Complexas
4.6.1. Vantagens no Uso de ndices
4.6.2. Exemplos de SQL Espacial
4.7. Usando Servidor de Mapas
4.7.1. Uso bsico
4.7.2. Perguntas Mais Frequentes
4.7.3. Uso Avanado
4.7.4. Exemplos
4.8. Clientes de Java (JDBC)
4.9. Clientes de C (libpq)
4.9.1. Cursores de Texto
4.9.2. Cursores Binrios
5. Tipos de Performance
5.1. Tabelas Pequenas de Geometrias Grandes
5.1.1. Descrio de problemas
5.1.2. Envolvimento com o trabalho
5.2. CLUSTERing em ndices da geometria
5.3. Evitando a converso da dimenso

6. Referncia PostGIS
6.1. Funes de OpenGIS
6.1.1. Funes de Gerenciamento
6.1.2. Funes de Relacionamento da Geometria
6.1.3. Funes de Processamento da Geometria
6.1.4. Assessores Geomtricos
6.1.5. Construtores Geomtricos
6.2. Extenses PostGIS
6.2.1. Funes de Gerenciamento
6.2.2. Operadores
6.2.3. Funes de Medida
6.2.4. Sada Geomtricas
6.2.5. Construtores Geomtricos
6.2.6. Editores Geomtricos
6.2.7. Referncia Linear
6.2.8. Variado
6.2.9. Suporte a grandes transaes (Long Transactions)
6.3. Funes SQL-MM
6.4. Funes ArcSDE
7. Relatando Erros
A. Apendice
A.1. Notas de Verso
A.1.1. Verso 1.2.1
A.1.2. Verso 1.2.0
A.1.3. Verso 1.1.6
A.1.4. Verso 1.1.5
A.1.5. Verso 1.1.4
A.1.6. Verso 1.1.3
A.1.7. Verso 1.1.2
A.1.8. Verso 1.1.1
A.1.9. Verso 1.1.0
A.1.10. Verso 1.0.6
A.1.11. Verso 1.0.5
A.1.12. Verso 1.0.4
A.1.13. Verso 1.0.3
A.1.14. Verso 1.0.2
A.1.15. Verso 1.0.1
A.1.16. Verso 1.0.0
A.1.17. Verso 1.0.0RC6
A.1.18. Verso 1.0.0RC5
A.1.19. Verso 1.0.0RC4
A.1.20. Verso 1.0.0RC3
A.1.21. Verso 1.0.0RC2
A.1.22. Verso 1.0.0RC1

PostGIS foi desenvolvido por Refractions Research Inc, como uma tecnologia de banco
de dados espacial no projeto de pesquisa. Refractions uma companhia de consultoria
em GIS e banco de dados localizada em Victoria, British Columbia, Canad, especializada
em integrao de dados e desenvolvimento de software customizado. A finalidade deste
manual de apoiar uma gama de funcionalidade de GIS importante, incluindo suporte
completo do OpenGIS, construo de topologia avanada (coberturas, superfcies, redes),
ferramentas de interface do usurio de mesa visando e editando dados de GIS, e
ferramentas de acesso baseadas na web.
1.1. Crditos

Sandro Santilli <strk@refractions.net>


Coordena todos os erros (bugs) fixando e mantendo o esforo, a integrao de novas
funcionalidades GEOS, e novas funes.
Chris Hodgson <chodgson@refractions.net>
Mantem novos funes e suporte ao ndice 7.2.
Paul Ramsey <pramsey@refractions.net>
Conserva a trilha da documentao e empacotamento.
Jeff Lounsbury <jeffloun@refractions.net>
Mantm o desenvolvimento original do Shape no programa de carga/descarga.
Dave Blasby <dblasby@gmail.com>
Dave, o principal desenvolvedor de PostGIS, mantm o lado de servidor de objetos e
suporte a ndice, o lado de servidor de funes analticas.
Outros contribuidores
Em ordem alfabtica: Alex Bodnaru, Alex Mayrhofer, Bernhard Reiter, Bruce Rindahl,
Bruno Wolff III, Carl Anderson, Charlie Savage, David Skea, David Techer, IIDA Tetsushi,
Geographic Data BC, Gerald Fenoy, Gino Lucrezi, Klaus Foerster, Kris Jurka, Mark CaveAyland, Mark Sondheim, Markus Schaber, Michael Fuhr, Nikita Shulga, Norman Vine,
Olivier Courtin, Ralph Mason, Steffen Macke.

Bibliotecas de suportes importante


A biblioteca das operaes geomtricas GEOS e o trabalho algortmico de Martin Davis
<mbdavis@vividsolutions.com> de Vivid Solutions em faz-la todas trabalharem.
A biblioteca de projeo cartogrfica Proj4 e o trabalho de Gerald Evenden and Frank
Warmerdam em cri-la e mant-la.
1.2. Mais Informaes

O software, a documentao e as novidades mais recentes do PostGIS esto


disponveis no site, http://postgis.refractions.net.

Mais informaes sobre a biblioteca de operaes geomtricas GEOS est


disponvel em http://geos.refractions.net.

Mais informaes sobre a biblioteca de reprojeo Proj4 est disponvel em http://


www.remotesensing.org/proj.

Mais informaes sobre o servidor da banco de dados PostgreSQL est disponvel


no site principal de PostgreSQL, http://www.postgresql.org.

Mais informaes sobre ndice GiST est disponvel no site de


desenvolvimento PostgreSQL GiST,http://www.sai.msu.su/~megera/postgres/gist.

Mais informaes sobre servidor de mapas na internet Mapserver est disponvel


em http://mapserver.gis.umn.edu/.

As "caractersticas simples para especificao do SQL " est disponvel no


Consrcio de OpenGIS no site: http://www.opengis.org/.

Captulo 2. Instalao

2.1. Exigncias
PostGIS tem as seguintes exigncias para construo e uso:

Uma instalao completa do PostgreSQL (incluindo servidor de headers).


PostgreSQL est disponvel em http://www.postgresql.org/. Verso 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 verso default
que faz falta. Para saber a verso, utilizar make -v. Outras verses de make no
podem processar o PostGIS Makefile corretamente.

(Opcional) Biblioteca de reprojeo Proj4. A biblioteca Proj4 usada para fornecer


suporte a reprojees coordenadas dentro de PostGIS. Proj4 est disponvel 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 operaes
(Buffer(), GeomUnion(), Difference()) com PostGIS. GEOS est disponvel para
baixa em http://geos.refractions.net/.

2.2. PostGIS
O mdulo de PostGIS uma extenso ao PostgreSQL servidor de retaguarda. Assim,
PostGIS 1.2.1 requer um acesso completo do servidor de headers PostgreSQL
organizado em diretrio para compilar. O cdigo fonte PostgreSQL est disponvel em
http://www.postgresql.org/.
PostGIS 1.2.1 pode ser construdo com verses de PostgreSQL 7.2.0 ou posteriores. As
verses de PostgreSQL anteriores no so suportadas.
1.

Antes de voc compilar os mdulos 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++ padro:

2.
3.

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


Este um trabalho voltado para excees em C++ interando com ferramentas de
desenvolvimento mais antigas. Se voc
perceber problemas estranhos (inesperadamente fechar uma retaguarda ou algo
semelhante), faa esta tentativa. Isso far com que corra o risco de compilar o
PostgreSQL.

4.

Para recuperar o arquivo fonte PostGIS faa nova baixa em http://


postgis.refractions.net/postgis-1.2.1.tar.gz. Descomprima o arquivo no diretrio
"contrib" do fonte PostgreSQL, organizando assim, os fontes no diretrio.
# cd [postgresql source tree]/contrib
# gzip -d -c postgis-1.2.1.tar.gz | tar xvf Entrar no diretrio "postgis-1.2.1" e rodar:
# ./configure

5.
6.
7.
8.
9.

10.
11.
12.
13.
14.

Se quiser dar suporte a reprojeo de coordenada, dever ter a biblioteca de


Proj4 instalada. Se ./configure no encontr-la, tente usar --with-proj=PATH
para ajustar para um diretrio especfico da instalao Proj4.
Se quiser usar funcionalidades GEOS, ter que ter instalada a biblioteca de
GEOS. Se ./configure no encontr-la, tente usar --with-geos=PATH para
especificar o path completo para o programa geos-config path completo.

Rodar o compilador e instalar comandos.


# make
# make install
Todos os arquivos so instalados usando informaes fornecidas por pg_config.

Bibliotecas so instaladas [pkglibdir]/lib/contrib.

Arquivos de suporte importantes como lwpostgis.sql so instalados em


prefix]/share/contrib.

Carregador e binrios livres so instalados em [bindir]/.

15.
16. PostGIS requer para o PL/pgSQL extenso 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.
17. # createlang plpgsql [yourdatabase]
18. Carregar o objeto PostGIS e definir funes no banco de dados, carregando
definies de arquivo lwpostgis.sql.
19. # psql -d [yourdatabase] -f lwpostgis.sql
20. Extenses de servidor de PostGIS agora esto carregadas e prontas para uso.
21. Para um completo uso de coordenada de identificadores de definio de sistemas
EPSG, poder tambem carregar o arquivo de definies spatial_ref_sys.sql e
contedos de tabela SPATIAL_REF_SYS.
22. # psql -d [yourdatabase] -f spatial_ref_sys.sql
2.2.1. Criando PostGIS habilitando espacialmente um modelo de construo de banco
de dados
Algumas distribuies empacotadas de PostGIS (em particular os instaladores Win32
para o PostGIS >= 1.1.5) carregam as funes de PostGIS dentro de um banco de dados
chamado template_postgis. Se o banco de dados template_postgis existir em sua
instalao de PostgreSQL, ento possvel para usurios e/ou as aplicaes, criarem
bancos de dados espacialmente habilitados, usando um nico comando. Note que em
ambos os casos, o usurio do banco de dados ter um grande privilgio 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. Atualizao
Atualizando bancos de dados espacial existente pode ser complicado como requer a
recolocao ou a introduo de novas definies de objeto de PostGIS.
Infelizmente nem todas as definies podem ser substitudas facilmente em um banco de
dados vivo, assim s vezes sua melhor aposta so um processo de descarregar/carregar
(dump/reload).
PostGIS fornece uma proceduce SOFT UPGRADE para liberaes menores ou de
pequenas correes (bugfix) e uma procedure HARD UPGRADE para liberaes maiores.

Antes de tentar atualizar o postgis, sempre vlido fazer uma cpia 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 no for possvel, o script abortar e ser advertido sobre o HARD
UPGRADE que es sendo requerido, assim no hesite tentar primeiro um soft upgrade.
Se um melhoramento macio no for possvel o certificado abortar e voc estar advertido
sobre o MELHORAMENTO DURO que est sendo requerido, assim que no hesitate
tentar primeiramente um melhoramento macio.
Note
Se voc no encontrar o arquivo lwpostgis_upgrade.sql, estar usando uma verso
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 no
for possvel. O apndice Notas de Verso reportar para cada verso 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 utilitrio para restaurar uma descarga produzida com o
comando pg_dump -Fc. Assim, experimental redirecionar sua sada 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 no pode existir. postgis_restore aceita parmetros createdb
depois da descarga de um nome de arquivo (file name) e isso pode por instncia 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 no 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 no mais necessrio. Mant-los
no 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 so recuperadas da descarga, para assegurar seus costumes
adicionais so mantidos, mas a distribuio pde conter modificao como voce recupera
suas entradas, apagar a tabela e a fonte de uma nova. Se fizer adies, supomos que
conhea 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 vrias coisas para conferir quando sua instalao ou atualizao no acontece
como voc espera.
1.

Ser mais fcil se voc descomprimir os arquivos de PostGIS no diretrio "contrib"


do fonte PostgreSQL em rvore. Porm, se isto no for possvel por alguma razo,
voc poder criar uma varivel de desenvolvimento PGSQL_SRC para o caminho
do diretrio 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 executveis para os seus locais apropriados
voc.

2.

Verifique se voc instalou PostgreSQL 7.2 ou mais novo, e ento voc estar
compilando mesma verso de fonte de PostgreSQL contra a verso de
PostgreSQL que est executando. Confuses podem ocorrer quando sua
distribuio (Linux) j instalou PostgreSQL, caso contrrio, voce pode ter instalado
PostgreSQL antes e se esquecido disto. PostGIS s trabalhar com verses
PostgreSQL 7.2 ou mais novas. Mensagens de erros estranhas e inesperadas
resultaro se voc usar uma verso mais velha. Para conferir a verso de
PostgreSQL que est executando, conecte-se ao banco de dados, usando psql e
execute o comando:

3.
4.

SELECT version();
Se rodar uma distribuio baseada RPM, voce pode verificar a existncia de
pacotes pr-instaladores usando o comando rpm como segue:
rpm -qa | grep postgresql

Tambm verifique se fez qualquer alterao necessria do Makefile.config. Isto inclui:


1. Se quiser pode fazer reprojees coordenadas, dever instalar a biblioteca de
Proj4 em seu sistema, atribuir 1 a varivel USE_PROJ e para seu prefixo de
instalao PROJ_DIR dentro de Makefile.config.
2.

Se voc quer estar hbil para usar funes de GEOS, dever instalar a biblioteca
de GEOS em seu sistema, e atribuir 1 a varivel USE_GEOS e para sua instalao
GEOS_DIR dentro de Makefile.config.

2.3. JDBC
As extenses de JDBC provem 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 clculos em dados de GIS
em PostGIS.
1. Entrar no sub-diretrio de distribuio 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 so construdos e instalados
automaticamente, como parte da construo de PostGIS. Para constru-los e os installos 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.

Captulo 3. Perguntas Mais Frequentes

3.1. Que tipo de objetos geomtricos eu posso armazenar?


Voc pode armazenar point, linestring, polygon, multipoint, multiline, multipolygon, e
colees geomtricas. Estes so especificados Open GIS Well Known Text (com
extenses XYZ,XYM,XYZM).

3.2.
Como acrescentar um objeto de GIS no banco de dados?

Primeiro voc precisa criar uma tabela com uma coluna de tipo "geometry" para carregar
os dados de GIS. Conecte seu banco de dados com psql e execute o comando SQL
seguinte:
CREATE TABLE gtest ( ID int4, NAME varchar(20) );
SELECT AddGeometryColumn('', 'gtest','geom',-1,'LINESTRING',2);
Se a adio de coluna de geometria falhar, voc provavelmente no carregou as funes
e objetos de PostGIS dentro do banco de dados. Veja as instrues de instalao.
Ento, voc pode inserir uma geometria na tabela, usando insero de declarao do
SQL .
O prprio objeto GIS formatado usando o formato OpenGIS Consortium "well-known
text"
INSERT INTO gtest (ID, NAME, GEOM) VALUES (1, 'First Geometry',
GeomFromText('LINESTRING(2 3,4 5,6 5,7 8)', -1));
Para mais informao sobre outros objetos GIS, veja referncia de objeto..
Para ver os dados de GIS na tabela:
SELECT id, name, AsText(geom) AS geom FROM gtest;
O valor de retorno dever ser :
id | name | geom
----+----------------+----------------------------1 | First Geometry | LINESTRING(2 3,4 5,6 5,7 8)
(1 row)
3.3.
Como fazer uma seleo espacial?

o mesmo caminho que constri outras selees de banco de dados, como uma
combinao SQL de retornos de valores, funes e teste verdadeiro ou falso.
Para fazer uma seleo espacial, existem dois caminhos que so importantes de se
manter em mente ao construir sua pergunta: pode fazer um ndice espacial; e voc faz
clculos enormes em um grande nmero geometries.
No geral, se quiser usar operadores de interseo (&&) que testa se salto de caixa de
interseo caracterstica.O uso do operador && til porque se um ndice espacial est
disponvel velocidade acima do teste, o operador && far uso disto. Isto pode fazer as
selees muito mais rpida.
Note que o salto de caixas usou a seleo que deve ser declarada explicitamente como
um box3d que usa o ":: box3d" que lana a operao.

Poder tambm fazer uso de funes espaciais, como Distance(), Intersects(), Contains()
e Within(), entre outros, e obter resultados abaixo de suas buscas.
A maior seleo espatial incluem ambos um teste posicionado e um teste de funo
spatial. O teste do ndice serve para limitar o nmero de retornos, somente eles que
podem se encontrar com a condio do interesse. As funes espaciais so ento para
uso de teste de condio exata.
SELECT id, the_geom FROM thetable
WHERE
the_geom && 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'
AND
Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))';
3.4.
Como fazer seleo espacial rpida em tabelas grandes?

Selees rpidas em tabelas grandes uma finalidade da existncia propriamente de


bancos de dados espaciais (junto com suporte transacional), tendo assim, a importncia
de um bom ndice.
Para construir um ndice espacial em uma tabela com uma coluna geometrica, use a
funo
"CREATE INDEX" como segue:
CREATE INDEX [indexname] ON [tablename]
USING GIST ( [geometrycolumn] );
A opo "USING GIST" informa ao servidor para usar um ndice GiST (Generalized
Searche Tree).
Nota
ndices GiST so assumidos para quem no sabe o que fazer com o dado. ndices para
esses dados soltos, chamado tambem de ndices lossy, usa um objeto "proxy" (no caso
espacial, uma caixa delimitada) para construir o ndice.
Dever tambm assegurar-se de que se a seleo de PostgreSQL tiver muita informao
sobre seu ndice para fazer decises racionais, quando us-lo. Para fazer isto, voc tem
que pegar estatsticas em suas tabelas geomtricas.
Para verses de PostgreSQL 8.0.x e superiores, rode o comando VACUUM ANALYZE.
Para verses de PostgreSQL 7.4.x e inferiores, rode o comando SELECT
UPDATE_GEOMETRY_STATS().
3.5.
Porque so descartados os ndices PostgreSQL R-Tree?

Verses anteriores de PostGIS usaram os ndices PostgreSQL R-Tree. Porm,


PostgreSQL R-Trees tem sido descartado completamente desde a verso 0.6, e ndices
espaciais so proporcionados com esquema R-Tree-over-GiST.
Nossos testes mostraram velocidade de procura para R-Tree nativa e GiST serem
comparveis. PostgreSQL R-Trees nativo tem duas limitaes que os fazem indesejveis
para o uso com caractersticas GIS (nota-se que estas limitaes so devido a atual
implementao de PostgreSQL R-Tree nativa, no o conceito de R-Tree em geral):

ndices R-Tree em PostgreSQL no podem controlar caractersticas que so de


tamanhos maiores que 8K. ndices GiST podem, usando-se o "lossy" de
substituio a caixa delimitada para caracterstica prpria.

ndices R-Tree em PostgreSQL no so nenhuma "null safe" (sem segurana),


assim construindo um ndice em uma coluna de geometria que contenha
geometrias nulas falharo.

3.6.
Porque usar a funo AddGeometryColumn () e todas as funes restante de OpenGIS?

Se voc no quer usar funes de suporte OpenGIS, no use. Simplesmente crie tabelas
com verses mais velhas dentro, definindo suas colunas de geometria na declarao do
CREATE . Todas suas geometrias tero SRIDs de valor -1, e os meta-dados de tabelas
OpenGIS no sero preenchidas corretamente. Porm, isto vai causar falhas na maioria
das aplicaes baseadas em PostGIS, e geralmente sugerido que voc use
AddGeometryColumn () para criar tabelas de geometrias.
Mapserver uma aplicao que faz uso dos meta-dados de geometry_columns.
Especificamente, Mapserver pode usar o SRID da coluna de geometria para fazer
caractersticas de reprojees rpidas dentro da correta projeo de mapa.
3.7.
Qual o melhor caminho para achar todos os objetos dentro de outro objeto de rdio?

Para se usar o banco de dados eficientemente, melhor fazer uma seleo de rdio com
qual combina o teste de rdio com um teste de caixa de salto: o teste de caixa
delimitada usa o ndice espacial, enquanto um subconjunto de dados de acesso rpido,
com o qual o teste de rdio aplicado.
A funo Expand() uma maneira acessvel de ampliar um salto de caixa para permitir
uma busca do ndice de uma regio do interesse. A combinao de uma clusula do
ndice do acesso rpido e de um teste exato mais lento da distncia, fornece a melhor
combinao da velocidade e da preciso para esta seleo.
Por exemplo, procurar todos os objetos com 100 metros de POINT(1000 1000) a seleo
a seguir trabalharia bem:
SELECT *
FROM GEOTABLE

WHERE
GEOCOLUMN && Expand(GeomFromText('POINT(1000 1000)',-1),100)
AND
Distance(GeomFromText('POINT(1000 1000)',-1),GEOCOLUMN) < 100;
3.8.
Como executar uma reprojeo coordenada como parte de uma seleo?

Para executar uma reprojeo, a fonte e sistemas de coordenada de destino devem ser
definidos dentro da tabela SPATIAL_REF_SYS, e as geometrias que so reprojetadas j
devem ser usadas em atribuio do SRID. Uma vez isso terminado, uma reprojeo
to simples quanto recorrer ao destino desejado SRID.
SELECT Transform(GEOM,4269) FROM GEOTABLE;

Captulo 4. Usando PostGIS


4.1. Objetos de GIS
Suporte PostGIS a objetos de GIS so "Simple Features" (Caractersticas Simples)
definidas pelo OpenGIS Consortium (OGC). Note que PostGIS suporta atualmente as
caractersticas e a representao de APIs, mas no as vrias comparaes e operadores
de convoluo cedidos na especificao OGC "Simple Features for SQL".
PostGIS estende o padro com suport para coordenadas 3DZ, 3DM e 4D.
4.1.1. Padres de OpenGIS WKB e WKT
A especificao OpenGIS define dois caminhos padres de objeto espacial de expresso:
a forma Well-Known Text (WKT) e a forma Well-Known Binary (WKB). Ambos, WKT and
WKB, incluem informao sobre o tipo do objeto e as coordenadas a qual forma o objeto.
Exemplos das representaes de texto das caractersticas so como segue:

POINT(0 0)

LINESTRING(0 0,1 1,1 2)

POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))

MULTIPOINT(0 0,1 2)

MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))

MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2
-1,-1 -1)))

GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))

A especificao de OpenGIS requer tambm que o formato de armazenamento interno de


objetos espaciais inclui um identificador de sistema referenciado espacial (SRID). O SRID
requerido ao criar objetos espaciais para a insero no banco de dados.
Input/Output desses formatos est disponvel usando as seguintes relaes:
bytea WKB = asBinary(geometry);
text WKT = asText(geometry);
geometry = GeomFromWKB(bytea WKB, SRID);
geometry = GeometryFromText(text WKT, SRID);
Por exemplo, uma declarao vlida de insero para criar e inserir um objeto espacial de
OGC seria::
INSERT INTO SPATIALTABLE (
THE_GEOM,
THE_NAME
)
VALUES (
GeomFromText('POINT(-126.4 45.32)', 312),
'A Place'
)
4.1.2. PostGIS Padres EWKB, EWKT e Formas Cannicas
Somente o formato OGC suporta geometria 2d, e o SRID associado *nunca* faz parte das
respresentaes do input/output.
Formatos de extenso Postgis so atualmente superset de um OGC(cada WKB/WKT
vlido um EWKB/EWKT vlido), mas mas isto pde variar no futuro, especificamente se
OGC sasse com um formato novo que ope a nossas extenses. Assim voc NO DEVE
confiar nesta caracterstica!
Postgis EWKB/EWKT soma o suport a coordenadas 3dm,3dz,4d e faz parte das
informaes SRID.
Exemplos das representaes do texto (EWKT) dos objetos espaciais estendidos das
caractersticas so como segue:

POINT(0 0 0) -- XYZ

SRID=32632;POINT(0 0) -- XY with SRID

POINTM(0 0 0) -- XYM

POINT(0 0 0 0) -- XYZM

SRID=4326;MULTIPOINTM(0 0 0,1 2 1) -- XYM with SRID

MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1))

POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))

MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1
-1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0)))

GEOMETRYCOLLECTIONM(POINTM(2 3 9),LINESTRINGM((2 3 4,3 4 5)))

Input/Output desses formatos so usados conforme a interface a seguir:


bytea EWKB = asEWKB(geometry);
text EWKT = asEWKT(geometry);
geometry = GeomFromEWKB(bytea EWKB);
geometry = GeomFromEWKT(text EWKT);
Por exemplo, uma declarao vlida de insero para criar e inserir um objeto espacial
seria:
INSERT INTO SPATIALTABLE (
THE_GEOM,
THE_NAME
)
VALUES (
GeomFromEWKT('SRID=312;POINTM(-126.4 45.32 15)'),
'lugar'
)
A "canonical form" (forma cannica ) de um tipo PostgreSQL so as representaes que
pega com uma simples "query" (sem uma chamada de funo) e no qual garantido para
ser aceito com uma insero simples, atualizao ou cpia. Para o postgis tipo 'geometry'
so esses:
- Output binary: EWKB
ascii: HEXEWKB (EWKB in hex form)
- Input binary: EWKB
ascii: HEXEWKB|EWKT
Para o exemplo esta indicao l EWKT e retorna HEXEWKB no processo do input/output
cannico do ascii:
=# SELECT 'SRID=4;POINT(0 0)'::geometry;
geometry
---------------------------------------------------01010000200400000000000000000000000000000000000000
(1 row)

4.1.3. SQL-MM Part 3


A especificao Espacial de Aplicaes de Multimedia do SQL estende as simples
caractersticas para especificaes do SQL, definindo um nmero de curvas inseridas
circularmente.
As definies SQL-MM incluem coordenadas 3dm, 3dz e 4d, mas no permite embutir
informao SRID.
The well-known text extensions are not yet fully supported. Examples of some simple
curved geometries are shown below:
As extenses de texto conhecidas no so suportadas ainda por completo. Os exemplos
de algumas geometrias curvadas simples so mostrados abaixo:

CIRCULARSTRING(0 0, 1 1, 1 0)

COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1))

CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))

MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))

MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1
1, 3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10),(11 11, 11.5 11, 11 11.5, 11 11)))

Nota
Atualmente, PostGIS no pode suportar o uso de curvas compostas (Compound Curves)
em um polgono curvo (Curve Polygon).
Nota
Todas as comparaes do ponto flutuante dentro da implementao de SQL-MM
so executadas para uma tolerncia especificada, atualmente 1E-8.
4.2. Usando Padres de OpenGIS
O OpenGIS "Simple Features Specification for SQL" define tipos de objetos padro GIS,
as funes requeridas para manipul-las e uma especificao de tabela de meta-dados.
Para asse- gurar que os meta-dados permaneam consistentes, operaes como criar e
remover uma coluna espacial so carregadas fora atravs da definio procedures
especiais por OpenGIS.
E x i s t e m d u a s t a b e l a s d e m e t a - d a d o s O p e n G I S : S PAT I A L _ R E F _ S Y S e
GEOMETRY_COLUMNS. A tabela SPATIAL_REF_SYS carrega os identificadores
numricos e descries textuais de sistemas de coordenada usadas no banco de dados
espacial.
4.2.1. Tabela de Sistemas de Referncias Espacial (SPATIAL_REF_SYS)
A definio da Tabela de Sistemas de Referncias Espacial (SPATIAL_REF_SYS) como
segue:
CREATE TABLE SPATIAL_REF_SYS (

SRID INTEGER NOT NULL PRIMARY KEY,


AUTH_NAME VARCHAR(256),
AUTH_SRID INTEGER,
SRTEXT VARCHAR(2048),
PROJ4TEXT VARCHAR(2048)
)
As colunas SPATIAL_REF_SYS so como segue:
SRID
Um valor inteiro que exclusivamente identifica o Sistema de Referncia Espacial (Spacial
Referencing System - SRS) dentro do banco de dados.
AUTH_NAME
Nome do padro ou corpo de padres que esto sendo citados para este sistema de
referncia. Por exemplo, "EPSG" seria um AUTH_NAME vlido.
AUTH_SRID
O ID do Sistema de Referncia Espacial (SRID) como definido pela autoridade citada no
AUTH_NAME. No caso de EPSG, onde o cdigo de projeo EPSG ficaria.
SRTEXT
Representao de Well-Known Text do Sistema de Referncia Espacial (WKT SRS). Um
exemplo de uma representao WKT SRS :
PROJCS["NAD83 / UTM Zone 10N",
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.257222101]
],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]
],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-123],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1]
]
Para uma listagem de cdigos de projeo Grupo de Exame Europeu do Petrleo (EPSG
- European Petroleum Survey Group) e suas correspondentes representaes, veja http://
www.opengis.org/techno/interop/EPSG2WKT.TXT. Para uma discusso de WKT em geral,
veja OpenGIS "Coordinate Transformation Services Implementation Specification" em
http://www.opengis.org/techno/specs.htm. Para informaes do Grupo de Exame Europeu
do Petrleo (EPSG - European Petroleum Survey Group) e seu banco de dados de
sistemas de referncia espacial, veja: http://epsg.org/.
PROJ4TEXT

PostGIS usa a biblioteca Proj4 para fornecer potencialidades de


transformaocoordenadas . A coluna de PROJ4TEXT contem a string de definio de
coordenada Proj4 para um SRID particular. Por exemplo:
+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m
Para mais informaes a respeito, veja a pgina de Proj4 em http://
www.remotesensing.org/proj. O arquivo spatial_ref_sys.sql contm ambas definies,
SRTEXT and PROJ4TEXT,para todas as projees.
4.2.2. Tabela de Colunas Geomtricas (GEOMETRY_COLUMNS)
A definio de Tabela de Colunas Geomtricas (GEOMETRY_COLUMNS) como segue:
CREATE TABLE GEOMETRY_COLUMNS (
F_TABLE_CATALOG VARCHAR(256) NOT NULL,
F_TABLE_SCHEMA VARCHAR(256) NOT NULL,
F_TABLE_NAME VARCHAR(256) NOT NULL,
F_GEOMETRY_COLUMN VARCHAR(256) NOT NULL,
COORD_DIMENSION INTEGER NOT NULL,
SRID INTEGER NOT NULL,
TYPE VARCHAR(30) NOT NULL
)
As colunas so como segue:
F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME
Nome completamente qualificado da caracterstica tabela contendo a coluna geomtrica.
Note que as condies "catalog" e "schema" so Oracle-ish.
No existe anlogo de "catalog" PostgreSQL de forma que a coluna espao em branco
a esquerda - para "schema" o nome de banco de dados PostgreSQL usado. (public o
default).
F_GEOMETRY_COLUMN
O nome da coluna geomtrica na tabela caracterstica
COORD_DIMENSION
Dimenso de espao (2, 3 ou 4 dimensional) da coluna.
SRID
Identificador do sistema de referncia espacial usado para a coordenada geomtrica
nesta tabela. uma chave de referncia estrangeira para o SPATIAL_REF_SYS.
TYPE
Tipo do objeto espacial. Restringir a coluna espacial a um nico tipo, usar um:
POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON,
GEOMETRYCOLLECTION or corresponding XYM versions POINTM, LINESTRINGM,
P O LY G O N M , M U LT I P O I N T M , M U LT I L I N E S T R I N G M , M U LT I P O LY G O N M ,
GEOMETRYCOLLECTIONM. Para colees heterogneas (mixed-type), voc pode usar
"GEOMETRY" como tipo.

Nota
Este atributo no (provavelmente) parte da especificao OpenGIS, mas requerido
para homogeneidade de tipo assegurado.
4.2.3. Criando uma Tabela Espacial
Criao de uma tabela com dados espaciais feito em duas fases:

Criar uma tabela normal , ou seja, sem dados espacias.


Por exemplo: CREATE TABLE ROADS_GEOM ( ID int4, NAME varchar(25) )
Acrescentar uma coluna espacial para a tabela que usa a funo OpenGIS
"AddGeometryColumn."
A sintaxe :

AddGeometryColumn(<schema_name>, <table_name>,
<column_name>, <srid>, <type>,
<dimension>)
ou, usando "schema" corrente:

AddGeometryColumn(<table_name>,
<column_name>, <srid>, <type>,
<dimension>)
Exemplo1: SELECT AddGeometryColumn('public', 'roads_geom', 'geom', 423,
'LINESTRING', 2)
Exemplo2: SELECT AddGeometryColumn( 'roads_geom', 'geom', 423,
'LINESTRING', 2)

Existe um exemplo de SQL usado para criar tabela e adicionar uma coluna espacial
(assumindo que um SRID de 128 j existe):
CREATE TABLE parks ( PARK_ID int4, PARK_NAME varchar(128), PARK_DATE date,
PARK_TYPE varchar(2) );
SELECT AddGeometryColumn('parks', 'park_geom', 128, 'MULTIPOLYGON', 2 );
Existe outro exemplo, usando o tipo "geometry" genrico e o indefinido SRID de valor -1:
CREATE TABLE roads ( ROAD_ID int4, ROAD_NAME varchar(128) );
SELECT AddGeometryColumn( 'roads', 'roads_geom', -1, 'GEOMETRY', 3 );
4.2.4. Assegurando-se conforme a geometria de OpenGIS
A maioria das funes executadas pela biblioteca de GEOS confiam na suposio que
suas geometrias so vlidas como especificadas pela Especificao de Caracterstica
Simples de OpenGIS (OpenGIS Simple Feature Specification). Para verificar a validade
das geometrias voc pode usar a funo IsValid():
gisdb=# select isvalid('LINESTRING(0 0, 1 1)'), isvalid('LINESTRING(0 0,0 0)');
isvalid | isvalid

---------+--------t|f
Por default, PostGIS no aplica esta verificao de validade na entrada da geometria,
porque testar a validade necessita lotes de tempo do processador central (CPU) para
geometrias complexas, especialmente poligonos. Se no confiar em suas fontes de
dados, pode manualmente reforar tal verificao a suas tabelas, adicionando um
confinamento da verificao:
ALTER TABLE mytable ADD CONSTRAINT geometry_valid_check CHECK
(isvalid(the_geom));
Se voc encontrasse quaisquer mensagens de erro estranhas como "GEOS Intersection()
apresentou um erro!" ou "JTS Intersection() apresentou um erro!" quando chamar funes
PostGIS com entrada de geometrias vlidas, voc provavelmente encontrou um erro em
PostGIS ou em uma das bibliotecas de uso dele, e voc deve contatar os colaboradores
de PostGIS. O mesmo verdadeiro se uma funo de PostGIS retornar uma geometria
invlida para a entrada vlida.
Note
Estritamente as geometrias de OGC no podem ter valores de Z ou de M. A funo vlida
IsValid() no considerar geometrias altamente calculadas as dimenses invlidas!
Invocaes de AddGeometryColumn() adicionar confinamente, verificando dimenses da
geometria, assim como bastante para especificar.
4.3. Carregando Dados de GIS
Uma vez que voc criou uma tabela espacial, voc est pronto para atualizar os dados de
GIS no banco de dados. Atualmente, existem dois caminhos para entrar com os dados no
banco de dados PostGIS/PostgreSQL: usando declaraes de SQL formatadas ou
usando o carregador/descarregador de arquivo Shape.
4.3.1. Usando SQL
Se voc pode converter dados de uma representao de texto, ento usando SQL
formatado poderia ser o modo mais fcil de entrar com seus dados em PostGIS. Como
com Oracle e outros bancos de dados de SQL, os dados podem ser carregados em
grandes quantidades e transportados em um grande arquivo de texto SQL cheio de
declaraes de "INSERT" dentro do terminal SQL.
A carga de um arquivo de dados (roads.sql por exemplo) poderia se parecer como segue:
BEGIN;
I N S E RT I N TO R O A D S _ G E O M ( I D , G E O M , N A M E ) VA L U E S
(1,GeomFromText('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd');
I N S E RT I N TO R O A D S _ G E O M ( I D , G E O M , N A M E ) VA L U E S
(2,GeomFromText('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd');
I N S E RT I N TO R O A D S _ G E O M ( I D , G E O M , N A M E ) VA L U E S
(3,GeomFromText('LINESTRING(192783 228138,192612 229814)',-1),'Paul St');
I N S E RT I N TO R O A D S _ G E O M ( I D , G E O M , N A M E ) VA L U E S
(4,GeomFromText('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave');

I N S E RT I N TO R O A D S _ G E O M ( I D , G E O M , N A M E ) VA L U E S
(5,GeomFromText('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce');
I N S E RT I N TO R O A D S _ G E O M ( I D , G E O M , N A M E ) VA L U E S
(6,GeomFromText('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres');
COMMIT;
O arquivo de dados pode ser transportado facilmente para dentro do PostgreSQL usando
o monitor de terminal SQL "psql":
psql -d [database] -f roads.sql
4.3.2. Usando o Carregador
O carregador de dados shp2pgsql converte arquivos ESRI Shape dentro do SQL de
maneira correta para insero em um banco de dados de PostGIS/PostgreSQL. O
carregador tem vrios modos operacionais distinguidos em linha de comando por
parametro:
-d
Exclui a tabela do banco de dados antes de criar uma nova tabela com os dados no
arquivo Shape.
-a
Acrescenta dados do arquivo Shape na tabela de banco de dados. Note que, para usar
esta opo para carregar arquivos mltiplos, os arquivos tm que ter os mesmos atributos
e mesmos tipos de dados.
-c
Cria uma nova tabela e insere dados do arquivo Shape. Este parametro o modo padro.
-p
Produz somente o cdigo do SQL da criao da tabela, sem adicionar nenhum dado real.
Isto pode ser usado se voc necessitar separar completamente as etapas da criao da
tabela e do carregamento dos dados.
-D
Cria uma nova tabela e insere dados do arquivo Shape. Este parametro usa o "dump"
formato PostgreSQL para os dados de produo e muito mais rpido carregar que o
padro "insert" formato SQL. Use isto para quantidades grandes de dados. Use o formato
do "dump" de PostgreSQL para os dados da sada. Isto pode ser combinado com - a, - o c
e - d. muito mais rpido carregar do que o default de insero do formato SQL. Use isto
para sries de dados muito grandes.
-s <SRID>
Cria e insere tabelas de geometria com o SRID especificado.
-k
Conserva identificadores de caso (coluna, schema e atributos). Note que os atributos em
Shapefile so todos UPPERCASE.
-i
Conserva identificadores de caso (coluna, schema e atributos). Note que os atributos em
Shapefile so todos UPPERCASE.

-w
Formato de sada WKT, para o uso com verses de PostGISanteriores (0.x). Note que isto
introduzir traes coordenadas e deixar cair valores de M de shapefiles.
-W <encoding>
Specify encoding of the input data (dbf file). When used, all attributes of the dbf are
converted from the specified encoding to UTF8. The resulting SQL output will contain a
SET CLIENT_ENCODING to UTF8 command, so that the backend will be able to
reconvert from UTF8 to whatever encoding the database is configured to use internally.
Especificar codificando os dados de entrada (arquivo dbf). Quando usados, todos
os atributos do dbf so convertidos da codificao especificada
para UTF8. A sada resultante do SQL conter um comando SET
CLIENT_ENCODING para UTF8, de modo que o retorno estar apto para uma
converso de UTF8 para qualquer codificao de banco de dados que
configurado para usar internamente.
Note que - a, - c, - d e - p mutuamente exclusivo.
Uma sesso de exemplo que usa o carregador para criar um arquivo e carreg-lo poderia
ser como segue:
# shp2pgsql shaperoads myschema.roadstable > roads.sql
# psql -d roadsdb -f roads.sql
Podem ser feitos uma converso e carga de tudo em um nico comando, usando
caminhos (pipes) como no UNIX:
# shp2pgsql shaperoads myschema.roadstable | psql -d roadsdb
4.4. Recuperando Dados de GIS
Podem ser extrados dados do banco de dados usando outro SQL ou o arquivo
carregador/descarregador Shape. No item SQL discutiremos alguns dos operadores
disponvel para fazer comparaes e selecionar tabelas espaciais.
4.4.1. Usando SQL
Os meios mais diretos de extrair dados do banco de dados so usar um SQL, para
selecionar dados e descarregar as colunas resultantes em um arquivo de texto:
db=# SELECT id, AsText(geom) AS geom, name FROM ROADS_GEOM;
id | geom | name
---+-----------------------------------------+----------1 | LINESTRING(191232 243118,191108 243242) | Jeff Rd
2 | LINESTRING(189141 244158,189265 244817) | Geordie Rd
3 | LINESTRING(192783 228138,192612 229814) | Paul St
4 | LINESTRING(189412 252431,189631 259122) | Graeme Ave
5 | LINESTRING(190131 224148,190871 228134) | Phil Tce
6 | LINESTRING(198231 263418,198213 268322) | Dave Cres
7 | LINESTRING(218421 284121,224123 241231) | Chris Way
(6 rows)

Porm, haver restries que ser necessrio reduzir o nmero de campos devolvido. No
caso de restries atributos-baseados, usar exatamente a mesma sintaxe de SQL como
normal com uma tabela no espacial. No caso de restries espaciais, os operadores
seguintes so habilitados/completos:
&&
Este operador diz se caixa delimitada de uma geometria sobrepe caixa delimitada de
outra.
~=
Estes operadores testam se duas geometrias so geometricamente idnticas. Por
exemplo,se ' POLYGON((0 0,1 1,1 0,0 0)) ' est igual a ' POLYGON((0 0,1 1,1 0,0 0)) '.
=
Este operador um pequeno mais ingnuo, s testa se as caixas delimitadas para
geometrias o mesmo.
Logo, voc pode usar estes operadores em questo. Note que ao especificar geometrias
e caixas na linha de comando SQL, voc tem que transformar as representaes de string
explicitamente em geometrias usando a funo "GeometryFromText () ". Por exemplo:
SELECT
ID, NAME
FROM ROADS_GEOM
WHERE
GEOM ~= GeomFromText('LINESTRING(191232 243118,191108 243242)',-1);
A "query" anterior devolveria o nico registro da tabela "ROADS_GEOM" pela qual a
geometria era igual aquele valor.
Ao usar o operador "&& ", pode especificar um outro BOX3D como caracterstica de
comparao ou um GEOMETRY. Porm, quando voc especifica um GEOMETRY que
sua caixa delimitada ser usada para a comparao.
SELECT
ID, NAME
FROM ROADS_GEOM
WHERE
GEOM && GeomFromText('POLYGON((191232 243117,191232 243119,191234
243117,191232 243117))',-1);
A "query" anterior usar a caixa delimitada do polgono para propsitos de comparao.
A "query" espacial mais comum provavelmente ser uma query "frame-based", usada por
cliente de software, como navegador de dados e mapas na web, pegar um valor de dados
"map-frame" para exibio. Usando um objeto "BOX3D" para a visualizao, como
demonstrado como segue:
SELECT
AsText(GEOM) AS GEOM
FROM ROADS_GEOM
WHERE

GEOM && GeomFromText('BOX3D(191232 243117,191232 243119)'::box3d,-1);


Note que o uso do SRID, especifica a projeo do BOX3D. O valor -1 usado para indicar
nenhum SRID especificado.
4.4.2. Usando o Descarregador
O descarregador de tabela pgsql2shp conecta diretamente ao banco de dados e converte
uma tabela em um arquivo Shape. A sintaxe bsica :
pgsql2shp [<options>] <database> [<schema>.]<table>
pgsql2shp [<options>] <database> <query>
As opes de linha de comando so:
-f <filename>
Escreva uma sada para um nome de arquivo particular.
-h <host>
O banco de dados do host para conectar.
-p <port>
A porta para conectar ao banco de dados do host.
-P <password>
A senha para usar a conexo do banco de dados.
-u <user>
O nome do usurio para usar a conexo do banco de dados.
-g <geometry column>
No caso de tabelas com colunas de geometria mltiplas, usar a coluna de geometria
quando escrever o arquivo Shape.
-b
Use um cursor binrio. Isto far a operao mais rpida, mas no trabalhar se qualquer
atributo da NON-geometry na tabela faltar um molde ao texto.
-r
Modalidade pura. No destrua o campo "gid", ou nomes da coluna "escape".
-d
Para a compatibilidade inversa: escrever um arquivo shape 3-dimensional, quando
descarregar do banco de dados de postgis anteriores (pre-1.0.0) - o padro escrever um
arquivo Shape 2- dimensional neste caso). Inicie de postgis-1.0.0+, as dimenses so
codificadas inteiramente.
4.5. Construindo ndices
ndice o que faz usando um banco de dados espacial para um possvel bancos de
dados grandes. Sem indexao, nenhuma busca por caracterstica requereria uma

procura sequencial de todo registro no banco de dados. Velocidades indexadas para cima
procurando os dados organizados em uma rvore de procura que pode ser atravessada
para achar um registro rapidamente. PostgreSQL apia trs tipos de ndices atravs do
padro:
ndices B-Trees, ndices R-Trees e ndices GiST.

B-Trees so usadas para dados que podem ser ordenados ao longo de um eixo;
por exemplo, nmeros, cartas, datas. Dados de GIS no podem ser racionalmente
ordenados ao longo de um eixo (o qual maior, (0,0) ou (0,1) ou (1,0)?) assim
indexao B-Tree intil para ns.

R-Trees abre dados em retngulos, sub-retngulos, e sub-sub retngulos, etc. RTrees so


usados por alguns bancos de dados espaciais para indexar dados de GIS, mas
uma implementao R-Tree PostgreSQL no como uma implementao robusta
de GiST.

ndices GiST (Generalized Search Trees) abre dados em "things to one


side" (pense por um lado), "things which overlap" (coisas que sobreponham),
"things which are inside" (coisas que esto dentro) e podem ser usadas em uma
gama extensiva de tipos de dados, inclusive dados de GIS. PostGIS usa um ndice
de R-Tree implementado em cima de GiST para indexar dados de GIS.

4.5.1. ndices GiST


GiST representa "Generalized Search Tree" e uma forma generalizada de indexar. Alm
da da indexao de GIS, GiST usada para acelerar buscas em todos os tipos de
estruturas de dados irregulares (arranjos de nmeros inteiros, dados espectrais, etc) que
no so amenos a indexao normal B-Tree.
Uma vez que uma tabela de dados de GIS excede algumas mil linhas, voc poder
construir um ndice para buscas espaciais de dados (a menos que todas suas buscas
estejam baseadas em atributos, pelo qual voc queira construir um ndice normal nos
campos de atributo).
A sintaxe para construir um ndice de GiST em uma coluna de geometria como segue:
CREATE INDEX [indexname] ON [tablename]
USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );
Construindo um ndice espacial um exerccio computacionalmente intensivo: em tabelas
ao redor de 1 milho de linhas, em uma mquina de 300MHz Solaris, achamos que com a
construo de um ndice GiST leva aproximadamente 1 hora. Depois de construir um
ndice, importante forar PostgreSQL a coletar estatsticas de tabela que so usadas
para otimizar planos de "query":
VACUUM ANALYZE [table_name] [column_name];
-- This is only needed for PostgreSQL 7.4 installations and below
SELECT UPDATE_GEOMETRY_STATS([table_name], [column_name]);

ndices GiST tm duas vantagens em relao a ndices R-Tree em PostgreSQL. Em


primeiro lugar, ndices GiST so "null safe" (segurana nula), significando que eles podem
indexar colunas que incluem valores nulos. Em segundo lugar, indices GiST apiam o
conceito de "lossiness" que importante quando lidado com objetos de GIS com pginas
PostgreSQL de tamanhos maiores que 8K. "Lossiness" permite PostgreSQL armazenar
somente a parte impor tante de um objeto em um ndice - no caso de objetos de GIS, s a
caixa de saltos. Objetos de GIS maiores que 8K causaro ndices R-Tree para falhar no
processo de ser construdo.
4.5.2. Usando ndices
ndices aceleram o acesso de dados: uma vez que o ndice construdo, a transparncia
de planejamento de queries decide quando usar informao de ndice para acelerar um
plano de "query". Infelizmente, a "query" PostgreSQL no planeja otimizar bem o uso de
ndices de GiST, s vezes buscas que deveriam usar um ndice espacial ao invs do
padro para uma busca sequencial da tabela inteira.
Se voc acha que seus ndices espaciais no esto sendo usados (ou seus ndices de
atributo, para aquele assunto) existe um agrupamento de coisas que voc pode fazer:

Primeiramente, certifique-se que as estatisticas so coletadas sobre o nmero e


distribuies dos valores em uma tabela, proporcionando para o operador de
"query", melhor informao de tomada de decises em torno do uso de ndices
Para instalaes PostgreSQL 7.4 e anteriores, rodado:
update_geometry_stats([table_name, column_name]) (agrupa estatsticas
distribuies de valores em uma tabela) e VACUUM ANALYZE [table_name]
[column_name] (agrupa estatsticas a respeito do nmero de valores em uma
tabela). Comeando com PostgreSQL 8.0 rodando VACUUM ANALYZE far ambas
as operaes. Voc deveria limpar regularmente seus bancos de dados - muitos
DBAs PostgreSQL tm rodado "VACUUM" (vazio) com a carga mxima de trabalho
"cron" desligada em bases regulares.

Se no limpar seus trabalhos, voc pode forar o operador a usar informao de


ndice utilizando o comando SET ENABLE_SEQSCAN=OFF. Voc com certeza s
deveria usar este comando, em queries espacialmente indexadas: em geral, o
operador sabe melhor que voc o que fazer a respeito, quando usar ndices
normais de B-Tree. Uma vez que voc rodou sua "query", voc deveria considerar
a situao ENABLE_SEQSCAN atrs ligado, de maneira que outras queries o
operador utilizar como normal. Nota
A partir de verso 0.6, no deveria ser necessrio forar o operador a usar o ndice
com ENABLE_SEQSCAN.

Se voc encontrar o operador errado sobre o custo de sequencial versus


varreduras de ndice, tente reduzir o valor de "random_page_cost" em
postgresql.conf ou usando SET "random_page_cost"=#. O valor default para o
parmetro 4, tente ajust-lo para 1 ou 2. Decremente o valor que faz o operador
mais inclinado, usando varreduras de ndice.
4.6. Queries Complexas

A finalidade da existncia propriamente para a funcionalidade do banco de dados


espacial est em executar queries dentro do banco de dados que deveria requerer
funcionalidade contidas em desktop GIS. Usando PostGIS efetivamente requer
conhecimento de quais funes espaciais esto disponveis, e assegura-se que ndices
apropriados esto em lugar que aprovam bom desempenho.
4.6.1. Vantagens dos ndices
Na construo de uma "query" importante lembrarmos que os operadores baseados em
saltos de caixa tal como &&, pode tirar proveito do ndice espacial de GiST. Funes como
distance () no pode usar o ndice para otimizar suas operaes. Por exemplo, a "query"
seguinte seria bastante lenta em uma tabela grande:
SELECT the_geom FROM geom_table
WHERE distance( the_geom, GeomFromText( 'POINT(100000 200000)', -1 ) ) < 100
Esta "query" est selecionando todas as geometrias em geom_table que est dentro de
100 unidades do ponto (100000, 200000). Estar lento porque est calculando a distncia
entre cada ponto na tabela e nosso ponto especificado, ie. distance () calculados para
cada linha na tabela. Podemos evitar isto usando o operador && para reduzir o nmero de
clculos de distncia requerido:
SELECT the_geom FROM geom_table
WHERE the_geom && 'BOX3D(90900 190900, 100100 200100)'::box3d
AND distance( the_geom, GeomFromText( 'POINT(100000 200000)', -1 ) ) < 100
Esta "query" seleciona as mesmas geometrias, mas faz isto de um modo mais eficiente.
Supondo que existe um ndice GiST em the_geom, o operador de "query" reconhecer
que pode usar o ndice para reduzir o nmero de linhas antes de calcular o resultado da
funo distance ().
Note que a geometria de BOX3D que usada dentro da operao && uma caixa
quadrada centrada no ponto original unidade 200 - esta nossa "query box". O operador
&& usa o ndice para reduzir rapidamente o resultado atribudo a essas geometrias, que
tm salto de caixas que sobrepem a "query box". Supondo que nossa "query box"
muito menor que as extenses da tabela de geometria inteira, isto reduzir drasticamente
o nmero de distncia de clculos que precisam ser feitos.
4.6.2. Exemplos de SQL Espacial

Os exemplos nesta seo utilizaro duas tabelas, uma tabela de estradas lineares, e uma
tabela de limites poligonal da municipalidade. As definies de tabela para a tabela dos
bc_roads so:
Column | Type | Description
------------+-------------------+------------------gid | integer | Unique ID
name | character varying | Road Name
the_geom | geometry | Location Geometry (Linestring)
A definio de tabela para a tabela do bc_municipality :
Column | Type | Description
-----------+-------------------+-------------------

gid | integer | Unique ID


code | integer | Unique ID
name | character varying | City / Town Name
the_geom | geometry | Location Geometry (Polygon)
4.6.2.1. Qual o comprimento total de todas as estradas, expressado nos quilmetros?
4.6.2.2. Qual a rea da cidade de So Paulo, em hectares?
4.6.2.3. Qual a maior municipalidade na provncia, por rea?
4.6.2.4. Qual o tamanho completo das estradas contidas inteiramente dentro de cada
municipalidade?
4.6.2.5. Cre uma nova tabela com todas as estradas dentro da cidade de So Paulo.
4.6.2.6. Qual o tamanho em quilmetros, da Avenida dos Autonomistas, em OSASCO?
4.6.2.7. Qual o maior polgono da municipalidade que tem uma regra?
4.6.2.1.
Qual o comprimento total de todas as estradas, expressado nos quilmetros?

Voce pode responder esta questo com uma parte muito simples de SQL:
postgis=# SELECT sum(length(the_geom))/1000 AS km_roads FROM bc_roads;
km_roads
-----------------70842.1243039643
(1 row)
4.6.2.2.
Qual a rea da cidade de So Paulo, em hectares?

Esta "query" combina uma condio do atributo (no nome da municipalidade) com um
clculo espacial (da rea):
postgis=# SELECT area(the_geom)/10000 AS hectares FROM bc_municipality
WHERE name = 'SO PAULO'
-----------------32657.9103824927
(1 row)
4.6.2.3.
Qual a maior municipalidade na provncia, por rea?

Esta "query" traz uma medida espacial na condio da "query". H diversas maneiras de
avaliar este problema, mas o mais eficiente est abaixo:
postgis=# SELECT name, area(the_geom)/10000 AS hectares
FROM bc_municipality
ORDER BY hectares DESC
LIMIT 1;
name | hectares
---------------+----------------TUMBLER RIDGE | 155020.02556131

(1 row)
Note que a ordem para responder a esta "query", ns temos que calcular a rea de cada
polgono. Se ns fizssemos isto muito, teria sentido acrescentar uma coluna da rea
tabela, que ns poderamos separadamente posicionar para o desempenho. Requisitando
os resultados em um sentido descendente, e por eles que usam o comando de
PostgreSQL "LIMIT", ns podemos facilmente extrair o maior valor, sem usar uma funo
agregada como o max().
4.6.2.4.
Qual o tamanho completo das estradas contidas inteiramente dentro de cada
municipalidade?

Este um exemplo de um "spatial join" , porque ns estamos trazendo junto dados de


duas tabelas (que fazem juntar), mas estamos usando uma condio de interao
espacial ("contained") como a melhor condio de juntar do que a aproximao relacional
usual de juntar em uma chave comum:
postgis=# SELECT m.name, sum(length(r.the_geom))/1000 as roads_km
FROM bc_roads AS r,bc_municipality AS m
WHERE r.the_geom && m.the_geom
AND contains(m.the_geom,r.the_geom)
GROUP BY m.name
ORDER BY roads_km;
name | roads_km
----------------------------+-----------------SURREY | 1539.47553551242
VANCOUVER | 1450.33093486576
LANGLEY DISTRICT | 833.793392535662
BURNABY | 773.769091404338
PRINCE GEORGE | 694.37554369147
...
Esta "query" examina porque cada estrada na tabela sumarizada no resultado final
(sobre as estradas 250K para nossa tabela do exemplo particular). Para menores
"overlays" (mil registros em cem) a resposta pode ser muito rapida.
4.6.2.5.
Crie uma nova tabela com todas as estradas dentro da cidade de So Paulo.

Este um exemplo de um "overlay", que examina em duas tabelas e sadas em uma nova
tabela, que consiste espacialmente "clipped" ou do corte de resultados. Ao contrrio do
"spatial join" demonstrado acima, esta "query" cria realmente novas geometrias. Um
"overlay" como um turbo-carregado de "spatial join", e til para um trabalho mais exato
da anlise:
postgis=# CREATE TABLE pg_roads as
SELECT intersection(r.the_geom, m.the_geom) AS intersection_geom,
length(r.the_geom) AS rd_orig_length,
r.*

FROM bc_roads AS r, bc_municipality AS m


WHERE r.the_geom && m.the_geom
AND intersects(r.the_geom, m.the_geom)
AND m.name = 'SO PAULO';
4.6.2.6.
Qual o tamanho em quilmetros, da Avenida dos Autonomistas, em OSASCO?

postgis=# SELECT sum(length(r.the_geom))/1000 AS kilometers


FROM bc_roads r, bc_municipality m
WHERE r.the_geom && m.the_geom
AND r.name = 'Avenida dos Autonomistas'
AND m.name = 'OSASCO';
kilometers
-----------------4.89151904172838
(1 row)
4.6.2.7.
Qual o maior polgono da municipalidade que tem uma regra?

postgis=# SELECT gid, name, area(the_geom) AS area


FROM bc_municipality
WHERE nrings(the_geom) > 1
ORDER BY area DESC LIMIT 1;
gid | name | area
-----+--------------+-----------------12 | SPALLUMCHEEN | 257374619.430216
(1 row)
4.7. Usando Mapserver
O Minnesota Mapserver um servidor Web Map na internet que adapta-se a
especificao do Servidor de Mapas na Internet OpenGIS .

A homepage do Mapserver est em http://mapserver.gis.umn.edu/.

A especificao de Web Map OpenGIS est em http://www.opengis.org/techno/


specs/01-047r2.pdf.

4.7.1. Uso Bsico


Usar PostGIS com Mapserver, voc precisar conhecer como configurar o Mapserver que
est alm da extenso desta documentao. Esta seo cobrir distribuio e detalhes de
configurao de PostGIS especfico.
Usar PostGIS com Mapserver, voc precisar:

Verso 0.6 ou posterior de PostGIS.

Verso 3.5 ou posterior de Mapserver.

Mapserver acessa dados de PostGIS/PostgreSQL como qualquer outro cliente de


PostgreSQL- usando libpq. Estes meios que Mapserver pode ser instalado em qualquer
mquina com acesso de rede para o servidor de PostGIS, enquanto o sistema tem
bibliotecas client de PostgreSQL libpq.
1. Compile e instale Mapserver, com qualquer opes que voc deseje, inclusive a
opo de configurao "-with-postgis"
2.

Em seu arquivo de mapas Mapserver, acrescente uma camada de PostGIS. Por


exemplo:

3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.

LAYER
CONNECTIONTYPE postgis
NAME "widehighways"
# Connect to a remote spatial database
CONNECTION "user=dbuser dbname=gisdatabase host=bigserver"
# Get the lines from the 'geom' column of the 'roads' table
DATA "geom from roads"
STATUS ON
TYPE LINE
# Of the lines in the extents, only render the wide highways
FILTER "type = 'highway' and numlanes >= 4"
CLASS
# Make the superhighways brighter and 2 pixels wide
EXPRESSION ([numlanes] >= 6)
COLOR 255 22 22
SYMBOL "solid"
SIZE 2
END
CLASS
# All the rest are darker and only 1 pixel wide
EXPRESSION ([numlanes] < 6)
COLOR 205 92 82
END
END
No exemplo acima, as diretivas de especificao do PostGIS so como segue:
CONNECTIONTYPE
Para camadas de PostGIS, este sempre "postgis."
CONNECTION
A conexo de banco de dados governada por uma 'connection string' do qual
um padro de coleo de chaves e valores como este (com os valores padres em
<>):
user=<username> password=<password> dbname=<username>
hostname=<server> port=<5432>
Um fio de conexo vazio ainda vlido, e nenhum dos pares de chave/valor
podem ser omitido. No mnimo voc se prover do nome e usurio do banco de
dados com c conexo.
DATA
A forma deste parmetro "< column> from <tablename>" onde a coluna a
coluna espacial a ser traduzida no mapa.

FILTER
O filtro deve ser uma string SQL vlida correspondendo lgica que normalmente
segue da palavra-chave "WHERE" em uma "query" SQL. Por exemplo, assim fazer
s estradas com 6 ou mais pistas, use um filtro de "num_lanes >= 6."

28. Em seu banco de dados espacial, assegure-se que voc tem ndices espaciais
(GiST) construdos para qualquer das camadas que voc estar desenhando.
29.
30.
31.
32.

CREATE INDEX [indexname]


ON [tablename]
USING GIST ( [geometrycolumn] GIST_GEOMETRY_OPS );
Se voc estivesse examinando suas camadas usando Mapserver voc tambm
precisaria de um "oid index."
Mapserver requer identificadores nicos para cada registro espacial ao fazer
queries, e o mdulo de Mapserver PostGIS usa o valor oid PostgreSQL para prover
estes identificadores nicos. Um efeito colateral disto que para fazer acesso
randmico rpido de registros durante queries, um "oid index" necessrio.
Construir um "oid index", use o SQL seguinte:

33. CREATE INDEX [indexname] ON [tablename] ( oid );


4.7.2. Perguntas Mais Frequentes
4.7.2.1. Quando eu uso uma EXPRESSO em meu arquivo de mapa, a condio nunca
retorna como verdadeira, mesmo que eu saiba os valores existentes em minha tabela.
4.7.2.2. O FILTRO que eu me uso para meus arquivos Shape no est trabalhando para
minha tabela de PostGIS de mesmos dados.
4.7.2.3. A extrao da camada de PostGIS muito mais lenta do que a camada do
arquivo Shape, este normal?
4.7.2.4. A extrao da camada de PostGIS fina, mas as queries so realmente lentas. O
que est errado?
4.7.2.1.
Quando eu uso uma EXPRESSO em meu arquivo de mapa, a condio nunca retorna
como verdadeira, mesmo que eu saiba os valores existentes em minha tabela.

Ao contrrio dos arquivos Shape, os nomes de campo de PostGIS tm que ser


referenciado nas expresses usando um caso mais baixo.
EXPRESSION ([numlanes] >= 6)
4.7.2.2.
O FILTRO que eu me uso para meus arquivos Shape no est trabalhando para minha
tabela de PostGIS de mesmos dados.

Ao contrrio dos arquivos Shape, filtros para camadas de PostGIS usa a sintaxe SQL (so
adicionados declarao do SQL o conector de PostGIS que extrai camadas em
Mapserver).
FILTER "type = 'highway' and numlanes >= 4"
4.7.2.3.
A extrao da camada de PostGIS muito mais lenta do que a camada do arquivo
Shape, este normal?

Em geral, espera-se camadas de PostGIS serem 10% mais lenta do que camadas de
arquivos Shape, devido o "overhead" extra envolvido em conexes do banco de dados,
em transformaes de dados e trnsito de dados entre o banco de dados e o Mapserver.
Se voc estiver encontrando problemas substanciais de desempenho, provvel que
voc no tem a configurao, um ndice espacial em sua tabela.
postgis# CREATE INDEX geotable_gix ON geotable USING GIST ( geocolumn );
postgis# SELECT update_geometry_stats(); -- For PGSQL < 8.0
postgis# VACUUM ANALYZE; -- For PGSQL >= 8.0
4.7.2.4.
A extrao da camada de PostGIS fina, mas as queries so realmente lentas. O que
est errado?

Para que as "queries" sejam rpidas, voc deve ter uma chave original para sua tabela
espacial e voc deve ter um ndice nessa chave original.
Voc pode especificar que chave original para o Mapserver usar com a clusula "USING
UNIQUE" em sua linha de dados:
DATA "the_geom FROM geotable USING UNIQUE gid"
Se sua tabela no tiver uma coluna original explcita, voc pode usar "fake" para uma
nica coluna usando a linha de PostgreSQL "oid" para sua coluna original. "oid" a
coluna original "default" se voc no declarar um, assim que reforar sua velocidade da
"query", um problema de construo em ndice no valor "oid" de sua tabela espacial.
postgis# CREATE INDEX geotable_oid_idx ON geotable (oid);
4.7.3. Uso Avanado
A clusula USING pseudo-SQL usada para acrescentar alguma informao para ajudar
a entender os resultados mapserver de maior complexidade das queries. Mais
especificamente, quando uma viso ou um subselect usado como tabela fonte (a uso
certo de "FROM" em uma definio de DATA) mais difcil para mapserver que
automaticamente determina um identifi- cador nico para cada linha e tambm o SRID
para a tabela. A clusula USING pode proporcionar para mapserver estes dois tipos de
informao como segue:
DATA "the_geom FROM (SELECT table1.the_geom AS the_geom, table1.oid AS oid,
table2.data AS data

FROM table1 LEFT JOIN table2 ON table1.id = table2.id) AS new_table USING UNIQUE
oid USING SRID=-1"
USING UNIQUE <uniqueid>
Mapserver requer um id nico para cada linha para identificar a linha quando esboa
queries. Normalmente, usaria o oid como identificador nico, mas views e subselects no
tem automaticamente uma coluna "oid". Se voc quiser usar a funcionalidade de "query"
de Mapserver, voc precisa acrescentar uma nica coluna para "views" ou "subselects" , e
declar-la com USING UNIQUE. Por exemplo, voc poderia selecionar um valor para
"oid" da prpria tabela para este propsito, ou nenhuma coluna que garantido ser nico
para o resultado final.
A declarao USING tambm pode ser muito til para declaraes de dados simples, se
voc esboando "queries". Recomendavasse previamente que, para acrescentar um
ndice na coluna oid das tabelas usadas nas camadas "query-able", em ordem acelara o
desempenho de "queries" de mapa. Porm, com a clusula USING, possvel dizer que
para o mapserver usa chave primria em suas prprias tabelas como o identificador de
"queries" de mapa, e ento necessariamente no ter o mais longo ndice adicional.
Nota
Examinando um mapa (Quering a Map) a ao de "clicking" em um mapa e questionar
informaes a respeito de caractersticas de mapa naquele local. No confunda "map
queries" com o "query" SQL em uma definio DATA.
USING SRID=<srid>
PostGIS necessita saber qual referenciamento de sistema espacial que est sendo usado
pelas geometrias em ordem para que devolva os dados corretos atrs do mapserver.
Normalmente possvel encontrar esta informao dentro da tabela "geometry_columns"
no banco de dados de PostGIS, porm, isto no possvel para tabelas que so criadas
superficialmente como "view"s e "subselects". Assim o USING SRID= opo que permite
o correto SRID ser especificado na definio DATA.
Aviso
O parceiro para camadas de PostGIS Mapserver razoavelmente primitivo, e caso
sensvel em algumas reas. Tenha cuidado para assegurar-se de que todos as palavras
chaves do SQL e todas suas clusulas USING estejam em caso superior, e que sua
clusula USING UNIQUE precede sua clusula "USING SRID.
4.7.4. Exemplos
Comeamos com um exemplo simples e que levanta nosso trabalho. Considere a seguir a
definio de camada de Mapserver:
LAYER
CONNECTIONTYPE postgis
NAME "roads"
CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
DATA "the_geom FROM roads"
STATUS ON

TYPE LINE
CLASS
COLOR 0 0 0
END
END
Esta camada exibir todas as geometrias de estrada na tabela de estradas com linhas
pretas.
Agora dizemos que ns queremos mostrar s as rodovias at que ns conseguirmos
fechar a cmara em pelo menos 1:100000 balana as prximas duas camadas obtero
este efeito:
LAYER
CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
DATA "the_geom FROM roads"
MINSCALE 100000
STATUS ON
TYPE LINE
FILTER "road_type = 'highway'"
CLASS
COLOR 0 0 0
END
END
LAYER
CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
DATA "the_geom FROM roads"
MAXSCALE 100000
STATUS ON
TYPE LINE
CLASSITEM road_type
CLASS
EXPRESSION "highway"
SIZE 2
COLOR 255 0 0
END
CLASS
COLOR 0 0 0
END
END
A primeira camada usada quando a balana maior que 1:100000, e exibe s as
estradas de tipo "highway" (rodovia) com linhas pretas. A opo FILTER causa s
estradas de TIPO "highway" (rodovia) a ser exibida.
A segunda camada usada quando a balana menos que 1:100000, e exibir rodovias
como linhas vermelhas grossas, e outras estradas como linhas pretas regulares.
Assim, ns fizemos um par de coisas interessantes que usam s funcionalidade de
mapserver, mas nossa declarao DATA SQL permaneceu simples. Suponha que o nome
da estrada armazenado em outra tabela (por qualquer razo) e ns precisamos fazer
um una adquirir isto e etiquetar nossas estradas.

LAYER
CONNECTION "user=theuser password=thepass dbname=thedb host=theserver"
DATA "the_geom FROM (SELECT roads.oid AS oid, roads.the_geom AS the_geom,
road_names.name as name
FROM roads LEFT JOIN road_names ON roads.road_name_id =
road_names.road_name_id) AS named_roads
USING UNIQUE oid USING SRID=-1"
MAXSCALE 20000
STATUS ON
TYPE ANNOTATION
LABELITEM name
CLASS
LABEL
ANGLE auto
SIZE 8
COLOR 0 192 0
TYPE truetype
FONT arial
END
END
END
Esta camada da anotao adiciona etiquetas verdes a todas as estradas quando a escala
comea para baixo a 1:20000 ou menos. Demonstra tambm como usar um "join" SQL
em uma definio DATA.
4.8. Clientes Java (JDBC)
Os clientes de Java podem acessar objetos da "geometria" de PostGIS no banco de
dados de PostgreSQL, outros diretamente como representaes de texto ou usam os
objetos de extenso JDBC empacotados com PostGIS. A fim usar os objetos de extenso,
o arquivo "postgis.jar" deve estar em seu CLASSPATH junto com o pacote JDBC de
"postgresql.jar".
import java.sql.*;
import java.util.*;
import java.lang.*;
import org.postgis.*;
public class JavaGIS {
public static void main(String[] args)
{
java.sql.Connection conn;
try
{
/*
* Load the JDBC driver and establish a connection.
*/
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/database";
conn = DriverManager.getConnection(url, "postgres", "");

/*
* Add the geometry types to the connection. Note that you
* must cast the connection to the pgsql-specific connection * implementation before
calling the addDataType() method.
*/
((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry");
((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
/*
* Create a statement and execute a select query.
*/
Statement s = conn.createStatement();
ResultSet r = s.executeQuery("select AsText(geom) as geom,id from geomtable");
while( r.next() )
{
/*
* Retrieve the geometry as an object then cast it to the geometry type.
* Print things out.
*/
PGgeometry geom = (PGgeometry)r.getObject(1);
int id = r.getInt(2);
System.out.println("Row " + id + ":");
System.out.println(geom.toString());
}
s.close();
conn.close();
}
catch( Exception e )
{
e.printStackTrace();
}
}
}
O objeto "PGgeometry" um objeto "wrapper" que contem um objeto de geometria
topolgico especfico (subclasses da classe "geometria") dependendo do tipo: Point,
LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon.
PGgeometry geom = (PGgeometry)r.getObject(1);
if( geom.getType() = Geometry.POLYGON )
{
Polygon pl = (Polygon)geom.getGeometry();
for( int r = 0; r < pl.numRings(); r++ )
{
LinearRing rng = pl.getRing(r);
System.out.println("Ring: " + r);
for( int p = 0; p < rng.numPoints(); p++ )
{
Point pt = rng.getPoint(p);
System.out.println("Point: " + p);
System.out.println(pt.toString());
}

}
}
O JavaDoc para os objetos da extenso fornece uma referncia para as vrias funes do
assessor dos dados nos objetos geomtricos.
4.9. Clientes C (libpq)

...
4.9.1. Cursores de Texto

...
4.9.2. Cursores Binrios
...

Captulo 5. Tipos de Performance

5.1. Tabelas pequenas de geometrias grandes


5.1.1. Descrio de problemas
As verses atuais de PostgreSQL (incluindo 8.0) sofrem de uma fraqueza do otimizador
da "query" a respeito das tabelas "TOAST". As tabelas "TOAST" so um tipo "extension
room" usado para armazenar (no sentido do tamanho dos dados) os valores que no
cabem em pginas de dados normais(como textos longos, imagens ou geometrias
complexas com lotes de vertices), vejam http://www.postgresql.org/docs/8.0/static/storagetoast.html, para mais informaes.
O problema aparece se acontecer de ter uma tabela com geometrias de preferncia
grandes, mas no com muitas linhas (como uma tabela que contem os limites de todos os
pases europeus em resoluo elevada). Ento a prpria tabela pequena, mas usa lotes
de espao do "TOAST". Neste exemplo, a prpria tabela teve aproximadamente 80 linhas
e usa somente 3 pginas de dados, mas a tabela "TOAST" usou 8225 pginas.
Agora emita uma "query" onde voc use o operador de geometria && procurar por salto
de caixa aqueles s os poucos grupos daquelas linhas. Agora a "query" otimizada v que
a tabela tem somente 3 pginas e 80 linhas. Estima que uma varredura seqencial em
uma tabela to pequena muito mais rpida do que usando um ndice. E assim decide-se
ignorar o ndice de GIST. Geralmente, este estimativa est correta. Mas em nosso caso, o

operador && tem que buscar cada geometria do disco para comparar os saltos de caixa,
assim lendo todas as pginas TOAST, tambm.
Veja se a permisso deste erro, use o comando "EXPLAIN ANALYZE" do postgresql. Para
mais informao e os detalhes tcnicos, voc pode ler a linha na lista de envio de
desempenho do postgres: http://archives.postgresql.org/pgsql-performance/2005-02/
msg00030.php

5.1.2. Envolvimento com o trabalho


Equipes de PostgreSQL esto tentando resolver esta edio fazendo o estimativa de
"queries" TOAST-aware. Agora, esto aqui duas questes a respeito deste trabalho:
O primeiro a cerca deste trabalho deve forar o operador da "query" a usar o ndice. Emita
"SET enable_seqscan TO off;" ao usurio antes de emitir a "query". Isto fora
basicamente o operador da "query" a evitar varreduras seqenciais sempre que possvel.
Assim usa o ndice de GIST como usual. Mas este "flag" tem que ser ajustado em cada
conexo, e faz com que o operador da "query" faa estimaes em outros casos, assim
que voc se "SET enable_seqscan TO on;" depois da "query".
O segundo a cerca deste trabalho deve fazer a varredura seqencial to rpida como o
operador da "query" pensa. Isto pode ser conseguido criando uma coluna adicional
"caches" ao bbox, e agrupar de encontro a este. Em nosso exemplo, os comandos esto
como:
SELECT addGeometryColumn('myschema','mytable','bbox','4326','GEOMETRY','2');
UPDATE mytable set bbox = Envelope(Force_2d(the_geom));
Agora altere sua "query" para usar o operador do && de encontro ao bbox em vez do
geom_column, como:
SELECT geom_column FROM mytable WHERE bbox && SetSrid('BOX3D(0 0,1
1)'::box3d,4326);
Naturalmente, se voc mudar ou adicionar linhas na tabela, voc tem que manter o bbox
"in sync". A maneira mais transparente de fazer isto seria "triggers", mas voc tambm
pode modificar sua aplicao para manter a coluna do bbox atual ou rodar uma "query"
do UPDATE acima depois de cada modificao.

5.2. CLUSTERing em ndices da geometria


Para as tabelas que so na maior parte "read-only", e onde um nico ndice usado para
a maioria das "queries", PostgreSQL oferece o comando "CLUSTER". Este comando
requisita novamente fisicamente todas as linhas de dados na mesma ordem que os
critrios do ndice, rendendo duas vantagens do desempenho: porque a escala do ndice
faz a varredura, o nmero das buscas na tabela dos dados reduzido drasticamente. Em
segundo, se seu "set" de funcionamento concentrar-se a alguns intervalos pequenos nos

ndices, voc tem "caching" mais eficiente porque as linhas de dados so espalhadas ao
longo de poucas pginas dos dados. (procure ler a documentao do comando
"CLUSTER" do manual de PostgreSQL.)
Entretanto, atualmente PostgreSQL no permite "clustering" em ndices PostGIS GIST
porque os ndices de GIST simplesmente ignoram valores NULL, voc obtem uma
mensagem de erro como:
lwgeom=# CLUSTER my_geom_index ON my_table;
ERROR: cannot cluster when index access method does not handle null values
HINT: You may be able to work around this by marking column "the_geom" NOT NULL.
Porque a mensagem HINT diz, uma pode trabalhar em torno desta deficincia
adicionando um constraint "not null" tabela:
lwgeom=# ALTER TABLE my_table ALTER COLUMN the_geom SET not null;
ALTER TABLE
Naturalmente, isto no trabalhar se voc de fato precisar de valores NULL em sua
coluna geomtrica. Adicionalmente, voc deve usar o mtodo acima para adicionar o
"constraint", usando um CHECK "constraint" como "ALTER TABLE blubb ADD CHECK
(geometria no null);" no trabalhar.
5.3. Evitando a converso da dimenso
s vezes,acontece de ter os dados 3D ou 4D em sua tabela, mas sempre acessa-a
usando as funes asText() ou asBinary() de OpenGIS que s sai geometrias 2D. Fazem
isto internamente chamando a funo force_2d(), que introduz um "overhead" significante
para geometrias grandes. Para evitar estas "overhead", pode ser praticado "pre-drop"
naquelas dimenses adicionais uma vez e para sempre:
UPDATE mytable SET the_geom = force_2d(the_geom);
VACUUM FULL ANALYZE mytable;
Note que se adicionar sua coluna geometrica usando AddGeometryColumn() ter um
"constraint" na dimenso da geometria. Para contorn-la necessitar deixar cair o
"constraint". Recorde que para atualizar a entrada na tabela geometry_columns e recriar
mais tarde o "constraint".
No caso de tabelas grandes, pode ser dividido este UPDATE em pores confinando o
UPDATE a uma parte da tabela atravs da clusula WHERE e sua chave primria ou uns
outros critrios praticveis, e rodar um simples "VACUUM;" entre seus UPDATEs. Isto
reduz drasticamente a necessidade para o espao em disco provisrio. Adicionalmente,
se misturar dimenses geomtricas, restringindo o UPDATE por "WHERE
dimension(the_geom)>2" pula reescrever da geometria que j esto no 2D.

Captulo 6. Referncias PostGIS

As funes descritas abaixo so as quais o usurio de PostGIS utiliza. Existem outras


funes que so requeridas como suporte de funes aos objetos de PostGIS que no
so de uso para um usurio comum.
6.1. Funes de OpenGIS
6.1.1. Funes de Gerenciamento
AddGeometryColumn(varchar, varchar, varchar, integer, varchar, integer)
Sintaxe: AddGeometryColumn(<schema_name>, <table_name>, <column_name>, <srid>,
<type>, <dimension>). Acrescenta uma coluna geomtrica a uma tabela existente de
atributos. O dbname o nome do exemplo de banco de dados. O srid devem ser uma
referncia de valor inteiro a uma entrada dentro da tabela SPATIAL_REF_SYS. O tipo
deve ser uma string maiscula que corresponde ao tipo de geometria , eg, ' POLGONO'
ou ' MULTILINESTRING '.
DropGeometryColumn(varchar, varchar, varchar)
Sintaxe: DropGeometryColumn(<schema_name>, <table_name>, <column_name>).
Remove uma coluna geomtrica de uma tabela espacial. Note que o schema_name
necessitar combinar o campo do f_schema_name da linha da tabela na tabela dos
geometry_columns.
SetSRID(geometry)
Atribui o SRID em uma geometria para um valor de inteiro particular. utilizado na
construo de caixas de salto para "queries".
6.1.2. Funes de Relacionamento da Geometria
Distance(geometry,geometry)
Retorna a distancia cartesiana entre duas geometrias em unidades projetadas.
Equals(geometry,geometry)
Retorna1 (VERDADEIRO) se esta geometria que "spatially equal" (espacialmente
iguais) a uma outra geometria. Use ' = ' para uma melhor resposta .
equals (' LINESTRING(0 0, 10 10) ', ' LINESTRING(0 0, 5 5, 10 10) ') verdade.
Executado pelo mdulo de GEOS
OGC SPECs2.1.1.2
Disjoint(geometry,geometry)
Retorna 1 (VERDADEIRO) se esta Geometria que "spatially disjoint" (desloca
espacialmente) de outra geometria.
Executado pelo mdulo de GEOS
No chame "GeometryCollection" como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean (condio
verdadeira ou falsa), e no um inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - a.Relate(b, ' FF*FF * * * * ')
Intersects(geometry,geometry)
Retorna 1 (VERDADEIRO) se esta geometria "spatially intersects" (cruza espacialmente)
outra geometria.

Executado pelo mdulo de GEOS


No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean (condio
verdadeira ou falsa), e no um inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - Intersects(g1, g2)-Not (Disjoint(g1, g2))
Touches(geometry,geometry)
Retorna 1 (VERDADEIRO) se esta geometria "spatially touches" (toca espacialmente) de
outra geometria.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean (condio
verdadeira ou falsa), e no um inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - a.Touches(b) - (I(a) intersection I(b) = {empty set}) e (a
intersection b) no vazio
Crosses(geometry,geometry)
Retorna 1 (VERDADEIRO) se esta geometria "spatially crosses" de outras geometrias.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean (condio
verdadeira ou falsa), e no um inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - a.Relate(b, ' T*T * * * * * * ')
Within(geometry A,geometry B)
Retorna 1 (VERDADEIRO) se a geometria A "spatially within" a geometria B.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean, e no um
inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - a.Relate(b, ' T*F**F * * * ')
Overlaps(geometry,geometry)
Retorna 1 (VERDADEIRO) se Geometria "spatially overlaps" (sobrepe espacialmente).
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean, e no um
inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3
Contains(geometry A, geometry B)
Retorna 1 (VERDADEIRO) se a geometria A "spatially contains" (contem espacialmente) a
geometria B.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean, e no um
inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - mesmo como within(geometry,geometry)
Intersects(geometry,geometry)

Retorna 1 (VERDADEIRO) se a geometria "spatially intersects".


Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean, e no um
inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - NOT disjoint(geometry,geometry)
Relate(geometry,geometry, intersectionPatternMatrix)
Retorna 1 (VERDADEIRO) se esta geometria espacialmente relatada para outra
geometria, testando intereseco entre o interior, o limite e o exterior de duas geometrias
como especificado pelos valores em umaintersectionPatternMatrix.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: esta a verso "allowable" (permissvel) que retorna uma boolean, e no um
inteiro.
OGC SPEC s2.1.1.2 / / s2.1.13.3 - NOT disjoint(geometry,geometry)
Relate(geometry,geometry)
Retorna o DE-9IM (dimensionally extended nine-intersection matrix)
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
No em especificao OGC, mas sub-entendido. veja s2.1.13.2
6.1.3. Funes de Processamento da Geometria
Centroid(geometry)
Retorna o identificador de centro da geometria como um ponto.
Computao ser mais precisa que se executado pelo mdulo de GEOS (ocorreu em
tempo de compilao).
Area(geometry)
Retorna a rea da geometria, se um polgono ou multi-polgono.
Length(geometry)
O comprimento desta curva em sua referncia espacial associada.
sinnimo para length2d ()
OGC SPEC 2.1.5.1
PointOnSurface(geometry)
Retorna um ponto garantido estar na superfcie
Implementado usando GEOS
OGC SPEC 3.2.14.2 e 3.2.18.2 Boundary(geometry)
Retorna o fechamento do limite combinatorial desta geometria. O limite combinatorial
definido como descrito na seo 3.12.3.2 da OGC SPEC. Porque o resultado desta
funo um fechamento, e conseqentemente fecharam topologicamente, o limite
resultante pode ser representado usando representao de primitivas geomtricas como
discutido na OGC SPEC, seo 3.12.2.

Executado pelo mdulo de GEOS


OGC SPEC s2.1.1.1
Buffer(geometry,double,[integer])
Retorna uma geometria que represente todos os pontos que distanciam desta geometria
menor ou igual a distancia. Clculos esto em um Spacial Reference System desta
geometria. O terceiro parametro opcional atribui o nmero de segmentos usados para
aproximar um quarto de crculo (padro para 8).
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
OGC SPEC s2.1.1.3
ConvexHull(geometry)
Retorna uma geometria que representa a casca convexa desta geometria.
Executado pelo mdulo de GEOS
OGC SPECs2.1.1.3
Intersection(geometry,geometry)
Retorna uma geometria que representa a interseo atribuda do ponto das Geometrias.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
OGC SPEC s2.1.1.3
SymDifference(geometry A, geometry B)
Retorna uma geometria que representa a diferena simtrica atribuda do ponto da
geometria A com geometria B.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
OGC SPEC s2.1.1.3
Difference(geometry A, geometry B)
Retorna uma geometria que representa a diferena atribuda do ponto da geometria A
com geometria B.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
OGC SPEC s2.1.1.3
GeomUnion(geometry,geometry)
Retorna uma geometria que representa a unio atribuda do ponto das geometrias.
Executado pelo mdulo de GEOS
No chame GeometryCollection como um argumento
NOTA: este renomeado de "union" porque unio uma palavra reservada SQL
OGC SPEC s2.1.1.3
GeomUnion(geometry set)
Retorna uma geometria que representa a unio atribuda do ponto de todas as geometrias
em dado conjunto.
Executado pelo mdulo de GEOS
No chame GeometryCollection no conjunto de argumento
Nada definido em OGC SPEC

MemGeomUnion(geometry set)
Mesmo que o anterior, s que com "memory-friendly" (memria-amigvel - usa menos
memria e mais tempo de processamento)
6.1.4. Assessores Geomtricos
AsText(geometry)
Retorna a representao de Well-Known Text (WKT) da geometria. Por exemplo:
POLYGON(0 0,0 1,1 1,1 0,0 0)
OGC SPEC s2.1.1.1
AsBinary(geometry)
Retorna a geometria no OGC formato "well-known-bynary", usando a codificao endian
do usurio em que o banco de dados est funcionando. utilizado em cursores binrios
para extrair dados do banco de dados sem convert-la a uma representao string.
OGC SPEC s2.1.1.1 - also see asBinary(<geometry>,'XDR') and
asBinary(<geometry>,'NDR')
SRID(geometry)
Retornos de nmeros inteiros SRID do sistema de referncia espacial da geometria.
OGC SPEC s2.1.1.1
Dimension(geometry)
A dimenso inerente deste objeto de geometria, que deve ser menor ou igual dimenso
coordenada. OGC SPEC s2.1.1.1 - retorna 0 para pontos, 1 para linhas, 2 para polgonos,
e a maior dimenso dos componentes de um GEOMETRYCOLLECTION.
select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0)');
dimension
----------1
Envelope(geometry)
Retorna um polgono representando a caixa delimitada da geometria.
OGC SPEC s2.1.1.1 - A caixa delimitada mnima para esta geometria, retornou como uma
geometria. O polgono est definido por pontos de curva da caixa delimitada ((MINX,
MINY), (MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)).
NOTA:PostGIS acrescentar uma coordenada de Zmin/Zmax tambm.
IsEmpty(geometry)
Retorna 1 (VERDADEIRO) se esta geometria a geometria vazia. Se for verdade, ento
esta geometria representa o conjunto de ponto vazio-i.e.GEOMETRYCOLLECTION
(EMPTY).
OGC SPEC s2.1.1.1
IsSimple(geometry)
Retorna 1 (VERDADEIRO) se esta geometria no tem nenhum ponto geomtrico
anmalo, como interseco prpria ou tangncia prpria.
Executado pelo mdulo de GEOS
OGC SPECs2.1.1.1

IsClosed(geometry)
Retornos verdadeiros do comeo de geometria e pontos finais so coincidentes.
IsRing(geometry)
Retorna 1 (VERDADEIRO) se esta Curva est fechada (StartPoint () = EndPoint ()) e esta
Curva simples (no atravesse o mesmo ponto mais de uma vez).
Executado por GEOS
OGC spec 2.1.5.1
NumGeometries(geometry)
Se geometria um GEOMETRYCOLLECTION (ou MULTI *) retorna o nmero de
geometrias. Caso contrrio, retorna NULO.
GeometryN(geometry,int)
Retorna a ensima geometria se a geometria uma GEOMETRYCOLLECTION,
MULTIPOINT, MULTILINESTRING ou MULTIPOLYGON. Caso contrrio, retorna NULO.
Nota
Indice 1-based como para especificaes OGC desde a verso 0.8.0. As verses
anteriores executaram esta como 0-based preferivelmente.
NumPoints(geometry)
Encontra e Retorna o nmero de pontos na primeira linha na geometria. Retorna NULO se
no h nenhuma linha na geometria.
PointN(geometry,integer)
Retorna o ensimo ponto na primeira linha na geometria. Retorna NULO se no h
nenhuma linha na geometria.
ExteriorRing(geometry)
Retorna o anel exterior do primeiro polgono na geometria. Retorna NULO se no h
nenhum polgono na geometria.
NumInteriorRings(geometry)
Retorna o nmero de anis interiores do primeiro polgono na geometria. Retorna NULO
se no h nenhum polgono na geometria.
NumInteriorRing(geometry)
Sinomimo para NumInteriorRings (geometry). As especificaes OpenGIS so
ambiguas sobre o nome da funo exata, assim que fornecemos
ambas as
escritas.
InteriorRingN(geometry, integer)
Retorna o ensimo anel interior do polgono na geometria. Retorna NULO se no h
nenhum polgono na geometria ou o N dado fora da escala(1 baseado).
Nota
Indice is 1-based como especificaes para OGC desde a verso 0.8.0. As verses
anteriores implementaram esta como 0-based preferivelmente.

EndPoint(geometry)
Retorna o ltimo ponto da geometria de "LineString" como um ponto.
StartPoint(geometry)
Retorna o primeiro ponto da geometria de "LineString" como um ponto.
GeometryType(geometry)
Retorna o tipo da geometria como uma string. Eg: ' LINESTRING ', ' POLYGON ', '
MULTIPOINT ', etc.
OGC SPEC s2.1.1.1 - Retorna o nome do sub-tipo imediato de geometria de qual neste
caso de geometria um membro. O nome do sub-tipo imediato de geometria devolvido
como uma string.
X(geometry)
Encontra e retorna a coordenada de X do primeiro ponto na geometria. Retorna NULO se
no h nenhum ponto na geometria.
Y(geometry)
Encontra e retorna a coordenada de Y do primeiro ponto na geometria. Retorna NULO se
no h nenhum ponto na geometria.
Z(geometry)
Encontra e retorna a coordenada de Z do primeiro ponto na geometria. Retorna NULO se
no h nenhum ponto na geometria.
M(geometry)
Retorna uma coordenada M do ponto, ou NULO se no disponvel. A entrada deve ser um
ponto.
Nota
This is not (yet) part of the OGC spec, but is listed here to complete the point coordinate
extractor function list.
Esta no (ainda) parte das especificaes de OGC, mas listada aqui
para completar a lista da funo do extrator da coordenada do
ponto.
6.1.5. Construtores Geomtricos
GeomFromText(text,[<srid>])
Converte uma geometria de WKT com o dado SRID.
OGC SPEC 3.2.6.2 - a opo SRID est de conformidade.
PointFromText(text,[<srid>])
Faz uma geometria de WKT com o dado SRID. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um Ponto
LineFromText(text,[<srid>])

Faz uma geometria de WKT com o dado SRID. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no uma Linha
LinestringFromText(text,[<srid>])
Faz uma geometria de WKT com o dado SRID. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no uma Linha
PolyFromText(text,[<srid>])
Faz uma Geometria de WKT com o SRID dado . Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um Polgono
PolygonFromText(text,[<srid>])
Faz uma geometria de WKT com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um Polgono
MPointFromText(text,[<srid>])
Faz uma geometria de WKT com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um MULTIPOINT
MLineFromText(text,[<srid>])
Faz uma geometria de WKT com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um MULTILINESTRING
MPolyFromText(text,[<srid>])
Faz uma Geometria de WKT com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um MULTIPOLYGON
GeomCollFromText(text,[<srid>])
Faz uma geometria de WKT com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um GEOMETRYCOLLECTION
GeomFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der,
padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
GeometryFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der,
padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
PointFromWKB(bytea,[<srid>])

Faz uma geometria de WKB com o SRID dado. Caso SRID no der,
padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um PONTO
LineFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um LINESTRING
LinestringFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um LINESTRING
PolyFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um POLGONO
PolygonFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
MPointFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um MULTIPOINT
MLineFromWKB(bytea,[<srid>])
Faz uma geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um MULTILINESTRING
MPolyFromWKB(bytea,[<srid>])
Faz uma Geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um MULTIPOLYGON
GeomCollFromWKB(bytea,[<srid>])
Faz uma Geometria de WKB com o SRID dado. Caso SRID no der, padroniza-se -1.
OGC SPEC 3.2.6.2 - opo SRID est de conformidade.
Mostra um erro se o WKT no um GEOMETRYCOLLECTION
BdPolyFromText(text WKT, integer SRID)
Construir um Polygon dada uma coleo arbitrria de linhas fechadas como uma
representao do texto MultiLineString. Lana um erro se WKT no for um
MULTILINESTRING. Lana um erro se a sada for um MULTIPOLYGON;
usa BdMPolyFromText neste caso ou v BuildArea() para um acesso especfico de
postgis.

OGC SFSQL 1.1 - 3.2.6.2


Disponibilidade: 1.1.0 - requer GEOS >= 2.1.0.
BdMPolyFromText(text WKT, integer SRID)
Construir um MultiPolygon dada uma coleo arbitrria de linha fechada como uma
respresentao do texto de MultiLineString. Lana um erro se WKT no for um
MULTILINESTRING. Fora sada MULTIPOLYGON mesmo quando o resultado
composto somente por um nico POLYGON; usa BdPolyFromText se voc estiver certo
que um nico POLYGON resultar da operao ou veja BuildArea() para um acesso
especfico de postgis.
OGC SFSQL 1.1 - 3.2.6.2
Disponibilidade: 1.1.0 - requer GEOS >= 2.1.0.
6.2. Extenses de Postgis
6.2.1. Funes de Gerenciamento
DropGeometryTable([<schema_name>], <table_name>)
Destri uma tabela e todas suas referncias nas colunas geomtricas. Nota: usa
o current_schema() em instalaes do pgsql schema-aware se o schema no for
fornecido.
UpdateGeometrySRID([<schema_name>], <table_name>, <column_name>, <srid>)
Atualiza o SRID de todas as caractersticas em uma coluna da geometria que atualiza
confinamente e referncia nas colunas geomtricas. Nota: usa o current_schema() em
instalaes do pgsql schema-aware se o schema no for fornecido.
update_geometry_stats([<table_name>, <column_name>])
Atualiza estatisticas sobre tabelas espaciais para o uso pelo operador da seleo.
Precisar tambm rodar o "VACUUM ANALYZE [ table_name ] [ column_name ]" para as
estatisticas que recolhem o processo para estar completo. Nota: comeando com
PostgreSQL 8.0 que analisando estatisticas automaticamente executado rodando
"VACUUM ANALYZE".
postgis_version()
Retorna o nmero de verso de PostGIS e opes de tempo de compilao. Nota: Antes
da verso 1.1.0 esta era uma funo procedural, assim possivelmente no estar
retornando a informao exata (em caso dos melhoramentos incompletos do banco de
dados).
postgis_lib_version()
Retorna o nmero de verso da biblioteca de PostGIS.
Disponvel: 0.9.0
postgis_lib_build_date()
Retorna data da construo da biblioteca PostGIS.
Disponvel: 1.0.0RC1
postgis_script_build_date()

Retorna data da construo de scripts PostGIS.


Disponvel: 1.0.0RC1
postgis_scripts_installed()
Retorna a verso do script postgis instalado neste banco de dados. Nota: Se a sada
desta funo no combinasse com a sada de postgis_scripts_released() provavelmente
faltou promover corretamente um banco de dados existente. Veja a seo Upgrading para
mais informaes.
Disponibilidade: 0.9.0
postgis_scripts_released()
Retorna o nmero da verso do script de lwpostgis.sql liberado com o instalado na
biblioteca do postgis. Nota: Comear com verso 1.1.0 esta funo, retorna o mesmo
valor do postgis_lib_version(). Conservar para a compatibilidade inversa.
Disponvel: 0.9.0
postgis_geos_version()
Retorna o nmero da verso da biblioteca de GEOS ou NULO se o suporte a GEOS no
for permitida.
Disponvel: 0.9.0
postgis_proj_version()
Retorna o nmero da verso da biblioteca PROJ4 ou NULo se o suporte a PROJ4 no for
permitida.
Disponvel: 0.9.0
postgis_uses_stats()
Retorna verdadeiro se o uso do STATS for permitido,caso contrrio retorna falso.
Disponvel: 0.9.0
postgis_full_version()
Retorna a verso postgis completa e constri informaes de configurao.
Disponvel: 0.9.0
6.2.2. Operadores
A &< B
O operador "&<" retorna verdadeiro se a caixa delimitada sobrepor o prprio A ou est
esquerda da caixa delimitada do prprio B.
A &> B
O operador "&>" retorna verdadeiro se a caixa delimitada sobrepor o prprio A ou est
direita da caixa delimitada do prprio B.
A << B
O operador "<<" retorna verdadeiro se a caixa delimitada for estritamente esquerda da
caixa delimitada do prprio B.
A >> B

O operador ">>" retorna verdadeiro se o salto de caixa do prprio A for estritamente


direita do salto de caixa do prprio B.
A &<| B
O operador "&<|" returna verdadeiro se a caixa delimitada do prprio A for abaixo da caixa
delimitada do prprio B.
A |&> B
O operador "|&>" returna verdadeiro se a caixa delimitada de A for acima da caixa
delimitada do prprio B.
A <<| B
O operador "<<|" retorna verdadeiro se a caixa delimitada de A for estritamente abaixo da
caixa delimitada do prprio B.
A |>> B
O operador "|>>" retorna verdadeiro se a caixa delimitada A for esttritamente acima da
caixa delimitada do prprio B.
A ~= B
O operador "~ = " o operador "same as". Testa igualdade geomtrica atual de duas
caractersticas. Assim, se A e B so de mesma caracterstica, o operador retorna
verdadeiro.
A@B
O operador "@ " retorna verdadeiro se a caixa delimitada do prprio A estiver
completamente contido na caixa delimitada do prprio B.
A~B
O operador "~" retorna verdadeiro se a caixa delimitada estiver completamente contida na
caixa delimitada do prprio B.
A && B
O operador "&& " o operador sobreposto. Se a caixa delimitada do prrpio A sobrepor a
caixa delimitada do prprio B, o operador retorna verdadeiro.
6.2.3. Funes de Medida
area2d(geometry)
Retorna a rea da geometria, se um polgono ou multi-polgono.
distance_sphere(point, point)
Retorna a distncia linear nos medidores entre dois pontos de lat/lon. Usa uma terra e um
raio esfricos de 6370986 medidores. Mais rapidamente do que distance_spheroid(), mas
menos exato. Atualmente s se implementou para pontos.
distance_spheroid(point, point, spheroid)
Retorna a distncia linear entre dois pontos latitude/longitude dando um esferide
particular. Veja a explicao de esferides dados para length_spheroid(). Atualmente s
se implementou para pontos.

length2d(geometry)
Retorna o comprimento 2-dimensional da geometria se um linestring ou multi-linestring.
length3d(geometry)
Retorna o comprimento 3-dimensional da geometria se um linestring ou multi-linestring.
length_spheroid(geometry,spheroid)
Calcula o comprimento de uma geometria em um ellipsoid. utilizada se as coordenadas
da geometria est em latitude/longitude e um comprimento desejado sem reprojeces
O ellipsoid um tipo de banco de dados separado e pode ser construdo como segue:
SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]
Outra forma:
SPHEROID["GRS_1980",6378137,298.257222101]
Um exemplo de clculo poderia ser:
SELECT
length_spheroid(
6378137,298.257222101]' )
FROM geometry_table;

geometry_column,

'SPHEROID["GRS_1980",

length3d_spheroid(geometry,spheroid)
Calcula o comprimento de uma geometria em um ellipsoid, pegando a elevao dentro da
conta. exatamente igual a length_spheroid excluindo as coordenadas verticais
(expressado nas mesmas unidades como os spheroid axes) so usados para calcular a
soma de deslocamento da distncia extra vertical.
distance(geometry, geometry)
Retorna a distncia menor entre duas geometrias..
max_distance(linestring,linestring)
Retorna a distncia maior entre duas linhas de string.
perimeter(geometry)
Retorna o permetro da geometria, se um polgono ou multi-polgono.
perimeter2d(geometry)
Retorna o permetro 2-dimensional da geometria, se um polgono ou multi-polgono.
perimeter3d(geometry)
Retorna o permetro 3-dimensional da geometria, se um polgono ou multi-polgono.
azimuth(geometry, geometry)
Retorna o azimuth do segmento definido pelo dado geometrias Point ou o NULO, se
os dois pontos forem coincidentes. O valor do retorno est
nos radianos.
Disponibilidade: 1.1.0
6.2.4. Sadas Geomtricas

AsBinary(geometry,{'NDR'|'XDR'})
Retorna a geometria no formato OGC "well-known-bynary", usando "little-endian" (NDR)
ou big-endian (XDR) . utilizado em cursores binrios para extrair dados do banco de
dados sem convert-la a uma representao string.
AsEWKT(geometry)
Retorna uma Geometria em formato EWKT (como texto).
AsEWKB(geometry, {'NDR'|'XDR'})
Retorna uma geometria em formato EWKB (como o "bytea") usando outra codificao
"little-endian" (NDR) ou "big-endian".
AsSVG(geometry, [rel], [precision])
Retorna a geometria como um dado do trajeto de SVG. Usa 1 como segundo argumento e
tem o trajeto dos dados implementados nos termos de movimentos relativos, o default (ou
0) usa movimentos absolutos. O terceiro argumento pode ser usado para reduzir o
nmero mximo dos dgitos decimais usados na sada ("default" para 15). Pontos de
geometrias sero rendidos como cx/cy quando arg 'rel' 0, x/y quando 'rel' 1.
AsGML(geometry, [precision])
Retorna a geometria como um elemento GML. O segundo argumento pode ser usado
para reduzir o nmero mximo dos dgitos significativos usados na sada (defaults para
15).
AsKML(geometry, [precision])
Retorna a geometria como um elemento KML. O segundo argumento pode ser usado
para reduzir o nmero mximo de dgitos significativos usados na sada ( defaults para
15).

6.2.5. Construtores Geomtricos


GeomFromEWKT(text)
Faz a geometria de EWKT.
GeomFromEWKB(bytea)
Faz a geometria de EWKB.
MakePoint(<x>, <y>, [<z>], [<m>])
Cria um ponto 2d,3dz or 4d geomtrico.
MakePointM(<x>, <y>, <m>)
Cria um ponto 3dm geomtrico.
MakeBox2D(<LL>, <UR>)
Cria um BOX2D definido dados os pontos geomtricos.
MakeBox3D(<LLB>, <URT>)
Cria um BOX3D definido dados os pontos geomtricos.

MakeLine(geometry set)
Cria um Linestring de um conjunto de pontos de geometrias. Poder usar um subselect
para ordenar os pontos antes de aliment-los a este agregado.
MakeLine(geometry, geometry)
Cria um Linestring dados dois pontos geomtricos.
LineFromMultiPoint(multipoint)
Cria um LineString de uma geometria MultiPoint.
MakePolygon(linestring, [linestring[]])
Cria um polgono formado pela proteo dada e pelo conjunto de regras. Poder construir
um conjunto de geometria usando Accum. Entradas geomtricas devem ser
LINESTRINGS fechadas (veja IsClosed e GeometryType).
BuildArea(geometry)
Cria uma geometria areal formada pelo componente de linha de trabalho da
geometria dada. O tipo do retorno pode ser um Polygon ou um MultiPolygon,
dependendo da entrada. Se a entrada das linhas de trabalho no forem forma de
polgonos, NULO retornado. Veja tambm BdPolyFromText
e BdMPolyFromText - envoltrios para esta funo com padro de interface OGC.
Disponibilidade: 1.1.0 - requer GEOS >= 2.1.0.
Polygonize(geometry set)
Agregado. Cria um GeometryCollection que contem os polgonos possveis formados de
componentes de linhas de trabalho de um conjunto de geometrias.
Disponvel 1.0.0RC1 - requer GEOS >= 2.1.0.
Collect(geometry set)
Esta funo retorna um GEOMETRYCOLLECTION ou um objeto MULTI de um conjunto
de geometrias. A funo collect() uma funo "agregada" na terminologia de
PostgreSQL. Isso significa que operadores em listas de dados, na mesma maneira de
funes de sum() e de mean(). Para o exemplo, "SELECT COLLECT(GEOM) FROM
GEOMTABLE GROUP BY ATTRCOLUMN" retornar um GEOMETRYCOLLECTION
separado para cada valor distinto de ATTRCOLUMN.
Collect(geometry, geometry)
Esta funo retorna uma geometria, sendo uma coleo de duas sadas geomtricas. O
tipo de sada pode ser um MULTI* ou um GEOMETRYCOLLECTION.
Dump(geometry)
Esta uma funo de um conjunto de retornos (set-returning function-SRF). Retorna um
conjunto de linhas geometry_dump, formada por uma geometria (geom) e por um
conjunto de inteiros (path). Quando a entrada geometrica um tipo simples
(POINT,LINESTRING,POLYGON) um nico registro ser retornado com um conjunto de
caminhos vazios e a entrada geomtrica como geom. Quando a entrada geomtrica
uma coleo ou multi retornar um registro para cada um dos componentes da coleo, e
o caminho expressar a posio do componente dentro da coleo.
Disponibilidade: PostGIS 1.0.0RC1. Requer PostgreSQL 7.3 ou superiores.

DumpRings(geometry)
Esta uma funo de um conjunto de retornos (set-returning function-SRF). Retorna um
conjunto de linhas geometry_dump, formado por uma geometria (geom) e por uma
conjunto de inteiros (path). O campo path carrega o ndice do anel do polgono, contem
um nico elemento: 0 para o escudo, nmero do furo para regras. O campo do geom
contem o anel correspondente como um polgono.
Disponibilidade: PostGIS 1.1.3. Requer PostgreSQL 7.3 ou superiores.

6.2.6. Editores Geomtricos


AddBBOX(geometry)
Adiciona caixa delimitada geometria. Isto far na caixa delimitada baseada em selees
mais rpidas, mas aumentar o tamanho da geometria.
DropBBOX(geometry)
Destri a caixa delimitada da geometria. Isto reduz o tamanho da geometria, mas as caixa
delimitada baseada em selees mais lentas.
AddPoint(linestring, point, [<position>])
Adiciona um ponto a um LineString na posio <pos>
parmetro pode ser omitido ou ajustado a -1.

(ndice 0-based). O terceiro

RemovePoint(linestring, offset)
Remove ponto de uma linestring. Offset 0-based.
Disponvel: 1.1.0
SetPoint(linestring, N, point)
Replace point N of linestring with given point. Index is 0-based.
Substitue o ponto N de linestring com o ponto dado. O ndice 0-based.
Disponvel: 1.1.0
Force_collection(geometry)
Converte a geometria em um GEOMETRYCOLLECTION. utilizado para simplificar a
respresentao de WKB.
Force_2d(geometry)
Fora as geometrias dentro de um "2-dimensional mode" (modo bi-dimensional) de forma
que todas as representaes de sada s tero as coordenadas X e Y. utilizado para
forar a sada OGC-compliant (desde que OGC especifica somente geometrias 2-D).
Force_3dz(geometry), Force_3d(geometry)
Fora as geometrias dentro de um modo XYZ.
Force_3dm(geometry)

Fora as geometrias dentro de um modo XYM.


Force_4d(geometry)
Fora as geometrias dentro de um modo XYZM.
Multi(geometry)
Retorna a geometria como uma geometria MULTI*. Se a geometria j uma MULTI*,
esta retornar inalterada.
Transform(geometry,integer)
Retorna uma nova geometria com suas coordenadas transformadas ao SRID referenciado
pelo parmetro inteiro. O destino SRID tem que existir na tabela SPATIAL_REF_SYS.
Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8,
float8, float8)
Aplica uma trasformao 3d affine para a geometria. A chamada
Affine(geom, a, b, c, d, e, f, g, h, i,
xoff, yoff, zoff)
representa a matriz da transformao
/ a b c xoff \ | d e f
yoff | | g h i zoff | \ 0 0 0 1 /
e os vertices so transformados como segue:
x' = a*x + b*y + c*z + xoff y' = d*x +
e*y + f*z + yoff z' = g*x + h*y + i*z + zoff
Todas funes de traduo / escala abaixo so expressados atravs de
uma transformao affine.
Disponvel: 1.1.2.
Affine(geometry, float8, float8, float8, float8, float8, float8)
Aplica uma transformao 2d affine para a geometria. A chamada
Affine(geom, a, b, d, e, xoff, yoff)
representa a matriz da transformao
/ a b 0 xoff \ / a b xoff \ | d e 0 yoff | rsp.
| d e yoff | | 0 0 1 0 | \ 0 0 1 / \ 0 0 0 1 /
e os vertices so transformados como segue:
x' = a*x + b*y + xoff y' = d*x + e*y +
yoff z' = z
Este mtodo um subcaso do mtodo 3D acima.
Disponvel: 1.1.2.
Translate(geometry,float8,float8,float8)

Traduz a geometria a um novo local que usa os parmetros numricos como recompensa.
Isto : translate(geom,X,Y,Z).
Scale(geometry, float8, float8, float8)
Escala a geometria a um novo tamanho, multiplicando as ordenadas com os parmetros.
Isto : scale (geom, Xfactor, Yfactor, Zfactor).
Disponvel: 1.1.0
RotateZ(geometry, float8), RotateX(geometry, float8), RotateY(geometry, float8),
Gira a geometria em torno da linha central de Z, X ou Y por dado ngulo dado nos
radianos. Seguir a regra right-hand.
Disponvel: 1.1.2.
TransScale(geometry, float8, float8, float8, float8)
First, translates the geometry using the first two floats, then scales it using the second two
floats, working in 2D only. Using transscale(geom, X, Y, XFactor, YFactor) internally calls
affine(geom, XFactor, 0, 0, 0, YFactor, 0, 0, 0, 1, X*XFactor, Y*YFactor, 0).
Primeiro, traduz a geometria usando os primeiros dois floats, a seguir escala-o, usando os
segundos dois floats, trabalhando somente em 2D. Usando transscale(geom, X, Y,
XFactor, YFactor) internamente chama affine(geom, XFactor, 0, 0, 0, YFactor, 0, 0, 0, 1,
X*XFactor, Y*YFactor, 0).
Disponvel: 1.1.0.
Reverse(geometry)
Retorna a geometria com a ordem do vrtice invertida.
ForceRHR(geometry)
Fora polgono da coleo a obedecer Right-Hand-Rule.
Simplify(geometry, tolerance)
Retorna uma verso "simplified" da geometria dada usando o algoritmo de DouglasPeuker. Desta forma, far realmente algo com (multi)linhas e (multi)polgonos, mas voc
pode estar seguro de chama-lo com qualquer tipo da geometria. Desde que a
simplificao ocorra em uma base "object-by-object" e voc pode tambm alimentar um
GeometryCollection a esta funo. Note que a geometria retornada pode perder sua
simplicidade. (veja IsSimple)
SnapToGrid(geometry, originX, originY, sizeX, sizeY), SnapToGrid(geometry, sizeX, sizeY),
SnapToGrid(geometry, size)
Pega todos os pontos de entrada da geometria definio de grade por seu tamanho de
origem e de clula. Remove os pontos consecutivos que caem na mesma clula,
retornando eventualmente o NULO, se os pontos da sada no forem bastante para definir
uma geometria do tipo dado. As geometrias derrubadas em uma coleo so desfeitas
dela.
Nota

A geometria retornada pode perder sua simplicidade (veja IsSimple).


Nota

Antes da liberao 1.1.0 esta funo retornou sempre uma geometria 2d .


Comeando por 1.1.0 a geometria retornada ter mesmo
dimensionalidade que a entrada, uma com dimenso mais elevada valor no
tocado. Usar a verso pegando um segundo argumento de
geometria para definir todas as dimenses da grade.
Disponvel: 1.0.0RC1
SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM)
Pega todos os pontos de entrada da geometria a definio de grade por seu tamanho de
origem (o segundo argumento, deve ser um ponto) e por seu tamanho de clula.
Especificar 0 como tamanho para alguma dimenso que voc no quiser pegar para uma
grade.
Disponvel: 1.1.0
Segmentize(geometry, maxlength)
Retorna uma geometria modificada que no tem nenhum segmento mais por muito tempo
ento distncia dada. Os pontos interpolados tero os valores de Z e de M (se
necessrio) ajustados a 0. A computao da distncia executada em somente em 2d.
LineMerge(geometry)
Retorna um (ou conjunto) LineString(s) formado por unindo a linha de trabalho (linework)
constituinte da entrada.
Disponvel: 1.1.0 - requer GEOS >= 2.1.0
6.2.7. Referncia Linear
line_interpolate_point(linestring, location)
Retorna um ponto interpolado ao longo de uma linha. O primeiro argumento deve ser um
LINESTRING. O segundo argumento um float8 entre 0 e 1 representando frao do
total 2d length o ponto tem que ser encontrado.
Veja line_locate_point() para computar a posio da linha o mais prximo a um Point.
Nota
Desde a liberao 1.1.1 esta funo tambem interpola valores M e Z (quando presente),
quando que as liberaes anteriores ajustam-nas para 0.0.
Disponvel: 0.8.2
line_substring(linestring, start, end)

Retorna um linestring sendo um substring da entrada uma que comea e que termina nas
fraes do total 2d length. Os segundo e terceiro argumentos so os valores float8 entre 0
e 1.
Se o 'start' e 'end' tiverem o mesmo valor, este equivalente ao line_interpolate_point().
Veja line_locate_point() para computar a posio da linha o mais prximo a um ponto.
Nota
Desde a liberao 1.1.1 esta funo tambm interpola valores M e Z (quando
presente), quando que as liberaes anteriores ajustam-nas aos valores no
especificados.
Disponvel: 1.1.0
line_locate_point(LineString, Point)
Retorna um float entre 0 e 1 que representam a posio do ponto o mais prximo
em LineString para o dado Point, como uma frao do total
tamanho 2d line.
Voc pode usar a posio retornada para extrair um Point (line_interpolate_point)
ou um substring (line_substring).
Disponvel: 1.1.0
locate_along_measure(geometry, float8)
Retorna um valor derivado da coleo da geometria com elementos que combinam
a medida especificada. Os elementos Polygonal no so
suportados.
Semntica especificado por: ISO/IEC CD 13249-3:200x(E) - Text for Continuation
CD Editing Meeting
Disponvel: 1.1.0
locate_between_measures(geometry, float8, float8)
Retorna um valor derivado da coleo da geometria com elementos que combinam a
escala especificada das medidas inclusive. Os elementos Polygonal no so suportados.
Semntica especificado por: ISO/IEC CD 13249-3:200x(E) - Text for Continuation CD
Editing Meeting
Disponvel: 1.1.0
6.2.8. Variado
Summary(geometry)
Retorna um resumo de texto dos contedos da geometria.
box2d(geometry)
Retorna um BOX2D representando as extenses mximas da geometria.
box3d(geometry)

Retorna um BOX3D representando as extenses mximas da geometria.


extent(geometry set)
A funo extent() uma funo "aggregate" (agregada) na terminologia de PostgreSQL.
Isso significa que os operadores em listas de dados, fazem o mesmo caminho que as
funes sum() e mean(). Por exemplo,
"SELECT EXTENT(GEOM) FROM GEOMTABLE" retornar um BOX3D dando a extenso
mxima de todas as caractersticas na tabela. Semelhantemente, "SELECT
EXTENT(GEOM) FROM GEOMTABLE GROUP BY CATEGORY" retornar um resultado
de extenso para cada categoria.
zmflag(geometry)
Returna ZM (semntica da dimenso) flag de geometrias como um inteiro.Valores so:
0=2d, 1=3dm, 2=3dz, 3=4d.
HasBBOX(geometry)
Retorna VERDADEIRO se o bbox desta geometria armazenada, FALSO caso
contrrio.Usa addBBOX() e dropBBOX() para armazenamento.
ndims(geometry)
Retorna o nmero das dimenses da geometria como um inteiro. Valores so: 2,3 ou 4.
nrings(geometry)
Se a geometria for um polgono ou um multi-polgono, retorna o nmero de anis.
npoints(geometry)
Retorna o nmero de pontos na geometria.
isvalid(geometry)
Retorna verdadeiro se esta geometria for vlida.
expand(geometry, float)
Esta funo retorna uma caixa delimitada expandida em todos os sentidos da caixa
delimitada da entrada da geometria, por uma quantidade especificada no segundo
argumento. Muito usada para selecionar distance() , para adicionar um filtro do ndice
seleo.
estimated_extent([schema], table, geocolumn)
Retorna a extenso estimada da tabela espacial dada. O estimado feito de estatisticas
de colunas geomtricas. O "schema" atual ser usado se no especificado.
Para estatstica PostgreSQL>=8.0.0 so recolhidos por VACUUM ANALYZE e a extenso
resultante ser aproximadamente 95% do real.
Para estatstica PostgreSQL<8.0.0 so recolhidos por update_geometry_stats() e a
extenso resultante ser exata.
find_srid(varchar,varchar,varchar)
A sintaxe find_srid(<db/schema>, <tabela>, <coluna>) e a funo retorna o inteiro SRID
da coluna especificada procurando atravs da tabela GEOMETRY_COLUMNS. Se a
coluna da geometria no for adicionada corretamente com a funo de
AddGeometryColumns(), esta funo no trabalhar tampouco.

mem_size(geometry)
Retorna a quantia de espaos (em bytes) encontrados na geometria.
numb_sub_objects(geometry)
Retorna o nmero dos objetos armazenados na geometria. Isto utilizado para MULTIgeometrias e GEOMETRYCOLLECTIONs.
point_inside_circle(geometry,float,float,float)
A sintaxe para esta funo point_inside_circle (<geometry>, <circle_center_x>,
<circle_center_y>, <radius>).
Retorna verdadeiro se a geometria um ponto e est dentro do crculo. Caso contrrio,
retorna falso.
xmin(box3d) ymin(box3d) zmin(box3d)
Retorna o mnimo solicitado de uma caixa delimitada.
xmax(box3d) ymax(box3d) zmax(box3d)
Retorna o mximo solicitado de uma caixa delimitada.
Accum(geometry set)
Agregado. Constri um conjunto de geometrias.

6.2.9. Suporte a grandes transaes (Long Transactions)


Este mdulo e funes associadas de pl/pgsql foram implementados para fornecer
suporte a grandes bloqueios requerido por especificao Web Feature Service.
Nota
Os usurios devem usar serializable transaction level que caso contrrio o mecanismo de
bloqueio quebraria.
EnableLongTransactions()
Permite suporte a transaes grandes. Esta funo cria as tabelas requeridas dos
metadados, necessita ser chamada uma vez antes de usar as outras funes nesta
seo. Cham-la duas vezes inofensivo.
Disponvel: 1.1.3
DisableLongTransactions()
Desabilita suporte a transaes grandes. Esta funo remove as tabelas metadados de
suporte a transaes grandes, e apaga todos os gatilhos s tabelas lock-checked.
Disponvel: 1.1.3
CheckAuth([<schema>], <table>, <rowid_col>)
Verifica atualizaes e delees das linhas em dada tabela, sendo autorizada. Identifica
linhas usando a coluna <rowid_col>.

Disponvel: 1.1.3
LockRow([<schema>], <table>, <rowid>, <authid>, [<expires>])
Ajuste de bloqueio/autorizao para linha especfica na tabela <authid> um valor de
texto, <expires> um timestamp padronizado para now() +1hour. Retorna 1 se o bloqueio
for assinado, 0 caso contrrio (j bloqueado pelo outro auth)
Disponvel: 1.1.3
UnlockRows(<authid>)
Remove todos os bloqueios carregados por id de autorizao especificada. Retorna o
nmero dos bloqueios liberados.
Disponvel: 1.1.3
AddAuth(<authid>)
Adiciona um smbolo da autorizao a ser usado na transao atual.
Disponvel: 1.1.3

6.3. Funes SQL-MM


Esta uma listagem das funes definidas SQL-MM que PostGIS suporta atualmente. As
implementaes destas funes seguem a implementao ArcSDE e assim desviar-se um
pouco das especificaes. Estes desvios sero notados.
As of version 1.2.0, these functions have been implemented by wrapping existing PostGIS
functions. As a result, full support for curved geometries may not be in place for many
functions.
At data da verso 1.2.0, estas funes foram implementadas envolvendo funes
existentes no PostGIS. Em conseqncia, o suporte cheio para geometrias curvadas para
muitas funes no pode estar no lugar.
Nota
SQL-MM define o padro SRID de todos construtores de geometrias como 0. PostGIS usa
um padro SRID de -1.
ST_Area
Return the area measurement of an ST_Surface or ST_MultiSurface value.
Retorna a medida da rea de um valor ST_Surface ou ST_MultiSurface.
SQL-MM 3: 8.1.2, 9.5.3
ST_AsBinary
Retorna a representao binria well-known de um valor ST_Geometry.

SQL-MM 3: 5.1.37
ST_AsText
Retorna a representao de texto well-known de um valor ST_Geometry.
SQL-MM 3: 5.1.25
ST_Boundary
Retorna o limite do valor ST_Geometry.
SQL-MM 3: 5.1.14
ST_Buffer
Retorna um buffer em torno do valor ST_Geometry.
SQL-MM 3: 5.1.17
ST_Centroid
Retorna centroid matemtico do valor ST_Surface ou ST_MultiSurface.
SQL-MM 3: 8.1.4, 9.5.5
ST_Contains
Testa se um valor ST_Geometry espacialmente contem um outro valor ST_Geometry.
SQL-MM 3: 5.1.31
ST_ConvexHull
Retorna o hull convexo do valor ST_Geometry.
SQL-MM 3: 5.1.16
ST_CoordDim
Returna a dimenso da coordenada do valor ST_Geometry.
SQL-MM 3: 5.1.3
ST_Crosses
Testa se um valor ST_Geometry espacialmente atravessa outro valor ST_Geometry.
SQL-MM 3: 5.1.29
ST_Difference
Returna um valor ST_Geometry que representa a diferena do conjunto de pontos de dois
valores ST_Geometry.
SQL-MM 3: 5.1.20
ST_Dimension

Returna a dimenso do valor ST_Geometry.


SQL-MM 3: 5.1.2
ST_Disjoint
Testa se um valor ST_Geometry espacialmente desconecta de outro valor
ST_Geometry.
SQL-MM 3: 5.1.26
ST_Distance
Returna a distancia entre duas geometrias.
SQL-MM 3: 5.1.23
ST_EndPoint
Returna um valor ST_Point que o ponto final de um valor ST_Curve.
SQL-MM 3: 7.1.4
ST_Envelope
Returna o retngulo delimitado para o valor ST_Geometry.
SQL-MM 3: 5.1.15
ST_Equals
Testa se um valor ST_Geometry espacialmente igual a outro valor ST_Geometry.
SQL-MM 3: 5.1.24
ST_ExteriorRing
Returna o anel exterior de um ST_Surface.
SQL-MM 3: 8.2.3, 8.3.3
ST_GeometryN
Returna a indicao do valor ST_Geometry de um ST_GeomCollection.
SQL-MM 3: 9.1.5
ST_GeometryType
Returna o tipo geomtrico do valor ST_Geometry.
SQL-MM 3: 5.1.4
ST_GeomFromText
Returna uma especificao do valor ST_Geometry.
SQL-MM 3: 5.1.40

ST_GeomFromWKB
Returna uma especificao do valor ST_Geometry.
SQL-MM 3: 5.1.41
ST_InteriorRingN
Returna o anel interior especificado de um valor ST_Surface.
SQL-MM 3: 8.2.6, 8.3.5
ST_Intersection
Returna um valor ST_Geometry que representa a interseo do conjunto de pontos de
dois valores ST_Geometry.
SQL-MM 3: 5.1.18
ST_Intersects
Testa se um valor ST_Geometry intercepta espacialmente outro valor ST_Geometry.
SQL-MM 3: 5.1.27
ST_IsClosed
Testa se um valor ST_Curve ou um valor ST_MultiCurve est fechado.
Nota
SQL-MM define o resultado de ST_IsClosed(NULL) para ser 0, quando PostGIS returna
NULO.
SQL-MM 3: 7.1.5, 9.3.3
ST_IsEmpty
Testa se um valor ST_Geometry corresponde um conjunto vazio.
Nota
SQL-MM define o resultado de ST_IsEmpty(NULL) para ser 0, quando PostGIS returna
NULO.
SQL-MM 3: 5.1.7
ST_IsRing
Testa se um valor ST_Curve um anel.
Nota
SQL-MM define o resultado de ST_IsRing(NULL) para ser 0, quando PostGIS returna
NULO.

SQL-MM 3: 7.1.6
ST_IsSimple
Testa se um valor ST_Geometry no tem pontos geomtricos anomalos, como prpria
interseo ou prpria tangncia.
Nota
SQL-MM define o resultado de ST_IsSimple(NULL) para ser 0, qunado PostGIS returna
NULO.
SQL-MM 3: 5.1.8
ST_IsValid
Testa se um valor ST_Geometry est bem formado.
Nota
SQL-MM define o resultado de ST_IsValid(NULL) para ser 0, quando PostGIS returna
NULO.
QL-MM define o resultado de ST_IsValid(NULL) para ser 1.
SQL-MM 3: 5.1.9
ST_Length
Returna a medida do comprimento de um valor ST_Curve ou um valor ST_MultiCurve.
SQL-MM 3: 7.1.2, 9.3.4
ST_LineFromText
Returna uma especificao do valor ST_LineString.
SQL-MM 3: 7.2.8
ST_LineFromWKB
Returna uma especificao de valor ST_LineString.
SQL-MM 3: 7.2.9
ST_MLineFromText
Returna uma espeficiao de valor ST_MultiLineString.
SQL-MM 3: 9.4.4
ST_MLineFromWKB
Returna uma especificao de valor ST_MultiLineString.
SQL-MM 3: 9.4.5

ST_MPointFromText
Returna uma especificao de valor ST_MultiPoint.
SQL-MM 3: 9.2.4
ST_MPointFromWKB
Returna uma especificao de valor ST_MultiPoint.
SQL-MM 3: 9.2.5
ST_MPolyFromText
Returna uma especificao de valor ST_MultiPolygon.
SQL-MM 3: 9.6.4
ST_MPolyFromWKB
Returna uma especificao de valor ST_MultiPolygon.
SQL-MM 3: 9.6.5
ST_NumGeometries
Returna o nmero de geometrias em um ST_GeomCollection.
SQL-MM 3: 9.1.4
ST_NumInteriorRing
Returna o nmero de asnis interiores em um ST_Surface.
SQL-MM 3: 8.2.5
ST_NumPoints
Returna o nmero de pontos em um valor ST_LineString ou um valor ST_CircularString.
SQL-MM 3: 7.2.4
ST_OrderingEquals
ST_OrderingEquals compara duas geometrias e t (TRUE) se as geometrias so iguais e
as coordenadas esto na mesma ordem; caso contrrio retorna f (FALSE).
Nota
Esta implementao feita como especificao ArcSDE SQL melhor que SQL-MM. http://
edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3.htm#ST_OrderingEquals
SQL-MM 3: 5.1.43
ST_Overlaps
Testa se um valor ST_Geometry sobrepe camadas espacialmente a outro valor
ST_Geometry.

SQL-MM 3: 5.1.32
ST_Perimeter
Returna a medida do comprimento do limite de um valor ST_Surface ou de um valor
ST_MultiRSurface.
SQL-MM 3: 8.1.3, 9.5.4
ST_Point
Returna um ST_Point com os valores de coordenadas dadas.
SQL-MM 3: 6.1.2
ST_PointFromText
Returna uma especificao de valor ST_Point.
SQL-MM 3: 6.1.8
ST_PointFromWKB
Returna uma especificao de valor ST_Point.
SQL-MM 3: 6.1.9
ST_PointN
Returna uma especificao de valor ST_Point em um ST_LineString ou ST_CircularString.
SQL-MM 3: 7.2.5, 7.3.5
ST_PointOnSurface
Returna um valor ST_Point garantido para interseo espacialmente do valor ST_Surface
ou ST_MultiSurface.
SQL-MM 3: 8.1.5, 9.5.6
ST_PolyFromText
Returna uma especificao de valor ST_Polygon.
SQL-MM 3: 8.3.6
ST_PolyFromWKB
Returna uma especificao de valor ST_Polygon.
SQL-MM 3: 8.3.7
ST_Polygon
Returna uma construo de polgono de uma linestring especificada e SRID.
SQL-MM 3: 8.3.2

ST_Relate
Testa se um valor ST_Geometry relatado espacialmente outro valor ST_Geometry.
SQL-MM 3: 5.1.25
ST_SRID
Returna o identificador de sistema de referncia espacial do valor ST_Geometry.
SQL-MM 3: 5.1.5
ST_StartPoint
Returna um valor ST_Point que o ponto inicial de um valor ST_Curve.
SQL-MM 3: 7.1.3
ST_SymDifference
Returna um valor ST_Geometry que representa a diferena simtrica de um conjunto de
pontos de dois valores ST_Geometry.
SQL-MM 3: 5.1.21
ST_Touches
Testa se um valor ST_Geometry tocado espacialmente por outro valor ST_Geometry.
SQL-MM 3: 5.1.28
ST_Transform
Returna um valor ST_Geometry transformado para sistema de referncia espacial
especificado.
SQL-MM 3: 5.1.6
ST_Union
Returna um valor ST_Geometry que representa a unio de um conjunto de pontos de dois
valores ST_Geometry.
SQL-MM 3: 5.1.19
ST_Within
Testa se um valor ST_Geometry espacialmente dentro de outro valor ST_Geometry.
SQL-MM 3: 5.1.30
ST_WKBToSQL
Returna um valor ST_Geometry para uma dada representao binria well-known.
SQL-MM 3: 5.1.36
ST_WKTToSQL

Returna um valor ST_Geometry para uma dada representao de texto well-known.


SQL-MM 3: 5.1.34
ST_X
Returna o valor da coordenada x de um valor ST_Point.
SQL-MM 3: 6.1.3
ST_Y
Returna o valor da coordenada y de um valoST_Point.
SQL-MM 3: 6.1.4
6.4. Funes ArcSDE
As funes adicionais foram acrescidas para melhorar o suporte a uma interface de
estilo ArcSDE.
SE_EnvelopesIntersect
Returna t (TRUE) se os envelopes de duas intersees de geometrias;
contrrio, returna f (FALSE).

caso

SE_Is3d
Testa se um valor de geometria tem valores de coordenada z.
SE_IsMeasured
Testa se um valor de geometria tem valores de coordenada m.
SE_LocateAlong
Returna um valor de coleo de geometria derivada com elementos que combinam a
medida especificada.
SE_LocateBetween
Returna um valor de coleo de geometria derivada com
escala especificada das medidas inclusive.
SE_M
Returna o valor da coordenada m de um valor ST_Point.
SE_Z
Returna o valor da coordenada z de um valor ST_Point.

elementos que combinam a

Captulo 7. Relatando Erros


Relatar erros uma maneira fundamental de ajudar no desenvolvimento de PostGIS. O
relatrio mais eficaz de erro aquele que permite desenvolvedores PostGIS reproduzi-lo,
assim conteria um script engatilhando-o e cada informao a respeito do ambiente em
que foi detectada. Uma boa e completa informao pode ser extrada rodando SELECT
postgis_full_version() [for postgis] e SELECT version() [for postgresql].
Se voc no estiver usando a liberao anterior, vale a pena dar uma olhada primeiro no
release changelog, para verificar se seu erro j foi corrigido.
Usar o PostGIS bug tracker assegurar que seus relatrios no sero rejeitados, e
o manter informado estando com um processo seguro. Antes de relatar um erro novo,
pesquise no banco de dados para ver se este erro j conhecido, e se for adicione
toda informao nova que tiver sobre ele.
Voc poder ler o papel de Simon Tatham sobre How to Report Bugs Effectively
antes de arquivar um relatrio novo.
Apendice A. Apendice
ndice
A.1.Notas de Verso
A.1.1. Verso 1.2.1
A.1.2. Verso 1.2.0
A.1.3. Verso 1.1.6
A.1.4. Verso 1.1.5
A.1.5. Verso 1.1.4
A.1.6. Verso 1.1.3
A.1.7. Verso 1.1.2
A.1.8. Verso 1.1.1
A.1.9. Verso 1.1.0
A.1.10. Verso 1.0.6
A.1.11. Verso 1.0.5
A.1.12. Verso 1.0.4
A.1.13. Verso 1.0.3
A.1.14. Verso 1.0.2
A.1.15. Verso 1.0.1
A.1.16. Verso 1.0.0
A.1.17. Verso 1.0.0RC6
A.1.18. Verso 1.0.0RC5
A.1.19. Verso 1.0.0RC4
A.1.20. Verso 1.0.0RC3
A.1.21. Verso 1.0.0RC2
A.1.22. Verso 1.0.0RC1
A.1. Notas da Verso
A.1.1. Verso 1.2.1
Data da verso: 11/01/2007

Esta verso fornece erro fixo no suporte PostgreSQL 8.2 e em alguns pequenos
aumentos de desempenho.
A.1.1.1. Mudanas
Fixado erro de atalho point-in-polygon em Within().
Fixado PostgreSQL 8.2 NULO na manipulao para ndices.
Atualizados arquivos de especificao RPM.
Adicionado short-circuit para transform() dentro do case no-op.
JDBC: Fixado JTS manipulando para geometrias multi-dimensional (agradecimentos a
Thomas Marti pela sugesto e a colaborao parcial).
Adicionalmente, agora JavaDoc compilado e empacotado. Fixados problemas do
classpath com GCJ. Fixados compatibilidade do pgjdbc 8.2, perdendo suporte para JDK
1.3 e anteriores.
A.1.2. Verso 1.2.0
Data da verso: 08/12/ 2006
Esta verso fornece definies de tipo junto com potencialidades da serializao/
deserializao para geometrias curvadas definidas SQL-MM, assim como aumentos de
desempenho.
A.1.2.1. Mudanas
Adicionado suporte ao tipo de geometria curvada para serializao/deserializao.
Adicionado um curto circuito point-in-polygon para as funes Contains e Within para
melhorar o desempenho para estes casos.
A.1.3. Verso 1.1.6
Data da verso: 02/11/2006
Esta uma verso de fixao de erro, em particular que fixa um erro crtico com interface
GEOS nos sistemas 64bit. Inclui uma atualizao dos parmetros SRS e de uma
melhoria nas reprojees (tome Z na considerao). Melhoria incentivada.
A.1.3.1. Melhorias
Se voc estiver promovendo da verso 1.0.3 ou posteriores siga este procedimento soft
upgrade.
Se voc estiver promovendo de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e querer
realmente um melhoramento vivo leia o upgrade section do captulo notas da verso
1.0.3.
Melhorias de alguma verso anterior 1.0.0RC6 requer um hard upgrade.
A.1.3.2. Correes

Fixada mudana CAPI que quebrou plataforma 64-bit.


carregador/descarregador: fixado testes de regresso e uso de sada.
Fixado erro setSRID() em JDBC, agradecimento Thomas Marti.
A.1.3.3. Outras Mudanas
uso ordenada Z nas reprojees.
spatial_ref_sys.sql alterado para EPSG 6.11.1 para uso de um pacote simples de
variveis de verso para todos.
Inclue a Version.config no carregador/descarregador de mensagens USAGE.
Substitue o hand-made, analizador de verso JDBC frgil com Properties.
A.1.4. Verso 1.1.5
Data da verso: 13/10/2006
Esta uma verso de correes, incluindo um padro de segmento crtico no win32.
Melhorias so incentivadas.
A.1.4.1. Melhorias
Se quiser melhorias da verso 1.0.3 ou posteriores siga o procedimento soft upgrade.
Se quiser melhorias da verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer uma
melhoria leia upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.4.2. Correes
Fixado erro de link MingW que foi causado pgsql2shp para segmento padro em Win32
quando compilado por PostgreSQL 8.2.
fixado nullpointer Exception no mtodo Geometry.equals() em Java.
Adicionado EJB3Spatial.odt para cumprir a exigncia de distribuio GPL preferred form
of modification.
Removido sincronizao obsoleta JDBC do cdigo Jts.
Atualizado pesadamente os antiquados arquivos README para shp2pgsql/pgsql2shp
fundindo-o com as pginas principais.
Fixada etiqueta verso no cdigo jdbc que ainda diz 1.1.3 na verso 1.1.4.
A.1.4.3. Novas Caractersticas
Adicionada opo -S option para geometrias non-multi para shp2pgsql.
A.1.5. Verso 1.1.4
Data da verso: 27/09/2006

Esta uma verso de fixao de erro incluindo algumas melhorias na interface Java.
Melhorias so incentivadas.
A.1.5.1. Melhorias
Se quiser melhorias da verso 1.0.3 ou posteriores siga o procedimento soft upgrade.
Se quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer
uma melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.5.2. Correes
Fixado suporte para PostgreSQL 8.2.
Fixado erro na funo collect() descartando SRID de entrada.
Adicionado SRID que verifica a combinao em MakeBox2d e MakeBox3d.
Fixado regresso de testes para passar com GEOS-3.0.0.
Improved pgsql2shp run concurrency.
Melhorada a concorrncia de execuo pgsql2shp.
A.1.5.3. Mudanas Java
Retrabalhado o suporte JTS para refletir novos upstream atitudes de desenvolvedores
prprios JTS para manipulao do SRID. Simplifica o cdigo e a apaga a construo que
depende de GNU Trove.
Adicionado o suporte EJB2 doado pela "Geodetix s.r.l. Company" http://www.geodetix.it/ .
Adicionado tutorial/exemplos EJB3 doados por Norman Barker <nbarker@ittvis.com>.
Reorganizado um pouco o leiaute do diretrio java.
A.1.6. Verso 1.1.3
Data da verso: 30/062006
Esta uma verso de fixao de erro incluindo tambm algumas funcionalidades novas
(mais notavelmente suporta a grandes transaes) e aumento de portabilidade. Melhorias
so incentivadas.
A.1.6.1. Melhorias
Se quiser melhorias da verso 1.0.3 ou posteriores siga o procedimento soft upgrade.Se
quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer uma
melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.6.2. Correes/exatido
CORREAO em distance(poly,poly) dando resultados errados.
CORREAO em pgsql2shp cdigo de retorno bem sucedido.
CORREAO em shp2pgsql manipulando MultiLine WKT.

CORREAO em affine() falha na atualizao da caixa delimitada.


WKT analisador: construo proibida das multigeometrias com elementos EMPTY
(suportados ainda para GEOMETRYCOLLECTION).
A.1.6.3. Novas Funcionalidades
NOVO suporte a grandes Transaes.
NOVO funo DumpRings().
NOVO funo AsHEXEWKB(geom, XDR|NDR).
A.1.6.4. Mudanas JDBC
Testes de regresso melhorados: MultiPoint e ordenadas cientficas.
Fixado alguns erros menores em cdigo code.
Adicionada as funes acessor apropriado que funciona para todos os campos na
preparao de fazer aqueles campos privados mais tarde.
A.1.6.5. Outras Mudanas
NOVO suporte de teste de regresso para carregador/descarregador.
Adicionado --with-proj-libdir e --with-geos-libdir para configurar interruptores (switches).
Suporte para contruir Tru64 build.
Usar Jade para gerar documentao.
Sem link pgsql2shp para mais libs ento requerida.
Suporte inicial para PostgreSQL 8.2.
A.1.7. Verso 1.1.2
Data da verso: 30/03/2006
Esta uma verso de fixao de erro incluindo algumas funes e novos aumentos de
portabilidade. Melhorias so incentivadas.
A.1.7.1. Melhorias
Se quiser melhorias da verso 1.0.3 ou posteriores siga o procedimento soft upgrade.
Se quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer
uma melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.7.2. Correes
CORREAO em SnapToGrid() computao da sada da caixa delimitada.
CORREAO em EnforceRHR().
jdbc2 SRID manipulando reparos no cdigo JTS.
Fixado suporte para arquitetura 64bit.
A.1.7.3. Novas Funcionalidades

Testes de regresso agora podem ser executados *before* instalao postgis.


Novas funes de transformao de matriz affine().
Nova funo rotate{,X,Y,Z}().
Antigas funes translating e scaling agora usam internamente affine().
Controle de acesso enfileirado estimated_extent() para construo com pgsql >= 8.0.0.
A.1.7.4. Outras Mudanas
script ./configure mais portvel.
Alterado o script ./run_test para ter um comportamento padro mais sensato.
A.1.8. Verso 1.1.1
Data da verso: 23/01/2006
Esta uma verso importante de correes, melhorias altamente recomendada. A
verso precedente conteve um erro em postgis_restore.pl que impede o
procedimento hard upgrade de completar-se e um erro no conector GEOS-2.2+ que
impede os objetos GeometryCollection a serem usados em operaes topolgicas.
A.1.8.1. Melhorias
Se quiser melhorias da verso 1.0.3 ou posteriores siga o procedimento soft upgrade.Se
quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer uma
melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.8.2. Correes
Fixado uma sada prematura em postgis_restore.pl.
Fixao de erro no geometrycollection manipulando conector GEOS-CAPI.
Solaris 2.7 e melhorias de suporte MingW.
Fixao de erro no line_locate_point().
Fixado manipulao de caminho postgresql.
Fixao de erro no line_substring().
Adicionado suporte para conjunto localizado no verificador de regresso.
A.1.8.3. Novas Funcionalidades
Nova interpolao Z e M no line_substring().
Nova interpolao Z e M no line_interpolate_point().
Adicionado NumInteriorRing() alis devido a ambiguidade OpenGIS.
A.1.9. Verso 1.1.0
Data da verso: 21/12/2005
Esta uma verso menor, contendo muitas melhorias e coisas novas. O mais notavel: o
procedimento da construo extremamente simplificada; transform() desempenho

melhorado drasticamente; mais estabilidade na conectividade GEOS (suporte CAPI);


muitas novas funes; suporte da topologia do esboo.
altamente recomendado melhoria para antes de GEOS-2.2.x instalando PostGIS, isto
assegurar futuros melhoramentos GEOS no requerer uma reconstruo da biblioteca
de PostGIS.
A.1.9.1. Crditos
Esta verso inclui o cdigo de Mark Cave Ayland para esconder objetos proj4. Markus
Schaber adicionou muitas melhorias em seu cdigo JDBC2. Alex Bodnaru ajudou
com fonte PostgreSQL relevo da dependncia e fornece especificao de
arquivos Debian. Michael Fuhr testou coisas novas na arquitetura Solaris. David Techer e
Gerald Fenoy ajudaram testar conector GEOS C-API. Hartmut Tschauner forneceu o
cdigo para a funo azimuth(). Devrim GUNDUZ forneceu especificao de
arquivos RPM. Carl Anderson ajudou com a nova rea de construo das funes. Veja a
seo credits para consultar mais nomes.
A.1.9.2. Melhorias
Se quiser melhorias de uma verso 1.0.3 ou anterior NO precisa descarregar/recarregar.
Simplesmente o fonte trabalhar um novo roteiro lwpostgis_upgrade.sql em todos seus
bancos de dados existentes. Veja o captulo soft upgrade para mais informao.
Se quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer
uma melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.9.3. Novas Funes
mtodos companheiros scale() e transscale() para translate().
line_substring().
line_locate_point().
M(point).
LineMerge(geometry).
shift_longitude(geometry).
azimuth(geometry).
locate_along_measure(geometry, float8).
locate_between_measures(geometry, float8, float8).
SnapToGrid by point offset (up to 4d support).
BuildArea(any_geometry).
OGC BdPolyFromText(linestring_wkt, srid).
OGC BdMPolyFromText(linestring_wkt, srid).
RemovePoint(linestring, offset).
ReplacePoint(linestring, offset, point).
A.1.9.4. Correes
Escape da memria fixado no polygonize().
Corrigidas funes cast lwgeom_as_anytype.

Fixados elementos USE_GEOS, USE_PROJ e USE_STATS da sada postgis_version()


para refletir sempre em estado de biblioteca.
A.1.9.5. Mudanas de Semntica de Funo
SnapToGrid no rejeita dimenses mais elevadas.
Funo changed Z() retorna NULO se a dimenso pedida no est disponvel.
A.1.9.6. Melhorias de Desempenho
Muito mais rapida a funo transform(), objetos escondidos proj4.
Chamada automtica removida para fix_geometry_columns () em AddGeometryColumns
() e update_geometry_stats ().
A.1.9.7. JDBC2 works
Melhorias no Makefile.
Melhorias no suporte JTS.
Sistema de teste de regresso melhorado.
Mtodo de verificao de consistncia bsica para colees da geometria.
Suporte para (Hex)(E)wkb.
Auto investigao DriverWrapper para interruptores HexWKB / EWKT.
problemas para compilar fixo em ValueSetter para antigas versos JDK.
Construtores EWKT fixos para aceitar representao SRID=4711;
Adicionada preliminar suporte read-only para geometrias java2d.
A.1.9.8. Outras Novas Funes
Configurao autoconf-based completa, com relevo da dependncia da fonte
PostgreSQL.
Suporte GEOS C-API (2.2.0 e mais elevada).
Suporte inicial para modelagem de topologia.
Especificao de arquivos Debian e RPM.
Novo script lwpostgis_upgrade.sql.
A.1.9.9. Outras Mudanas
Melhorias no suporte JTS.
Stricter mapping between DBF and SQL integer and string attributes
Mapeamento mais estrito entre o inteiro DBF e SQL e atributos de string.
Wider and cleaner regression test suite
Suite de teste de regresso mais largo e mais limpo.
Antigo cdigo jdbc removido da Verso.
Obsoleto uso direto de postgis_proc_upgrade.pl.
Verso unificada de scripts com verso Verso.
A.1.10. Verso 1.0.6

Data da verso: 2005/12/06


Contem algumas correes e melhorias.
A.1.10.1. Melhorias
Se quiser melhorias de uma verso 1.0.3 ou anterior NO precisa descarregar/recarregar.
Se quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer
uma melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.10.2. Correes
Fixada chamada palloc(0) na coleo deserializadora (s d problema com --enablecassert).
Fixado cache bbox de manipulao de erros.
Fixada falha de segmento geom_accum(NULL, NULL).
Fixada falha de segmento em addPoint().
Fixado short-allocation em lwcollection_clone().
Fixado erro em segmentize().
Fixada computao bbox de sada SnapToGrid.
A.1.10.3. Improvements
Suporte inicial para postgresql 8.2.
Adicionado o faltante da m combinao SRID que verifica ops GEOS.
A.1.11. Verso 1.0.5
Data da verso: 25/11/2005
Contem memory-alignment fixa na biblioteca, uma falta de segmento fixo no seu
carregador manipulando atributos de UTF8 e algumas melhorias e limpezas.
Nota
Retorna cdigo shp2pgsql alterado de Versos anteriores para conformar-se aos padres
unix (retorna 0 no sucesso).
A.1.11.1. Melhorias

Se quiser melhorias de uma verso 1.0.3 ou anterior NO precisa descarregar/


recarregar.Se quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e
realmente quer uma melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.11.2. Mudanas de Bibliotecas

Fixada problemas de alinhamento de memria.


Fixada computao de frao de valores nulos no analisador.
Fixado um pequeno erro na funo getPoint4d_p() low-level.
Velocidade alta das funes do serializador.
Fixado um erro em force_3dm(), force_3dz() e force_4d().
A.1.11.3. Mudanas de Carregador
Fixado return code de shp2pgsql.
Fixado ttulo back-compatibility no carregador (carga de shapefiles nulos).
Fixado manipulao de pontos arrastando em atributos numricos dbf.
Falha no segmento fixo em shp2pgsql (utf8 encoding).
A.1.11.4. Outras Mudana
Esquema postgis_proc_upgrade.pl ciente, suporte para pgsql 7.2+.
Novo captulo no manual "Relatando Erros".
A.1.12. Verso 1.0.4
Data da verso: 09/09/2005
Contem correes importantes e algumas melhorias. Em particular, fixa um escape da
memria que impede a construo bem sucedida de ndices GiST para tabelas espacial
grandes.
A.1.12.1. Melhorias
Se quiser melhorias de uma verso 1.0.3 ou anterior NO precisa descarregar/recarregar.
Se quiser melhorias de uma verso entre 1.0.0RC6 e 1.0.2 (inclusive) e realmente quer
uma melhoria leia o upgrade section do captulo notas da verso 1.0.3.
Melhorias de alguma verso anterior para 1.0.0RC6 requer um hard upgrade.
A.1.12.2. Correes
Escape de memria conectado na indexao GiST.
Falta de segmento fixo no transform() com manipulaao de erros proj4.
Fixado alguns textos proj4 no spatial_ref_sys (perdido +proj).
Carregador: fixada uso da funo string, retrabalhado verificao de objetos NULO, fixada
falta de segmento na entrada MULTILINESTRING.
Corrigidos em manipulao de dimenso do MakeLine.
Corrigidos em translate() corrupo de sada da caixa delimitada.
A.1.12.3. Melhorias
Melhorias na documentao.
Estimador de seletividade mais robusto.
Menor velocidade alta em distance().

Menor limpeza.
Limpeza em ndices GiST.
Aceitao de sintaxe mais solto no analisador box3d.
A.1.13. Verso 1.0.3
Data da verso: 2005/08/08
Contem algumas correes - incluindo um severo afeio exata de geometries
armazenados - e algumas melhorias.
A.1.13.1. Melhorias
Devido a um erro em uma rotina computacional de caixa delimitada, a melhoria do
procedimento requer ateno especial, porque as caixas delimitadas armazenadas no
banco de dados poderiam estar incorretas.
Um procedimento (descarrega/recarrega) hard upgrade forar a recomputao de todas
as caixas delimitadas (no includas nos descarregadores). Isto requerido se melhorias
em Versos anteriores 1.0.0RC6.
Se voc tiver melhorias das verses 1.0.0RC6 ou posteriores, esta Verso inclui um script
perl (utils/rebuild_bbox_caches.pl) para forar a recomputao das caixas delimitadas de
suas geometrias e para invocar todas as operaes requeridas propagar mudanas
eventuais nelas (atualizao das estatisticas da geometria, reindexao). Invocar o script
depois de um make install (executar sem argumentos para ajuda da sintaxe).
Opcionalmente executar utils/postgis_proc_upgrade.pl para atualizao de procedimentos
do postgis e assinaturas das funes (veja Soft upgrade).
A.1.13.2. Correes
Correo severa em lwgeom's 2d computao de caixa delimitada.
Correo no WKT (-w) POINT manipulando no carregador.
Correo no descarregador em mquinas 64bit.
Correo na manipulao das selees user-defined.
Correo no script create_undef.pl.
A.1.13.3. Melhorias
Melhorias de pequenos desempenhos na funo de entrada canonica.
Menor limpeza no carregador.
Suporte para nome de campo multibyte no carregador.
Melhorias no script no postgis_restore.pl.
Novo script util rebuild_bbox_caches.pl.
A.1.14. Verso 1.0.2
Data da verso: 04/07/2005
Contem algumas correes e melhorias.

A.1.14.1. Melhorias
Se quiser melhorias de uma verso 1.0.0RC6 ou superior NO precisa descarregar/
recarregar.
Melhorias de verses anteriores requer um descarrega/recarrega. Veja o captulo
upgrading para mais informaes.
A.1.14.2. Correes
Falha tolerante do btree ops.
Memria de escape plugada em pg_error.
ndice fixo Rtree.
Scripts mais limpos na construo (mistura evitada de CFLAGS e CXXFLAGS).
A.1.14.3. Melhorias
Potencialidade na nova criao de ndice no carregador (-I switch).
Suporte inicial para postgresql 8.1dev.
A.1.15. Verso 1.0.1
Data da verso: 24/05/2005
Contem algumas correes e melhorias.
A.1.15.1. Melhorias
Se quiser melhorias de uma verso 1.0.0RC6 ou superior NO precisa descarregar/
recarregar.
Melhorias de verses anteriores requer um descarrega/recarrega. Veja o captulo
upgrading para mais informaes.
A.1.15.2. Mudanas da Bibliotecas
CORREO na computao 3d de length_spheroid().
CORREO no estimador de seletividade agrupado.
A.1.15.3. Outras Mudanas/Adies
CORREO na funo escape shp2pgsql.
Melhor suporte para concorrente postgis em esquemas mltiplos.
Documentaes fixas.
jdbc2: compilar com "-target 1.2 -source 1.2" por padro.
NOVO -k comutar para pgsql2shp.
NOVO suporte para opes createdb em postgis_restore.pl.
CORREO em nomes de atributos pgsql2shp cumprimento de unicidade.

CORREO em definies de projees Paris.


limpezas postgis_restore.pl.
A.1.16. Verso 1.0.0
Data da verso: 19/04/2005
Verso final 1.0.0. Contem algumas correes, algumas melhorias no carregador (o mais
notavel suporte para verses postgis mais antigas) e mais documentaes.
A.1.16.1. Melhorias
Se quiser melhorias de uma verso 1.0.0RC6 NO precisa descarregar/recarregar.
Melhorias de algumas verses anteriores requer um descarrega/recarrega. Veja o captulo
upgrading para mais informaes.
A.1.16.2. Mudanas de Bibliotecas
CORREO no transform() liberando o endereo de memria aleatrio.
CORREO no force_3dm() alocando menos memria ento requerida.
CORREO no estimator de seletividade agrupado (defaults, leaks, tuplecount, sd).
A.1.16.3. Outras Mudanas/Adies
CORREO no escape de valores shp2pgsql comeando com "tab" ou "single-quote".
NOVO pginas manuais para carregador/descarregador.
NOVO suporte shp2pgsql para antigas verses postgis (HWGEOM).
NOVO - p (prepare) flag para shp2pgsql.
NOVO captulo manual sobre cumprimento de conformidade OGC.
NOVO suporte a autoconfigurao (autoconf) para biblioteca JTS.
CORREO nos verificadores do estimador (suporte para LWGEOM e esquema
analisador).
A.1.17. Verso 1.0.0RC6
Data da verso: 30/03/2005
Sexta Verso candidata para 1.0.0. Contem algumas correes e limpezas.
A.1.17.1. Melhorias
Voc precisa descarregar/recarregar para melhoria das verses precedentes. Veja o
captulo upgrading para mais informaes.
A.1.17.2. Mudanas de Bibliotecas
CORREO em multi().
pronto return [when noop] do multi().
A.1.17.3. Mudanas de Scripts
funes dropped {x,y}{min,max}(box2d)

A.1.17.4. Outras Mudanas


CORREO no script postgis_restore.pl.
CORREO no seu descarregador de suporte 64bit.
A.1.18. Verso 1.0.0RC5
Data da verso: 25/03/2005
Quinta Verso candidata para 1.0.0. Contem algumas correes e melhorias.
A.1.18.1. Melhorias
Se quiser melhorias de uma verso 1.0.0RC4 NO precisa descarregar/recarregar.
Melhorias de algumas verses anteriores requer um descarrega/recarrega. Veja o captulo
upgrading para mais informaes.
A.1.18.2. Mudanas de Bibliotecas
CORREO (segmento padro) em computao box3d (sim, outros!).
CORREO (segmento padro) em estimated_extent().

A.1.18.3. Outras Mudanas


Construes pequenas de scripts e refinamentos de utilidades.
Adicionais desempenho de tipos documentados.
A.1.19. Verso 1.0.0RC4
Data da verso: 18/03/2005
Quarta Verso candidata para 1.0.0. Contem correes e poucas melhorias.
A.1.19.1. Melhorias
Voc precisa descarregar/recarregar para melhoria das verses precedentes. Veja o
captulo upgrading para mais informaes.
A.1.19.2. Mudanas de Bibliotecas
CORREO (segmento padro) em geom_accum().
CORREO no suporte a arquitetura 64bit.
CORREO no funo da computao box3d com colees.
NOVO suporte a subselects em estimador de seletividade.
Retorno rpido da force_collection.
Verificao de consistncia fixa em SnapToGrid().
Sada retroagida Box2d para 15 dgitos significativos.
Box2d output changed back to 15 significant digits.

A.1.19.3. Mudanas de Scripts


NOVO funo distance_sphere().
Alterada implementao get_proj4_from_srid para usar PL/PGSQL em vez do SQL.

A.1.19.4. Outras Mudanas


CORREO na manipulao do carregador e descarregador das formas MultiLine.
CORREO no carregador, saltando tudo com exceo da primeira regra de polgonos.
jdbc2: limpeza de cdigos, melhorias no Makefile.
Variveis FLEX e YACC atribui *after* pgsql Makefile.global que includo e s se a
verso pgsql *stripped* determina string vazia.J adicionado analisador gerado na verso.
Refinamentos de scripts construdos.
Manipulao de verso melhorada, Version.config central.
melhorias em postgis_restore.pl.
A.1.20. Verso 1.0.0RC3
Data da verso: 24/02/2005
Terceira Verso candidata para 1.0.0. Contem muitas correes e melhorias.
A.1.20.1. Melhorias
Voc precisa descarregar/recarregar para melhoria das verses precedentes. Veja o
captulo upgrading para mais informaes.
A.1.20.2. Mudanas de Bibliotecas
CORREO no transform(): faltando SRID, manipulao melhor de erro.
CORREO na manipulao do alinhamento da memria.
CORREO no force_collection() causando falhas do conector do mapserver em tipos de
geometria simples.
CORREO no GeometryFromText() faltando adicionar uma memria bbox.
Preciso reduzida da sada box2d.
Macros DEBUG pr-fixados com PGIS_ para evitar o choque com um pgsql.
Ligado um escape no conversor GEOS2POSTGIS.
Uso de memria reduzido mais cedo liberando um "query-context" de um palloc.
A.1.20.3. Mudanas de Scripts
CORREO em 72 ndices sujeitantes.
CORREO no probe_geometry_columns() para trabalhar com PG72 e para suportar
colunas da geometria mltiplas em uma tabela simples.
NOVO cast bool::text
Feitas algumas funes IMMUTABLE de STABLE, para melhorar o desempenho.
A.1.20.4. Mudanas JDBC

jdbc2: Caminhos pequenos, testes box2d/3d, documentos e licena revisados.


jdbc2: Correes e o caso de teste para o tipo autoregistro pgjdbc 8.0.
jdbc2: Uso removido de jdk1.4 s caractersticas para permitir construo com verses
mais antigas JDK.
jdbc2: Adicionado suporte para construo com pg72jdbc2.jar.
jdbc2: Atualizao e limpeza do makefile.
jdbc2: Adicionado suporte BETA para classes geometricas jts.
jdbc2: Pulo de testes known-to-fail contra servidores mais antigos PostGIS.
jdbc2: Fixado manipulao de medidas geomtricas em EWKT.
A.1.20.5. Outras Mudanas
Novo desempenho vira o captulo no manual.
Atualizaes da documentao: exigncia pgsql72, lwpostgis.sql.
Poucas mudanas no autoconf.
A extrao de BUILDDATE feito mais portvel.
Fixado spatial_ref_sys.sql para evitar limpeza no banco de dados inteiro.
spatial_ref_sys: alteradas entradas Paris para combinar alguns distribudos com o 0.x.
A.1.21. Verso 1.0.0RC2
Data da verso: 26/01/2005
Segunda Verso candidata para 1.0.0 contendo correes e algumas melhorias.
A.1.21.1. Melhorias
Voc precisa descarregar/recarregar para melhoria das verses precedentes. Veja o
captulo upgrading para mais informaes.
A.1.21.2. Mudanas em bibliotecas
CORREO na computao box3d pointarray.
CORREO na definio distance_spheroid.
CORREO no transform() faltando atualizar memria bbox.
NOVO jdbc driver (jdbc2).
GEOMETRYCOLLECTION(EMPTY) suporte de sintaxe para a compatibilidade inversa.
Sadas binrias mais rpidas.
Construtores mais estritos OGC WKB/WKT.
A.1.21.3. Mudanas em Scripts
Usos mais corretos STABLE, IMMUTABLE, STRICT em lwpostgis.sql.
construtores mais estritos OGC WKB/WKT.
A.1.21.4. Outras Mudanas
Carregador mais rpido e mais robusto (ambos i18n e no).
script inicial do autoconf.

A.1.22. Verso 1.0.0RC1


Data da verso: 13/01/2005
Este o primeiro candidato da principal verso postgis, com armazenamento interno dos
tipos postgis redesenhado para ser menor e mais rpido em selees posicionadas.
A.1.22.1. Melhorias
Voc precisa descarregar/recarregar para melhoria das verses precedentes. Veja o
captulo upgrading para mais informaes.
A.1.22.2. Mudanas
Entrada cannica mais rpida.
Sada cannica de pouca perda.
EWKB binrio cannico IO com PG>73.
Suporte para at coordenadas 4d, fornecendo a sem perda da converso shapefile>postgis->shapefile.
Novas funes: UpdateGeometrySRID(), AsGML(), SnapToGrid(), ForceRHR(),
estimated_extent(), accum().
Posicionamento vertical de operadores indexados.
JOIN funo de seletividade.
Mais geometrias construtores / editores.
API de extenso Postgis.
Suporte UTF8 no carregador.

Você também pode gostar