Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Captulo 2. Instalao
2.1. Exigncias
PostGIS tem as seguintes exigncias para construo e uso:
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.
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.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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:
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
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.
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.
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?
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;
POINT(0 0)
MULTIPOINT(0 0,1 2)
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)))
POINT(0 0 0) -- XYZ
POINTM(0 0 0) -- XYM
POINT(0 0 0 0) -- XYZM
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)))
CIRCULARSTRING(0 0, 1 1, 1 0)
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 (
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:
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
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.
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
-----------+-------------------+-------------------
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 "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.*
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.
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
...
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
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.
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.
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).
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.
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)
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
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)
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.
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
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
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
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.
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
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.
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.