Manual PostGIS

Sumário 1. Introdução 1.1. Créditos 1.2. Mais Informações 2. Instalação 2.1. Exigências 2.2. PostGIS 2.2.1. Criando PostGIS habilitando espacialmente um banco de dados de modelo de construção 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. Padrões de OpenGIS WKB e WKT 4.1.2. Padrões de PostGIS EWKB, EWKT e Forma Canônica 4.1.3. SQL-MM Parte 3 4.2. Usando Padrões de OpenGIS 4.2.1. Tabela de Sistemas de Referências Espacial (SPATIAL_REF_SYS) 4.2.2. Tabela de Colunas Geométricas (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 básico 4.7.2. Perguntas Mais Frequentes 4.7.3. Uso Avançado 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 Binários 5. Tipos de Performance 5.1. Tabelas Pequenas de Geometrias Grandes 5.1.1. Descrição de problemas 5.1.2. Envolvimento com o trabalho 5.2. CLUSTERing em índices da geometria 5.3. Evitando a conversão da dimensão

6. Referência PostGIS 6.1. Funções de OpenGIS 6.1.1. Funções de Gerenciamento 6.1.2. Funções de Relacionamento da Geometria 6.1.3. Funções de Processamento da Geometria 6.1.4. Assessores Geométricos 6.1.5. Construtores Geométricos 6.2. Extensões PostGIS 6.2.1. Funções de Gerenciamento 6.2.2. Operadores 6.2.3. Funções de Medida 6.2.4. Saída Geométricas 6.2.5. Construtores Geométricos 6.2.6. Editores Geométricos 6.2.7. Referência Linear 6.2.8. Variado 6.2.9. Suporte a grandes transações (Long Transactions) 6.3. Funções SQL-MM 6.4. Funções ArcSDE 7. Relatando Erros A. Apendice A.1. Notas de Versão A.1.1. Versão 1.2.1 A.1.2. Versão 1.2.0 A.1.3. Versão 1.1.6 A.1.4. Versão 1.1.5 A.1.5. Versão 1.1.4 A.1.6. Versão 1.1.3 A.1.7. Versão 1.1.2 A.1.8. Versão 1.1.1 A.1.9. Versão 1.1.0 A.1.10. Versão 1.0.6 A.1.11. Versão 1.0.5 A.1.12. Versão 1.0.4 A.1.13. Versão 1.0.3 A.1.14. Versão 1.0.2 A.1.15. Versão 1.0.1 A.1.16. Versão 1.0.0 A.1.17. Versão 1.0.0RC6 A.1.18. Versão 1.0.0RC5 A.1.19. Versão 1.0.0RC4 A.1.20. Versão 1.0.0RC3 A.1.21. Versão 1.0.0RC2 A.1.22. Versão 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 integração 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, construção de topologia avançada (coberturas, superfícies, redes), ferramentas de interface do usuário de mesa visando e editando dados de GIS, e ferramentas de acesso baseadas na web. 1.1. Créditos

Sandro Santilli <strk@refractions.net> Coordena todos os erros (bugs) fixando e mantendo o esforço, a integração de novas funcionalidades GEOS, e novas funções. Chris Hodgson <chodgson@refractions.net> Mantem novos funções e suporte ao índice 7.2. Paul Ramsey <pramsey@refractions.net> Conserva a trilha da documentação e empacotamento. Jeff Lounsbury <jeffloun@refractions.net> Mantém o desenvolvimento original do Shape no programa de carga/descarga. Dave Blasby <dblasby@gmail.com> Dave, o principal desenvolvedor de PostGIS, mantém o lado de servidor de objetos e suporte a índice, o lado de servidor de funções analíticas. Outros contribuidores Em ordem alfabética: 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 operações geométricas GEOS e o trabalho algorítmico de Martin Davis <mbdavis@vividsolutions.com> de Vivid Solutions em fazê-la todas trabalharem. A biblioteca de projeção cartográfica Proj4 e o trabalho de Gerald Evenden and Frank Warmerdam em criá-la e mantê-la. 1.2. Mais Informações • O software, a documentação e as novidades mais recentes do PostGIS estão disponíveis no site, http://postgis.refractions.net.

gis. Instalação 2. Proj4 está disponível para baixa em http://www. Difference()) com PostGIS. A biblioteca Proj4 é usada para fornecer suporte a reprojeções coordenadas dentro de PostGIS.refractions. GNU Make (gmake ou make).edu/. Versão 7.umn. utilizar make -v.org/proj. • • • • • Capítulo 2.org/.remotesensing. Exigências PostGIS tem as seguintes exigências para construção e uso: • Uma instalação completa do PostgreSQL (incluindo servidor de headers). Mais informações sobre o servidor da banco de dados PostgreSQL está disponível no site principal de PostgreSQL.org. PostgreSQL está disponível em http://www. (Opcional) Biblioteca de reprojeção Proj4. GEOS está disponível para baixa em http://geos.opengis.2 ou posteriores. Mais informações sobre servidor de mapas na internet Mapserver está disponível em http://mapserver.remotesensing.sai.postgresql.su/~megera/postgres/gist.net. Intersects()) e operações (Buffer(). • • • • • . O compilador de GNU C (gcc).http://www. Para muitos sistemas.refractions. GeomUnion().1. http://www. GNU make é a versão default que faz falta. Contains(). Alguns outros compiladores de C ANSI podem ser usados para compilar PostGIS.msu. (Opcional) Biblioteca de geometria GEOS. As "características simples para especificação do SQL " está disponível no Consórcio de OpenGIS no site: http://www.org/. Para saber a versão.postgresql.org/proj. Mais informações sobre índice GiST está disponível no site de desenvolvimento PostgreSQL GiST.net/. A biblioteca GEOS é usada para fornecer testes em geometria (Touches(). Outras versões de make não podem processar o PostGIS Makefile corretamente. Mais informações sobre a biblioteca de reprojeção Proj4 está disponível em http:// www. mas foram achados poucos problemas ao compilar com gcc.• Mais informações sobre a biblioteca de operações geométricas GEOS está disponível em http://geos.

Nota Se você planeja usar funcionalidade de GEOS precisará unir PostgreSQL à biblioteca de C++ padrão: 2. . Para recuperar o arquivo fonte PostGIS faça nova baixa em http:// postgis. terá que compilar e instalar o pacote PostgreSQL./configure não encontrá-la. • • Bibliotecas são instaladas [pkglibdir]/lib/contrib.2.sql são instalados em prefix]/share/contrib. PostGIS 1.1" e rodar: # . Assim. Isso fará com que corra o risco de compilar o PostgreSQL.org/. Arquivos de suporte importantes como lwpostgis.2. 11. Se você perceber problemas estranhos (inesperadamente fechar uma retaguarda ou algo semelhante).2. 4. Se . 10. tente usar --with-geos=PATH para especificar o path completo para o programa geos-config path completo. As versões de PostgreSQL anteriores não são suportadas. Descomprima o arquivo no diretório "contrib" do fonte PostgreSQL. Antes de você compilar os módulos do servidor de PostGIS. 9.refractions./configure • • Se quiser dar suporte a reprojeção de coordenada.tar. # make # make install Todos os arquivos são instalados usando informações fornecidas por pg_config. Se . os fontes no diretório. 13./configure [YOUR OPTIONS HERE] Este é um trabalho voltado para exceções em C++ interando com ferramentas de desenvolvimento mais antigas.1. LDFLAGS=-lstdc++ . 5.gz. 1.2.postgresql. 8.1.2. 7. deverá ter a biblioteca de Proj4 instalada. tente usar --with-proj=PATH para ajustar para um diretório específico da instalação Proj4./configure não encontrá-la. O código fonte PostgreSQL está disponível em http://www.2. PostGIS O módulo de PostGIS é uma extensão ao PostgreSQL servidor de retaguarda. # cd [postgresql source tree]/contrib # gzip -d -c postgis-1.1 requer um acesso completo do servidor de headers PostgreSQL organizado em diretório para compilar.0 ou posteriores. 3.net/postgis-1. faça esta tentativa. 6. organizando assim.1 pode ser construído com versões de PostgreSQL 7. 14. Rodar o compilador e instalar comandos.gz | tar xvf Entrar no diretório "postgis-1.2.tar. terá que ter instalada a biblioteca de GEOS. Se quiser usar funcionalidades GEOS. 12.2. PostGIS 1.

1.• Carregador e binários livres são instalados em [bindir]/.sql 2.sql. então é possível para usuários e/ou as aplicações. PostGIS requer para o PL/pgSQL extensão da linguagem procedural. Criando PostGIS habilitando espacialmente um modelo de construção de banco de dados Algumas distribuições empacotadas de PostGIS (em particular os instaladores Win32 para o PostGIS >= 1. 19. Antes de carregar o arquivo lwpostgis.1.sql e conteúdos de tabela SPATIAL_REF_SYS. o usuário do banco de dados terá um grande privilégio para criar novos bancos de dados.sql. 22. Carregar o objeto PostGIS e definir funções no banco de dados. terá que habilitar primeiro o PL/pgSQL. Se o banco de dados template_postgis existir em sua instalação de PostgreSQL. poderá tambem carregar o arquivo de definições spatial_ref_sys. # createlang plpgsql [yourdatabase] 18.5) carregam as funções de PostGIS dentro de um banco de dados chamado template_postgis. 15. Extensões de servidor de PostGIS agora estão carregadas e prontas para uso. Infelizmente nem todas as definições podem ser substituídas facilmente em um banco de dados vivo.2. caso queira executá-lo manualmente. Do shell: # createdb -T template_postgis my_spatial_db Do SQL: postgres=# CREATE DATABASE my_spatial_db TEMPLATE=template_postgis 2. . Atualização Atualizando bancos de dados espacial existente pode ser complicado como requer a recolocação ou a introdução de novas definições de objeto de PostGIS. 17. Note que em ambos os casos. # psql -d [yourdatabase] -f lwpostgis.sql 20. usando um único comando.2. # psql -d [yourdatabase] -f spatial_ref_sys. Para um completo uso de coordenada de identificadores de definição de sistemas EPSG.2. criarem bancos de dados espacialmente habilitados. 16. PostGIS fornece uma proceduce SOFT UPGRADE para liberações menores ou de pequenas correções (bugfix) e uma procedure HARD UPGRADE para liberações maiores. carregando definições de arquivo lwpostgis. assim às vezes sua melhor aposta são um processo de descarregar/carregar (dump/reload). 21. O Guia de Programador PostgreSQL tem os detalhes. Deverá usar o comando createlang.

2.dump Restaurar a descarga atualizando contextualmente postgis em um banco de dados novo. The procedure is as follow: PostGIS fornece um script utilitário para restaurar uma descarga produzida com o comando pg_dump -Fc. Soft upgrade Soft upgrade consiste do fonte de script lwpostgis_upgrade. O procedimento é como segue: Criar um "custom-format" para descarregar do banco de dados se quiser atualizar (chamamos de "olddb").sql 2.1. Note Se você não encontrar o arquivo lwpostgis_upgrade. Assim. PostGIS provides an utility script to restore a dump produced with the pg_dump -Fc command.sql.2. Precisará de um HARD UPGRADE quando o armazenamento interno dos objetos de postgis alterar ou quando o SOFT UPGRADE não for possível. O apêndice Notas de Versão reportará para cada versão se você necessitar descarregar/carregar (HARD UPGRADE) para atualizar. com UNICODE como o caracter encoding: . assim não hesite tentar primeiro um soft upgrade. O novo banco de dados não pode existir.2. Se um melhoramento macio não for possível o certificado abortar e você estará advertido sobre o MELHORAMENTO DURO que está sendo requerido.2. é sempre válido fazer uma cópia dos seus dados. Se usar o flag -Fc para pg_dump. estará usando uma versão antereior a 1. Isto é feito com o seguinte comando: $ utils/postgis_proc_upgrade. assim que não hesitate tentar primeiramente um melhoramento macio. $ pg_dump -Fc olddb > olddb. é experimental redirecionar sua saída para um arquivo que o ajudará em caso de problemas. 2.sql > lwpostgis_upgrade.sql -d your_spatial_database Se um soft upgrade não for possível. Hard upgrade Por HARD UPGRADE pretendemos descarregar/carregar (dump/reload) do banco de dados habilitando o postgis completo.pl lwpostgis. o script abortará e será advertido sobre o HARD UPGRADE que esá sendo requerido.2.sql em seu banco de dados espacial: $ psql -f lwpostgis_upgrade. Chamamos de “newdb”.1 e gerará esse arquivo por si mesmo. It is experimental so redirecting its output to a file will help in case of problems.Antes de tentar atualizar o postgis. estará apto a restaurar o descarregador com um HARD UPGRADE. postgis_restore aceita parâmetros createdb depois da descarga de um nome de arquivo (file name) e isso pode por instância ser usado se estiver usando o caracter enconding non-default para seu banco de dados.

Mensagens de erros estranhas e inesperadas resultarão se você usar uma versão mais velha. Se fizer adições.0 poderá apagar o attrelid. 3. Substituí-la com a nova é feita desta forma: $ psql newdb newdb=> delete from spatial_ref_sys. você poderá criar uma variável de desenvolvimento PGSQL_SRC para o caminho do diretório fonte PostgreSQL Isto permitirá você compilar PostGIS. Para conferir a versão de PostgreSQL que está executando. Verifique se você instalou PostgreSQL 7.$ sh utils/postgis_restore. PostGIS só trabalhará com versões PostgreSQL 7. usando psql e execute o comando: SELECT version().dump -E=UNICODE > restore. assim voce deverá estar preparado para copiar a biblioteca de PostGIS e arquivos executáveis para os seus locais apropriados você.0 para >= 8. 1. e então você estará compilando mesma versão de fonte de PostgreSQL contra a versão de PostgreSQL que está executando. DROP newdb=> \i spatial_ref_sys.log Certificar-se de que todo objeto de descarga restaurado realmente tenha que ser restaurado dda descarga e não entrar em conflito com esses definidos em lwpostgis.sql 2.3.sql newdb olddb. o varattnum e as colunas do stats na tabela dos geometry_columns. caso contrário. supomos que conheça como recuperá-las antes de atualizar a tabela. Problemas Comuns Existem várias coisas para conferir quando sua instalação ou atualização não acontece como você espera. mas o comando make install pode falhar.2 ou mais novas. se isto não for possível por alguma razão. conecte-se ao banco de dados. 4.2 ou mais novo. Confusões podem ocorrer quando sua distribuição (Linux) já instalou PostgreSQL.2. que não é mais necessário. para assegurar seus costumes adicionais são mantidos. Porém. voce pode verificar a existência de pacotes pré-instaladores usando o comando rpm como segue: rpm -qa | grep postgresql 2. mas a distribuição pôde conter modificação como voce recupera suas entradas.pl lwpostgis. . Se rodar uma distribuição baseada RPM. DROPPING THEM WHEN REALLY NEEDED WILL DO HURT ! $ psql newdb -c "ALTER TABLE geometry_columns DROP attrelid" $ psql newdb -c "ALTER TABLE geometry_columns DROP varattnum" $ psql newdb -c "ALTER TABLE geometry_columns DROP stats" A tabela spatial_ref_sys são recuperadas da descarga. voce pode ter instalado PostgreSQL antes e se esquecido disto. Será mais fácil se você descomprimir os arquivos de PostGIS no diretório "contrib" do fonte PostgreSQL em árvore.log | less Se atualizar de PostgreSQL < 8. Mantê-los não terá problemas. apagar a tabela e a fonte de uma nova.sql $ grep ^KEEPING restore.

polygon. 2.2. multipoint.jar onde quer que mantenha suas bibliotecas de java. Isto inclui: 1.Também verifique se fez qualquer alteração necessária do Makefile.config. Copiar o arquivo postgis.XYM. e atribuir 1 a variável USE_GEOS e para sua instalação GEOS_DIR dentro de Makefile. O descarregador é chamado pgsql2shp e converte tabelas PostGIS em arquivos ESRI Shape. Carregador/Descarregador Os dados para o carregador e descarregador são construídos e instalados automaticamente. JDBC As extensões de JDBC provêem de objetos de Java correspondentes aos tipos de PostGIS internos. 1.XYZM). 3. como parte da construção de PostGIS. multipolygon.4. 2. Para construí-los e os instalálos manualmente.1.config. Estes são especificados Open GIS Well Known Text (com extensões XYZ. conforme abaixo descritos: # cd postgis-1. que verificam o banco de dados de PostGIS e extraem ou fazem cálculos em dados de GIS em PostGIS. Editar Makefile para prover os caminhos corretos de seu compilador de java (JAVAC) e interprete (JAVA). Estes objetos podem ser usados para gravar clientes Java. Que tipo de objetos geométricos eu posso armazenar? Você pode armazenar point. 2. e coleções geométricas. deverá instalar a biblioteca de GEOS em seu sistema. execute os comandos.1/loader # make # make install O carregador é chamado shp2pgsql e converte arquivos ESRI Shape em SQL apropriado por carregar no PostGIS/PostgreSQL.config. multiline. Perguntas Mais Frequentes 3. Se quiser pode fazer reprojeções coordenadas. Entrar no sub-diretório de distribuição de PostGIS jdbc. deverá instalar a biblioteca de Proj4 em seu sistema. Executar o comando make. Capítulo 3. 2. atribuir 1 a variável USE_PROJ e para seu prefixo de instalação PROJ_DIR dentro de Makefile. . Se você quer estar hábil para usar funções de GEOS. linestring.3.

7 8)'. GEOM) VALUES (1. Para ver os dados de GIS na tabela: SELECT id. .4 5.'geom'. No geral.3. name.'LINESTRING'. veja referência de objeto. 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. Isto pode fazer as seleções muito mais rápida. Para mais informação sobre outros objetos GIS. você pode inserir uma geometria na tabela. Se a adição de coluna de geometria falhar. O próprio objeto GIS é formatado usando o formato OpenGIS Consortium "well-known text" INSERT INTO gtest (ID. AsText(geom) AS geom FROM gtest. NAME varchar(20) ).2).O uso do operador && é útil porque se um índice espacial está disponível à velocidade acima do teste. Conecte seu banco de dados com psql e execute o comando SQL seguinte: CREATE TABLE gtest ( ID int4. -1)). como uma combinação SQL de retornos de valores. e você faz cálculos enormes em um grande número geometries. usando inserção de declaração do SQL .6 5. GeomFromText('LINESTRING(2 3. o operador && fará uso disto. NAME. SELECT AddGeometryColumn(''. funções e teste verdadeiro ou falso.3. O valor de retorno deverá ser : id | name | geom ----+----------------+----------------------------1 | First Geometry | LINESTRING(2 3. Note que o salto de caixas usou a seleção que deve ser declarada explicitamente como um box3d que usa o ":: box3d" que lança a operação. 'First Geometry'.. você provavelmente não carregou as funções e objetos de PostGIS dentro do banco de dados.-1.4 5.7 8) (1 row) 3. Para fazer uma seleção espacial. Como fazer uma seleção espacial? É o mesmo caminho que constrói outras seleções de banco de dados.6 5.2. 'gtest'. Veja as instruções de instalação. existem dois caminhos que são importantes de se manter em mente ao construir sua pergunta: pode fazer um índice espacial. Então. se quiser usar operadores de interseção (&&) que testa se salto de caixa é de interseção característica.

0 0))' AND Contains(the_geom.x e inferiores.5. Para versões de PostgreSQL 7. rode o comando SELECT UPDATE_GEOMETRY_STATS(). 0 0))'. uma caixa delimitada) para construir o índice. SELECT id. Deverá também assegurar-se de que se a seleção de PostgreSQL tiver muita informação sobre seu índice para fazer decisões racionais. use a função "CREATE INDEX" como segue: CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometrycolumn] ). Índices para esses dados soltos.x e superiores. entre outros. a importância de um bom índice.4. como Distance(). Porque são descartados os índices PostgreSQL R-Tree? . A maior seleção espatial incluem ambos um teste posicionado e um teste de função spatial. 10 0. chamado tambem de índices lossy. As funções espaciais são então para uso de teste de condição exata. A opção "USING GIST" informa ao servidor para usar um índice GiST (Generalized Searche Tree). Intersects(). usa um objeto "proxy" (no caso espacial. the_geom FROM thetable WHERE the_geom && 'POLYGON((0 0. 10 0. você tem que pegar estatísticas em suas tabelas geométricas.0.'POLYGON((0 0. 10 10. Como fazer seleção espacial rápida em tabelas grandes? Seleções rápidas em tabelas grandes é uma finalidade da existência propriamente de bancos de dados espaciais (junto com suporte transacional). 10 10. quando usá-lo. 0 10.Poderá também fazer uso de funções espaciais. Para construir um índice espacial em uma tabela com uma coluna geometrica. Contains() e Within(). somente eles que podem se encontrar com a condição do interesse. 3. tendo assim. Para fazer isto. 0 10. Nota Índices GiST são assumidos para quem não sabe o que fazer com o dado. e obterá resultados abaixo de suas buscas. Para versões de PostgreSQL 8. O teste do índice serve para limitar o número de retornos. rode o comando VACUUM ANALYZE.4. 3.

Mapserver é uma aplicação que faz uso dos meta-dados de geometry_columns. não use. isto vai causar falhas na maioria das aplicações baseadas em PostGIS. A função Expand() é uma maneira acessível de ampliar um salto de caixa para permitir uma busca do índice de uma região do interesse.6.7. A combinação de uma cláusula do índice do acesso rápido e de um teste exato mais lento da distância. procurar todos os objetos com 100 metros de POINT(1000 1000) a seleção a seguir trabalharia bem: SELECT * FROM GEOTABLE . e os meta-dados de tabelas OpenGIS não serão preenchidas corretamente. assim construindo um índice em uma coluna de geometria que contenha geometrias nulas falharão. Simplesmente crie tabelas com versões mais velhas dentro. índices R-Tree em PostgreSQL não são nenhuma "null safe" (sem segurança). Índices GiST podem. Por exemplo.6. Especificamente. definindo suas colunas de geometria na declaração do CREATE . Porque usar a função AddGeometryColumn () e todas as funções restante de OpenGIS? Se você não quer usar funções de suporte OpenGIS. fornece a melhor combinação da velocidade e da precisão para esta seleção. 3. Mapserver pode usar o SRID da coluna de geometria para fazer características de reprojeções rápidas dentro da correta projeção de mapa. PostgreSQL R-Trees nativo tem duas limitações que os fazem indesejáveis para o uso com características GIS (nota-se que estas limitações são devido a atual implementação de PostgreSQL R-Tree nativa. PostgreSQL R-Trees tem sido descartado completamente desde a versão 0. não o conceito de R-Tree em geral): • índices R-Tree em PostgreSQL não podem controlar características que são de tamanhos maiores que 8K. é melhor fazer uma seleção de rádio com qual combina o teste de rádio com um teste de caixa de salto: o teste de caixa delimitada usa o índice espacial. Qual é o melhor caminho para achar todos os objetos dentro de outro objeto de rádio? Para se usar o banco de dados eficientemente. Porém. Todas suas geometrias terão SRIDs de valor -1. Porém. e geralmente é sugerido que você use AddGeometryColumn () para criar tabelas de geometrias.Versões anteriores de PostGIS usaram os índices PostgreSQL R-Tree. Nossos testes mostraram velocidade de procura para R-Tree nativa e GiST serem comparáveis. enquanto um subconjunto de dados de acesso rápido. e índices espaciais são proporcionados com esquema R-Tree-over-GiST. usando-se o "lossy" de substituição a caixa delimitada para característica própria. com o qual o teste de rádio é aplicado. • 3.

4 0. PostGIS estende o padrão com suport para coordenadas 3DZ.2 1. 3DM e 4D. Ambos.(1 1. 4.1 1.4 4.-1). 2 1.1 2) POLYGON((0 0. 2 2. Padrões de OpenGIS WKB e WKT A especificação OpenGIS define dois caminhos padrões de objeto espacial de expressão: a forma Well-Known Text (WKT) e a forma Well-Known Binary (WKB).0 4.1 2).0 4. Como executar uma reprojeção coordenada como parte de uma seleção? Para executar uma reprojeção. uma reprojeção é tão simples quanto recorrer ao destino desejado SRID. a fonte e sistemas de coordenada de destino devem ser definidos dentro da tabela SPATIAL_REF_SYS. Exemplos das representações de texto das características são como segue: • • • • • • POINT(0 0) LINESTRING(0 0.1 1.4 4.1 1)) MULTIPOINT(0 0.4269) FROM GEOTABLE. Usando PostGIS 4. mas não as várias comparações e operadores de convolução cedidos na especificação OGC "Simple Features for SQL".-2 -2.1 2) MULTILINESTRING((0 0. 3. Objetos de GIS Suporte PostGIS a objetos de GIS são "Simple Features" (Características Simples) definidas pelo OpenGIS Consortium (OGC).(2 3.3 2.0 0). Capítulo 4. incluem informação sobre o tipo do objeto e as coordenadas a qual forma o objeto.2 2.-2 -1.WHERE GEOCOLUMN && Expand(GeomFromText('POINT(1000 1000)'.1.1. SELECT Transform(GEOM. Note que PostGIS suporta atualmente as características e a representação de APIs.5 4)) MULTIPOLYGON(((0 0.GEOCOLUMN) < 100.(1 1. e as geometrias que são reprojetadas já devem ser usadas em atribuição do SRID. WKT and WKB.-1 -2.1 2.-1 -1))) . 1 2.1 1)).0 0).100) AND Distance(GeomFromText('POINT(1000 1000)'.1. ((-1 -1.-1). Uma vez isso terminado.4 0.8.

geometry = GeometryFromText(text WKT. Exemplos das representações do texto (EWKT) dos objetos espaciais estendidos das características são como segue: • • • • • POINT(0 0 0) -.4 45. e o SRID associado *nunca* faz parte das respresentações do input/output.2. Assim você NÃO DEVE confiar nesta característica! Postgis EWKB/EWKT soma o suport a coordenadas 3dm.1. uma declaração válida de inserção para criar e inserir um objeto espacial de OGC seria:: INSERT INTO SPATIALTABLE ( THE_GEOM.4d e faz parte das informações SRID. EWKT e Formas Canônicas Somente o formato OGC suporta geometria 2d.MULTIPOINTM(0 0 0. text WKT = asText(geometry). especificamente se OGC saísse com um formato novo que opõe a nossas extensões.1 2 1) -. SRID). 'A Place' ) 4. PostGIS Padrões EWKB. Input/Output desses formatos está disponível usando as seguintes relações: bytea WKB = asBinary(geometry).3dz. mas mas isto pôde variar no futuro. 312).XYM POINT(0 0 0 0) -.XYM with SRID .XY with SRID POINTM(0 0 0) -. THE_NAME ) VALUES ( GeomFromText('POINT(-126.LINESTRING((2 3. geometry = GeomFromWKB(bytea WKB.3 4))) A especificação de OpenGIS requer também que o formato de armazenamento interno de objetos espaciais inclui um identificador de sistema referenciado espacial (SRID). SRID). Formatos de extensão Postgis são atualmente superset de um OGC(cada WKB/WKT válido é um EWKB/EWKT válido).• GEOMETRYCOLLECTION(POINT(2 3). O SRID é requerido ao criar objetos espaciais para a inserção no banco de dados.POINT(0 0) -.32)'.XYZM SRID=4326.XYZ SRID=32632. Por exemplo.

0 0 0).3 4 5))) • Input/Output desses formatos são usados conforme a interface a seguir: bytea EWKB = asEWKB(geometry). THE_NAME ) VALUES ( GeomFromEWKT('SRID=312.4 45.3 2 1.0 4 0.POINTM(-126.• • • MULTILINESTRING((0 0 0.4 4 0.0 4 0.2 1 0.(1 1 0.POINT(0 0)'::geometry.0 0 0).-2 -1 0.1 1 0)). geometry = GeomFromEWKT(text EWKT).(2 3 1.((-1 -1 0. Por exemplo.32 15)').-1 -2 0. atualização ou cópia.2 2 0.1 2 0.5 4 1)) POLYGON((0 0 0.4 0 0. Para o postgis tipo 'geometry' são esses: . geometry = GeomFromEWKB(bytea EWKB).1 1 0.LINESTRINGM((2 3 4. 'lugar' ) A "canonical form" (forma canônica ) de um tipo PostgreSQL são as representações que pega com uma simples "query" (sem uma chamada de função) e no qual é garantido para ser aceito com uma inserção simples.1 2 1).(1 1 0.4 0 0.-2 -2 0.Output binary: EWKB ascii: HEXEWKB (EWKB in hex form) .4 4 0.1 2 0.-1 -1 0))) GEOMETRYCOLLECTIONM(POINTM(2 3 9). uma declaração válida de inserção para criar e inserir um objeto espacial seria: INSERT INTO SPATIALTABLE ( THE_GEOM.2 1 0. geometry ---------------------------------------------------01010000200400000000000000000000000000000000000000 (1 row) .1 1 0)) MULTIPOLYGON(((0 0 0.2 2 0. text EWKT = asEWKT(geometry).Input binary: EWKB ascii: HEXEWKB|EWKT Para o exemplo esta indicação lê EWKT e retorna HEXEWKB no processo do input/output canônico do ascii: =# SELECT 'SRID=4.

Examples of some simple curved geometries are shown below: As extensões de texto conhecidas não são suportadas ainda por completo.5. 3 3. A tabela SPATIAL_REF_SYS carrega os identificadores numéricos e descrições textuais de sistemas de coordenada usadas no banco de dados espacial. atualmente 1E-8.(1 1. Tabela de Sistemas de Referências Espacial (SPATIAL_REF_SYS) A definição da Tabela de Sistemas de Referências Espacial (SPATIAL_REF_SYS) é como segue: CREATE TABLE SPATIAL_REF_SYS ( . 0 0). 0 1)) CURVEPOLYGON(CIRCULARSTRING(0 0. 11. 1 1.3. Nota Todas as comparações do ponto flutuante dentro da implementação de SQL-MM são executadas para uma tolerância especificada.CIRCULARSTRING(4 0.gurar que os meta-dados permaneçam consistentes. 11 11. 11 10. 0 4. 11 11))) Nota Atualmente. definindo um número de curvas inseridas circularmente.1. 4 4. Os exemplos de algumas geometrias curvadas simples são mostrados abaixo: • • • • • CIRCULARSTRING(0 0. 5 5). As definições SQL-MM incluem coordenadas 3dm. 1 0) COMPOUNDCURVE(CIRCULARSTRING(0 0. 1 1)). 0 4. Usando Padrões de OpenGIS O OpenGIS "Simple Features Specification for SQL" define tipos de objetos padrão GIS.5 11. as funções requeridas para manipulá-las e uma especificação de tabela de meta-dados. mas não permite embutir informação SRID.1.(1 1.4. operações como criar e remover uma coluna espacial são carregadas fora através da definição procedures especiais por OpenGIS.(11 11. 3 3. Para asse. 10 10).2. 4 4. 4 0. 4.2. 4. 1 1. 3 1. 4 4. 8 4)) MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0. PostGIS não pode suportar o uso de curvas compostas (Compound Curves) em um polígono curvo (Curve Polygon). 3dz e 4d. 1 1)) MULTICURVE((0 0. 14 12. SQL-MM Part 3 A especificação Espacial de Aplicações de Multimedia do SQL estende as simples características para especificações do SQL. 0 0). 3 1. E x i s t e m d u a s t a b e l a s d e m e t a . 1 0). 4 0.((10 10.(1 0.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. The well-known text extensions are not yet fully supported.

GEOGCS["NAD83".0174532925199433] ]. "EPSG" seria um AUTH_NAME válido.500000]. Para uma discussão de WKT em geral.0].6378137. Para informações do Grupo de Exame Europeu do Petróleo (EPSG .opengis.1] ] Para uma listagem de códigos de projeção Grupo de Exame Europeu do Petróleo (EPSG . No caso de EPSG.European Petroleum Survey Group) e suas correspondentes representações.SRID INTEGER NOT NULL PRIMARY KEY.0]. UNIT["metre".org/. PARAMETER["false_easting". veja: http://epsg. PARAMETER["scale_factor". Um exemplo de uma representação WKT SRS é: PROJCS["NAD83 / UTM Zone 10N". SRTEXT VARCHAR(2048).TXT.SRS) dentro do banco de dados. PARAMETER["central_meridian". UNIT["degree".0].0. veja http:// www. AUTH_SRID O ID do Sistema de Referência Espacial (SRID) como definido pela autoridade citada no AUTH_NAME. AUTH_NAME VARCHAR(256). PRIMEM["Greenwich".257222101] ]. PROJ4TEXT .org/techno/interop/EPSG2WKT.htm. DATUM["North_American_Datum_1983".opengis.org/techno/specs. veja OpenGIS "Coordinate Transformation Services Implementation Specification" em http://www. AUTH_NAME Nome do padrão ou corpo de padrões que estão sendo citados para este sistema de referência.298. PROJECTION["Transverse_Mercator"].9996]. SPHEROID["GRS 1980". AUTH_SRID INTEGER. PARAMETER["latitude_of_origin". Por exemplo.-123].0.European Petroleum Survey Group) e seu banco de dados de sistemas de referência espacial. PROJ4TEXT VARCHAR(2048) ) As colunas SPATIAL_REF_SYS são como segue: SRID Um valor inteiro que exclusivamente identifica o Sistema de Referência Espacial (Spacial Referencing System . PARAMETER["false_northing". SRTEXT Representação de Well-Known Text do Sistema de Referência Espacial (WKT SRS). é onde o código de projeção EPSG ficaria.

usar um: POINT. Por exemplo: +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m Para mais informações a respeito.2. F_TABLE_SCHEMA VARCHAR(256) NOT NULL.PostGIS usa a biblioteca Proj4 para fornecer potencialidades de transformaçãocoordenadas . 4. Restringir a coluna espacial a um único tipo. Tabela de Colunas Geométricas (GEOMETRY_COLUMNS) A definição de Tabela de Colunas Geométricas (GEOMETRY_COLUMNS) é como segue: CREATE TABLE GEOMETRY_COLUMNS ( F_TABLE_CATALOG VARCHAR(256) NOT NULL. M U LT I P O LY G O N M . P O LY G O N M . LINESTRINGM. LINESTRING. COORD_DIMENSION INTEGER NOT NULL. SRTEXT and PROJ4TEXT. TYPE Tipo do objeto espacial. Note que as condições "catalog" e "schema" são Oracle-ish. M U LT I P O I N T M . Para coleções heterogêneas (mixed-type). F_TABLE_NAME Nome completamente qualificado da característica tabela contendo a coluna geométrica. SRID INTEGER NOT NULL. F_GEOMETRY_COLUMN VARCHAR(256) NOT NULL. MULTIPOINT.remotesensing. M U LT I L I N E S T R I N G M .org/proj. veja a página de Proj4 em http:// www.para "schema" o nome de banco de dados PostgreSQL é usado. (public é o default).sql contém ambas definições. você pode usar "GEOMETRY" como tipo. A coluna de PROJ4TEXT contem a string de definição de coordenada Proj4 para um SRID particular. GEOMETRYCOLLECTIONM. F_TABLE_NAME VARCHAR(256) NOT NULL. GEOMETRYCOLLECTION or corresponding XYM versions POINTM. SRID Identificador do sistema de referência espacial usado para a coordenada geométrica nesta tabela. . 3 ou 4 dimensional) da coluna.para todas as projeções. F_GEOMETRY_COLUMN O nome da coluna geométrica na tabela característica COORD_DIMENSION Dimensão de espaço (2. MULTIPOLYGON. F_TABLE_SCHEMA. MULTILINESTRING. POLYGON.2. O arquivo spatial_ref_sys. Não existe análogo de "catalog" PostgreSQL de forma que a coluna é espaço em branco a esquerda . TYPE VARCHAR(30) NOT NULL ) As colunas são como segue: F_TABLE_CATALOG. É uma chave de referência estrangeira para o SPATIAL_REF_SYS.

'LINESTRING'. SELECT AddGeometryColumn( 'roads'. 'GEOMETRY'.2. PARK_DATE date. ou seja. usando o tipo "geometry" genérico e o indefinido SRID de valor -1: CREATE TABLE roads ( ROAD_ID int4. 3 ). 2 ). 423.3. isvalid | isvalid . Para verificar a validade das geometrias você pode usar a função IsValid(): gisdb=# select isvalid('LINESTRING(0 0.4. 1 1)'). Existe outro exemplo. Por exemplo: CREATE TABLE ROADS_GEOM ( ID int4. <type>." A sintaxe é: • • • • • • • • AddGeometryColumn(<schema_name>. <dimension>) Exemplo1: SELECT AddGeometryColumn('public'. <column_name>. Assegurando-se conforme a geometria de OpenGIS A maioria das funções executadas pela biblioteca de GEOS confiam na suposição que suas geometrias são válidas como especificadas pela Especificação de Característica Simples de OpenGIS (OpenGIS Simple Feature Specification). 4. 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. 'roads_geom'. isvalid('LINESTRING(0 0. PARK_TYPE varchar(2) ). mas é requerido para homogeneidade de tipo assegurado. 'MULTIPOLYGON'.Nota Este atributo não é (provavelmente) parte da especificação OpenGIS.2. PARK_NAME varchar(128). NAME varchar(25) ) Acrescentar uma coluna espacial para a tabela que usa a função OpenGIS "AddGeometryColumn. Criando uma Tabela Espacial Criação de uma tabela com dados espaciais é feito em duas fases: • Criar uma tabela normal . <type>. sem dados espacias. 'LINESTRING'. <column_name>. 'roads_geom'. ROAD_NAME varchar(128) ). 128. 'geom'. 423. 2) Exemplo2: SELECT AddGeometryColumn( 'roads_geom'. <table_name>. SELECT AddGeometryColumn('parks'. <srid>. 'geom'. -1. <srid>. <dimension>) ou. usando "schema" corrente: AddGeometryColumn(<table_name>. 'park_geom'.0 0)'). 4.

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

sem adicionar nenhum dado real. Isto pode ser usado se você necessitar separar completamente as etapas da criação da tabela e do carregamento dos dados. . . Use isto para quantidades grandes de dados. I N S E RT I N TO R O A D S _ G E O M ( I D .o c e . O arquivo de dados pode ser transportado facilmente para dentro do PostgreSQL usando o monitor de terminal SQL "psql": psql -d [database] -f roads.3. os arquivos têm que ter os mesmos atributos e mesmos tipos de dados. -D Cria uma nova tabela e insere dados do arquivo Shape. Note que.sql 4. G E O M . -c Cria uma nova tabela e insere dados do arquivo Shape.GeomFromText('LINESTRING(190131 224148. O carregador tem vários 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. -k Conserva identificadores de caso (coluna. Este parametro é o modo padrão. Usando o Carregador O carregador de dados shp2pgsql converte arquivos ESRI Shape dentro do SQL de maneira correta para inserção em um banco de dados de PostGIS/PostgreSQL. para usar esta opção para carregar arquivos múltiplos. -a Acrescenta dados do arquivo Shape na tabela de banco de dados. -i Conserva identificadores de caso (coluna.-1).I N S E RT I N TO R O A D S _ G E O M ( I D .2. Este parametro usa o "dump" formato PostgreSQL para os dados de produção e é muito mais rápido carregar que o padrão "insert" formato SQL. Note que os atributos em Shapefile são todos UPPERCASE.a.'Dave Cres'). N A M E ) VA L U E S (5. G E O M .'Phil Tce'). É muito mais rápido carregar do que o default de inserção do formato SQL. COMMIT.190871 228134)'. schema e atributos). Note que os atributos em Shapefile são todos UPPERCASE. schema e atributos). Use o formato do "dump" de PostgreSQL para os dados da saída. N A M E ) VA L U E S (6.-1). Isto pode ser combinado com .d.198213 268322)'. -p Produz somente o código do SQL da criação da tabela. Use isto para séries de dados muito grandes. -s <SRID> Cria e insere tabelas de geometria com o SRID especificado.GeomFromText('LINESTRING(198231 263418.

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

Porém, haverá restrições que será necessário reduzir o número de campos devolvido. No caso de restrições atributos-baseados, usar exatamente a mesma sintaxe de SQL como normal com uma tabela não espacial. No caso de restrições espaciais, os operadores seguintes são habilitados/completos: && Este operador diz se caixa delimitada de uma geometria sobrepõe caixa delimitada de outra. ~= Estes operadores testam se duas geometrias são geometricamente idênticas. 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 ingênuo, só testa se as caixas delimitadas para geometrias é o mesmo. Logo, você pode usar estes operadores em questão. Note que ao especificar geometrias e caixas na linha de comando SQL, você tem que transformar as representações de string explicitamente em geometrias usando a função "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 característica de comparação ou um GEOMETRY. Porém, quando você especifica um GEOMETRY que sua caixa delimitada será usada para a comparação. 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 polígono para propósitos de comparação. 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 exibição. Usando um objeto "BOX3D" para a visualização, 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 projeção 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 básica é: pgsql2shp [<options>] <database> [<schema>.]<table> pgsql2shp [<options>] <database> <query> As opções de linha de comando são: -f <filename> Escreva uma saída 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 conexão do banco de dados. -u <user> O nome do usuário para usar a conexão do banco de dados. -g <geometry column> No caso de tabelas com colunas de geometria múltiplas, usar a coluna de geometria quando escrever o arquivo Shape. -b Use um cursor binário. Isto fará a operação mais rápida, mas não trabalhará se qualquer atributo da NON-geometry na tabela faltar um molde ao texto. -r Modalidade pura. Não 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 padrão é escrever um arquivo Shape 2- dimensional neste caso). Inicie de postgis-1.0.0+, as dimensões são codificadas inteiramente. 4.5. Construindo Índices Índice é o que faz usando um banco de dados espacial para um possível bancos de dados grandes. Sem indexação, nenhuma busca por característica 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 apóia três tipos de índices através do padrão: Índices B-Trees, índices R-Trees e Índices GiST. • B-Trees são usadas para dados que podem ser ordenados ao longo de um eixo; por exemplo, números, cartas, datas. Dados de GIS não podem ser racionalmente ordenados ao longo de um eixo (o qual é maior, (0,0) ou (0,1) ou (1,0)?) assim indexação B-Tree é inútil para nós. R-Trees abre dados em retângulos, sub-retângulos, e sub-sub retângulos, etc. RTrees são usados por alguns bancos de dados espaciais para indexar dados de GIS, mas uma implementação R-Tree PostgreSQL não é como uma implementação 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 estão 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. Além da da indexação de GIS, GiST é usada para acelerar buscas em todos os tipos de estruturas de dados irregulares (arranjos de números inteiros, dados espectrais, etc) que não são amenos a indexação 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 exercício computacionalmente intensivo: em tabelas ao redor de 1 milhão de linhas, em uma máquina de 300MHz Solaris, achamos que com a construção de um índice GiST leva aproximadamente 1 hora. Depois de construir um índice, é importante forçar PostgreSQL a coletar estatísticas de tabela que são 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 têm duas vantagens em relação a índices R-Tree em PostgreSQL. Em primeiro lugar, índices GiST são "null safe" (segurança nula), significando que eles podem indexar colunas que incluem valores nulos. Em segundo lugar, indices GiST apóiam o conceito de "lossiness" que é importante quando lidado com objetos de GIS com páginas 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 causarão índices R-Tree para falhar no processo de ser construído. 4.5.2. Usando Índices Índices aceleram o acesso de dados: uma vez que o índice é construído, a transparência de planejamento de queries decide quando usar informação de índice para acelerar um plano de "query". Infelizmente, a "query" PostgreSQL não planeja otimizar bem o uso de índices de GiST, às vezes buscas que deveriam usar um índice espacial ao invés do padrão para uma busca sequencial da tabela inteira. Se você acha que seus índices espaciais não estão 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 são coletadas sobre o número e distribuições dos valores em uma tabela, proporcionando para o operador de "query", melhor informação de tomada de decisões em torno do uso de índices Para instalações PostgreSQL 7.4 e anteriores, é rodado: update_geometry_stats([table_name, column_name]) (agrupa estatísticas distribuições de valores em uma tabela) e VACUUM ANALYZE [table_name] [column_name] (agrupa estatísticas a respeito do número de valores em uma tabela). Começando com PostgreSQL 8.0 rodando VACUUM ANALYZE fará ambas as operações. Você deveria limpar regularmente seus bancos de dados - muitos DBAs PostgreSQL têm rodado "VACUUM" (vazio) com a carga máxima de trabalho "cron" desligada em bases regulares. Se não limpar seus trabalhos, você pode forçar o operador a usar informação 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 situação ENABLE_SEQSCAN atrás ligado, de maneira que outras queries o operador utilizará como normal. Nota A partir de versão 0.6, não deveria ser necessário forçar 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 parâmetro é 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

O operador && usa o índice para reduzir rapidamente o resultado atribuído a essas geometrias. Por exemplo. ie.esta é nossa "query box".2. isto reduzirá drasticamente o número de distância de cálculos que precisam ser feitos. que têm salto de caixas que sobrepõem a "query box". distance () calculados para cada linha na tabela. o operador de "query" reconhecerá que pode usar o índice para reduzir o número de linhas antes de calcular o resultado da função distance (). pode tirar proveito do índice espacial de GiST. Vantagens dos Índices Na construção de uma "query" é importante lembrarmos que os operadores baseados em saltos de caixa tal como &&.1. Note que a geometria de BOX3D que é usada dentro da operação && é uma caixa quadrada centrada no ponto original unidade 200 .6. Supondo que existe um índice GiST em the_geom. Exemplos de SQL Espacial Os exemplos nesta seção utilizarão duas tabelas. 100100 200100)'::box3d AND distance( the_geom. Usando PostGIS efetivamente requer conhecimento de quais funções espaciais estão disponíveis. Funções como distance () não pode usar o índice para otimizar suas operações. 4. GeomFromText( 'POINT(100000 200000)'.6. GeomFromText( 'POINT(100000 200000)'. a "query" seguinte seria bastante lenta em uma tabela grande: SELECT the_geom FROM geom_table WHERE distance( the_geom. mas faz isto de um modo mais eficiente. 200000). 4. Podemos evitar isto usando o operador && para reduzir o número de cálculos de distância requerido: SELECT the_geom FROM geom_table WHERE the_geom && 'BOX3D(90900 190900. -1 ) ) < 100 Esta "query" está selecionando todas as geometrias em geom_table que está dentro de 100 unidades do ponto (100000. As definições de tabela para a tabela dos bc_roads são: Column | Type | Description ------------+-------------------+------------------gid | integer | Unique ID name | character varying | Road Name the_geom | geometry | Location Geometry (Linestring) A definição de tabela para a tabela do bc_municipality é: Column | Type | Description -----------+-------------------+------------------- . Supondo que nossa "query box" é muito menor que as extensões da tabela de geometria inteira. e uma tabela de limites poligonal da municipalidade. -1 ) ) < 100 Esta "query" seleciona as mesmas geometrias. e assegura-se que índices apropriados estão em lugar que aprovam bom desempenho.A finalidade da existência 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. uma tabela de estradas lineares. Estará lento porque está calculando a distância entre cada ponto na tabela e nosso ponto especificado.

2.2. Qual o comprimento total de todas as estradas.2.2.3.6. area(the_geom)/10000 AS hectares FROM bc_municipality ORDER BY hectares DESC LIMIT 1.2. por área? 4. Qual é o tamanho completo das estradas contidas inteiramente dentro de cada municipalidade? 4.6. da Avenida dos Autonomistas.6.2. em OSASCO? 4. em hectares? 4.1.4.6. mas o mais eficiente está abaixo: postgis=# SELECT name.9103824927 (1 row) 4.2.2. Qual é a maior municipalidade na província.2. expressado nos quilômetros? 4. Qual é o maior polígono da municipalidade que tem uma regra? 4.6.6.2. Qual é a área da cidade de São Paulo.6. name | hectares ---------------+----------------TUMBLER RIDGE | 155020.02556131 . 4. Qual é o tamanho em quilômetros. km_roads -----------------70842.5.1.7.6.3. em hectares? Esta "query" combina uma condição do atributo (no nome da municipalidade) com um cálculo espacial (da área): postgis=# SELECT area(the_geom)/10000 AS hectares FROM bc_municipality WHERE name = 'SÃO PAULO' -----------------32657.6.2. Qual é a maior municipalidade na província. Qual o comprimento total de todas as estradas. Há diversas maneiras de avaliar este problema. Qual é a área da cidade de São Paulo. por área? Esta "query" traz uma medida espacial na condição da "query". expressado nos quilômetros? Voce pode responder esta questão com uma parte muito simples de SQL: postgis=# SELECT sum(length(the_geom))/1000 AS km_roads FROM bc_roads.2. Críe uma nova tabela com todas as estradas dentro da cidade de São Paulo.6.gid | integer | Unique ID code | integer | Unique ID name | character varying | City / Town Name the_geom | geometry | Location Geometry (Polygon) 4.6.1243039643 (1 row) 4.

sum(length(r.6.5. que nós poderíamos separadamente posicionar para o desempenho.37554369147 . Este é um exemplo de um "overlay".name ORDER BY roads_km.33093486576 LANGLEY DISTRICT | 833.769091404338 PRINCE GEORGE | 694. que consiste espacialmente "clipped" ou do corte de resultados.the_geom) GROUP BY m. Se nós fizéssemos isto muito.the_geom && m.the_geom. e por eles que usam o comando de PostgreSQL "LIMIT".. Um "overlay" é como um turbo-carregado de "spatial join".the_geom))/1000 as roads_km FROM bc_roads AS r.the_geom AND contains(m. mas estamos usando uma condição de interação espacial ("contained") como a melhor condição de juntar do que a aproximação relacional usual de juntar em uma chave comum: postgis=# SELECT m.6. name | roads_km ----------------------------+-----------------SURREY | 1539.793392535662 BURNABY | 773. e é útil para um trabalho mais exato da análise: postgis=# CREATE TABLE pg_roads as SELECT intersection(r. esta "query" cria realmente novas geometrias. Ao contrário do "spatial join" demonstrado acima.47553551242 VANCOUVER | 1450. sem usar uma função agregada como o max(). Requisitando os resultados em um sentido descendente. r. Crie uma nova tabela com todas as estradas dentro da cidade de São Paulo. 4.the_geom) AS intersection_geom.bc_municipality AS m WHERE r. m. Qual é o tamanho completo das estradas contidas inteiramente dentro de cada municipalidade? Este é um exemplo de um "spatial join" . nós podemos facilmente extrair o maior valor. Esta "query" examina porque cada estrada na tabela é sumarizada no resultado final (sobre as estradas 250K para nossa tabela do exemplo particular).2.(1 row) Note que a ordem para responder a esta "query". porque nós estamos trazendo junto dados de duas tabelas (que fazem juntar).name. 4. nós temos que calcular a área de cada polígono.r.the_geom) AS rd_orig_length..4. length(r. Para menores "overlays" (mil registros em cem) a resposta pode ser muito ráapida. teria sentido acrescentar uma coluna da área à tabela.* .2. que examina em duas tabelas e saídas em uma nova tabela.the_geom.

2. Qual é o maior polígono da municipalidade que tem uma regra? postgis=# SELECT gid. . • • A homepage do Mapserver está em http://mapserver.pdf.89151904172838 (1 row) 4.7. bc_municipality AS m WHERE r. m.umn.edu/. Qual é o tamanho em quilômetros.the_geom.6.the_geom AND r. você precisará conhecer como configurar o Mapserver que está além da extensão desta documentação. Esta seção cobrirá distribuição e detalhes de configuração de PostGIS específico. name.2.the_geom && m. 4.6 ou posterior de PostGIS.6.430216 (1 row) 4.7. bc_municipality m WHERE r.FROM bc_roads AS r.name = 'OSASCO'. kilometers -----------------4.7. gid | name | area -----+--------------+-----------------12 | SPALLUMCHEEN | 257374619. em OSASCO? postgis=# SELECT sum(length(r. A especificação de Web Map OpenGIS está em http://www.opengis.the_geom && m.gis.the_geom AND intersects(r. você precisará: • • Versão 0.6. 4. area(the_geom) AS area FROM bc_municipality WHERE nrings(the_geom) > 1 ORDER BY area DESC LIMIT 1.name = 'Avenida dos Autonomistas' AND m. Usando Mapserver O Minnesota Mapserver é um servidor Web Map na internet que adapta-se a especificação do Servidor de Mapas na Internet OpenGIS .the_geom) AND m.1.org/techno/ specs/01-047r2. da Avenida dos Autonomistas.name = 'SÃO PAULO'.5 ou posterior de Mapserver.the_geom))/1000 AS kilometers FROM bc_roads r. Versão 3. Uso Básico Usar PostGIS com Mapserver. Usar PostGIS com Mapserver.

DATA A forma deste parâmetro é "< column> from <tablename>" onde a coluna é a coluna espacial a ser traduzida no mapa. as diretivas de especificação do PostGIS são como segue: CONNECTIONTYPE Para camadas de PostGIS. Compile e instale Mapserver. 23. Por exemplo: 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. enquanto o sistema tem bibliotecas client de PostgreSQL libpq. No mínimo você se proverá do nome e usuário do banco de dados com c conexão. 8. 16. 13. Estes meios que Mapserver pode ser instalado em qualquer máquina com acesso de rede para o servidor de PostGIS. 9. 11. acrescente uma camada de PostGIS. . 19. 21. 27. e nenhum dos pares de chave/valor podem ser omitido. Em seu arquivo de mapas Mapserver. 12. 17. este é sempre "postgis. 10." CONNECTION A conexão de banco de dados é governada por uma 'connection string' do qual é um padrão de coleção de chaves e valores como este (com os valores padrões em <>): user=<username> password=<password> dbname=<username> hostname=<server> port=<5432> Um fio de conexão vazio ainda é válido. 26.usando libpq. 6. 20. 24. 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.Mapserver acessa dados de PostGIS/PostgreSQL como qualquer outro cliente de PostgreSQL. 5. 18. 14. 7. 1. 3. 22. 15. com qualquer opções que você deseje. 25. 4. inclusive a opção de configuração "-with-postgis" 2.

31.2. O que está errado? 4. 29. Quando eu uso uma EXPRESSÃO em meu arquivo de mapa.2. mesmo que eu saiba os valores existentes em minha tabela. 30. 4.2." Mapserver requer identificadores únicos para cada registro espacial ao fazer queries.7. 4.4. um "oid index" é necessário.1. Se você estivesse examinando suas camadas usando Mapserver você também precisaria de um "oid index. Por exemplo. CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometrycolumn] GIST_GEOMETRY_OPS ).2.7. use o SQL seguinte: 33. Ao contrário dos arquivos Shape. os nomes de campo de PostGIS têm que ser referenciado nas expressões usando um caso mais baixo. 32.7. a condição nunca retorna como verdadeira.7. O FILTRO que eu me uso para meus arquivos Shape não está trabalhando para minha tabela de PostGIS de mesmos dados. A extração da camada de PostGIS é muito mais lenta do que a camada do arquivo Shape. Um efeito colateral disto é que para fazer acesso randômico rápido de registros durante queries." 28. O FILTRO que eu me uso para meus arquivos Shape não está trabalhando para minha tabela de PostGIS de mesmos dados. mesmo que eu saiba os valores existentes em minha tabela. e o módulo de Mapserver PostGIS usa o valor oid PostgreSQL para prover estes identificadores únicos. assegure-se que você tem índices espaciais (GiST) construídos para qualquer das camadas que você estará desenhando.7. Em seu banco de dados espacial. é este normal? 4.3. . Construir um "oid index". CREATE INDEX [indexname] ON [tablename] ( oid ).2. use um filtro de "num_lanes >= 6. Quando eu uso uma EXPRESSÃO em meu arquivo de mapa.2.2.1.2.FILTER O filtro deve ser uma string SQL válida correspondendo à lógica que normalmente segue da palavra-chave "WHERE" em uma "query" SQL. Perguntas Mais Frequentes 4.7. assim fazer só estradas com 6 ou mais pistas. EXPRESSION ([numlanes] >= 6) 4.2.7. A extração da camada de PostGIS é fina. 4. a condição nunca retorna como verdadeira. mas as queries são realmente lentas.

postgis# CREATE INDEX geotable_oid_idx ON geotable (oid). um problema de construção em índice no valor "oid" de sua tabela espacial. um índice espacial em sua tabela. O que está errado? Para que as "queries" sejam rápidas.3. é este normal? Em geral. Uso Avançado A cláusula USING pseudo-SQL é usada para acrescentar alguma informação para ajudar a entender os resultados mapserver de maior complexidade das queries.3. FILTER "type = 'highway' and numlanes >= 4" 4.For PGSQL < 8. filtros para camadas de PostGIS usa a sintaxe SQL (são adicionados à declaração do SQL o conector de PostGIS que extrai camadas em Mapserver). -.0 postgis# VACUUM ANALYZE.For PGSQL >= 8. Se você estiver encontrando problemas substanciais de desempenho.the_geom AS the_geom. "oid" é a coluna original "default" se você não declarar um. table1.7. table2.2.7. em transformações de dados e trânsito de dados entre o banco de dados e o Mapserver. espera-se camadas de PostGIS serem 10% mais lenta do que camadas de arquivos Shape. devido o "overhead" extra envolvido em conexões do banco de dados. mas as queries são realmente lentas.4.data AS data .0 4. postgis# SELECT update_geometry_stats(). assim que reforçar sua velocidade da "query". você deve ter uma chave original para sua tabela espacial e você deve ter um índice nessa chave original. Mais especificamente. A extração da camada de PostGIS é muito mais lenta do que a camada do arquivo Shape.2. A cláusula USING pode proporcionar para mapserver estes dois tipos de informação como segue: DATA "the_geom FROM (SELECT table1.oid AS oid. Você pode especificar que chave original para o Mapserver usar com a cláusula "USING UNIQUE" em sua linha de dados: DATA "the_geom FROM geotable USING UNIQUE gid" Se sua tabela não tiver uma coluna original explícita.cador único para cada linha e também o SRID para a tabela. -. quando uma visão ou um subselect é usado como tabela fonte (a uso certo de "FROM" em uma definição de DATA) é mais difícil para mapserver que automaticamente determina um identifi. postgis# CREATE INDEX geotable_gix ON geotable USING GIST ( geocolumn ). você pode usar "fake" para uma única coluna usando a linha de PostgreSQL "oid" para sua coluna original.7. é provável que você não tem a configuração.Ao contrário dos arquivos Shape. A extração da camada de PostGIS é fina. 4.

A declaração USING também pode ser muito útil para declarações de dados simples. Considere a seguir a definição 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 . 4. Por exemplo. se você esboçando "queries".id = table2. e é caso sensível em algumas áreas. e que sua cláusula USING UNIQUE precede sua cláusula "USING SRID. ou nenhuma coluna que é garantido ser único para o resultado final. é possível dizer que para o mapserver usa chave primária em suas próprias tabelas como o identificador de "queries" de mapa. Exemplos Começamos com um exemplo simples e que levanta nosso trabalho. mas views e subselects não tem automaticamente uma coluna "oid".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 esboça queries. Assim o USING SRID= opção que permite o correto SRID ser especificado na definição DATA. porém. Normalmente. e declará-la com USING UNIQUE. Tenha cuidado para assegurar-se de que todos as palavras chaves do SQL e todas suas cláusulas USING estejam em caso superior. em ordem acelara o desempenho de "queries" de mapa. você precisa acrescentar uma única coluna para "views" ou "subselects" . Aviso O parceiro para camadas de PostGIS Mapserver é razoavelmente primitivo. Recomendavasse previamente que. 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 atrás do mapserver.FROM table1 LEFT JOIN table2 ON table1. com a cláusula USING. Nota Examinando um mapa (Quering a Map) é a ação de "clicking" em um mapa e questionar informações a respeito de características de mapa naquele local. Normalmente é possível encontrar esta informação dentro da tabela "geometry_columns" no banco de dados de PostGIS. usaria o oid como identificador único.7. você poderia selecionar um valor para "oid" da própria tabela para este propósito. e então necessariamente não ter o mais longo índice adicional. Se você quiser usar a funcionalidade de "query" de Mapserver.4. Não confunda "map queries" com o "query" SQL em uma definição DATA. para acrescentar um índice na coluna oid das tabelas usadas nas camadas "query-able". isto não é possível para tabelas que são criadas superficialmente como "view"s e "subselects". Porém.

nós fizemos um par de coisas interessantes que usam só funcionalidade de mapserver. e exibe só as estradas de tipo "highway" (rodovia) com linhas pretas. A segunda camada é usada quando a balança é menos que 1:100000. A opção FILTER causa só estradas de TIPO "highway" (rodovia) a ser exibida. mas nossa declaração DATA SQL permaneceu simples. Agora dizemos que nós queremos mostrar só as rodovias até que nós conseguirmos fechar a câmara em pelo menos 1:100000 balança – as próximas duas camadas obterão 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 balança é maior que 1:100000. e exibirá rodovias como linhas vermelhas grossas. e outras estradas como linhas pretas regulares. . Suponha que o nome da estrada é armazenado em outra tabela (por qualquer razão) e nós precisamos fazer um una adquirir isto e etiquetar nossas estradas. Assim.TYPE LINE CLASS COLOR 0 0 0 END END Esta camada exibirá todas as geometrias de estrada na tabela de estradas com linhas pretas.

forName("org. o arquivo "postgis.the_geom AS the_geom.util.sql.postgresql. try { /* * Load the JDBC driver and establish a connection. */ Class.*.Connection conn. A fim usar os objetos de extensão. conn = DriverManager.8.postgis. "").jar".name as name FROM roads LEFT JOIN road_names ON roads.lang.getConnection(url. roads. road_names.road_name_id = road_names. outros diretamente como representações de texto ou usam os objetos de extensão JDBC empacotados com PostGIS. Clientes Java (JDBC) Os clientes de Java podem acessar objetos da "geometria" de PostGIS no banco de dados de PostgreSQL. String url = "jdbc:postgresql://localhost:5432/database". import java.jar" deve estar em seu CLASSPATH junto com o pacote JDBC de "postgresql.oid AS oid.sql. "postgres". import java. public class JavaGIS { public static void main(String[] args) { java.*.*.LAYER CONNECTION "user=theuser password=thepass dbname=thedb host=theserver" DATA "the_geom FROM (SELECT roads. . import java.*. import org. 4. Demonstra também como usar um "join" SQL em uma definição DATA.Driver").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 anotação adiciona etiquetas verdes a todas as estradas quando a escala começa para baixo a 1:20000 ou menos.

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

Cursores de Texto .9.html.org/docs/8. 4. Clientes C (libpq) .. o . Descrição de problemas As versões atuais de PostgreSQL (incluindo 8.} } O JavaDoc para os objetos da extensão fornece uma referência para as várias funções do assessor dos dados nos objetos geométricos.postgresql.. Neste exemplo. vejam http://www. Agora emita uma "query" onde você use o operador de geometria && procurar por salto de caixa aqueles só os poucos grupos daquelas linhas.0/static/storagetoast. mas não com muitas linhas (como uma tabela que contem os limites de todos os países europeus em resolução elevada). para mais informações. a própria tabela teve aproximadamente 80 linhas e usa somente 3 páginas de dados. Cursores Binários .. Tipos de Performance 5.9.1.9. 4. Estima que uma varredura seqüencial em uma tabela tão pequena é muito mais rápida do que usando um índice. Tabelas pequenas de geometrias grandes 5. Geralmente.. mas a tabela "TOAST" usou 8225 páginas.1. Agora a "query" otimizada vê que a tabela tem somente 3 páginas e 80 linhas. As tabelas "TOAST" são um tipo "extension room" usado para armazenar (no sentido do tamanho dos dados) os valores que não cabem em páginas de dados normais(como textos longos. Capítulo 5. O problema aparece se acontecer de ter uma tabela com geometrias de preferência grandes. E assim decide-se ignorar o índice de GIST. 4.2.1.0) sofrem de uma fraqueza do otimizador da "query" a respeito das tabelas "TOAST".. mas usa lotes de espaço do "TOAST"..1. Mas em nosso caso. Então a própria tabela é pequena. este estimativa está correta. imagens ou geometrias complexas com lotes de vertices).

se você mudar ou adicionar linhas na tabela. assim que você se "SET enable_seqscan TO on.4326). 5. estão aqui duas questões a respeito deste trabalho: O primeiro a cerca deste trabalho deve forçar o operador da "query" a usar o índice.operador && tem que buscar cada geometria do disco para comparar os saltos de caixa. você pode ler a linha na lista de envio de desempenho do postgres: http://archives. rendendo duas vantagens do desempenho: porque a escala do índice faz a varredura.2. Mas este "flag" tem que ser ajustado em cada conexão.'bbox'. mas você também pode modificar sua aplicação para manter a coluna do bbox atual ou rodar uma "query" do UPDATE acima depois de cada modificação. use o comando "EXPLAIN ANALYZE" do postgresql. O segundo a cerca deste trabalho deve fazer a varredura seqüencial tão rápida como o operador da "query" pensa. UPDATE mytable set bbox = Envelope(Force_2d(the_geom)). Isto força basicamente o operador da "query" a evitar varreduras seqüenciais sempre que possível.2. também." depois da "query".org/pgsql-performance/2005-02/ msg00030. você tem que manter o bbox "in sync".postgresql. Assim usa o índice de GIST como usual. e faz com que o operador da "query" faça estimações em outros casos. Envolvimento com o trabalho Equipes de PostgreSQL estão tentando resolver esta edição fazendo o estimativa de "queries" TOAST-aware. CLUSTERing em índices da geometria Para as tabelas que são na maior parte "read-only".'4326'." ao usuário antes de emitir a "query". Veja se a permissão deste erro.1 1)'::box3d. Em segundo. os comandos estão como: SELECT addGeometryColumn('myschema'. e agrupar de encontro a este. assim lendo todas as páginas TOAST. A maneira mais transparente de fazer isto seria "triggers". Este comando requisita novamente fisicamente todas as linhas de dados na mesma ordem que os critérios do índice.php 5. Isto pode ser conseguido criando uma coluna adicional "caches" ao bbox.1. se seu "set" de funcionamento concentrar-se a alguns intervalos pequenos nos .'2'). Emita "SET enable_seqscan TO off. e onde um único índice é usado para a maioria das "queries". Agora. Para mais informação e os detalhes técnicos. PostgreSQL oferece o comando "CLUSTER". o número das buscas na tabela dos dados é reduzido drasticamente.'mytable'. Agora altere sua "query" para usar o operador do && de encontro ao bbox em vez do geom_column. Naturalmente. Em nosso exemplo. como: SELECT geom_column FROM mytable WHERE bbox && SetSrid('BOX3D(0 0.'GEOMETRY'.

(procure ler a documentação do comando "CLUSTER" do manual de PostgreSQL. pode ser dividido este UPDATE em porções confinando o UPDATE a uma parte da tabela através da cláusula WHERE e sua chave primária ou uns outros critérios praticáveis. Para evitar estas "overhead". isto não trabalhará se você de fato precisar de valores NULL em sua coluna geométrica. Evitando a conversão da dimensão Às vezes." não trabalhará. No caso de tabelas grandes. Recorde que para atualizar a entrada na tabela geometry_columns e recriar mais tarde o "constraint". 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.3. mas sempre acessa-a usando as funções asText() ou asBinary() de OpenGIS que só sai geometrias 2D. pode ser praticado "pre-drop" naquelas dimensões adicionais uma vez e para sempre: UPDATE mytable SET the_geom = force_2d(the_geom). Referências PostGIS . Para contorná-la necessitará deixar cair o "constraint". 5. usando um CHECK "constraint" como "ALTER TABLE blubb ADD CHECK (geometria não é null). VACUUM FULL ANALYZE mytable. Adicionalmente. você tem "caching" mais eficiente porque as linhas de dados são espalhadas ao longo de poucas páginas dos dados. Capítulo 6. que introduz um "overhead" significante para geometrias grandes. você deve usar o método acima para adicionar o "constraint". ALTER TABLE Naturalmente.índices. você obtem uma mensagem de erro como: lwgeom=# CLUSTER my_geom_index ON my_table. atualmente PostgreSQL não permite "clustering" em índices PostGIS GIST porque os índices de GIST simplesmente ignoram valores NULL. Adicionalmente. Note que se adicionar sua coluna geometrica usando AddGeometryColumn() terá um "constraint" na dimensão da geometria.) Entretanto. se misturar dimensões geométricas. Isto reduz drasticamente a necessidade para o espaço em disco provisório." entre seus UPDATEs. Fazem isto internamente chamando a função force_2d(). Porque a mensagem HINT diz. restringindo o UPDATE por "WHERE dimension(the_geom)>2" pula reescrever da geometria que já estão no 2D. uma pode trabalhar em torno desta deficiência adicionando um constraint "not null" à tabela: lwgeom=# ALTER TABLE my_table ALTER COLUMN the_geom SET not null.acontece de ter os dados 3D ou 4D em sua tabela. e rodar um simples "VACUUM.

As funções descritas abaixo são as quais o usuário de PostGIS utiliza. O dbname é o nome do exemplo de banco de dados. Note que o schema_name necessitará combinar o campo do f_schema_name da linha da tabela na tabela dos geometry_columns. É utilizado na construção de caixas de salto para "queries". . Funções de OpenGIS 6.13. Acrescenta uma coluna geométrica a uma tabela existente de atributos.2 Disjoint(geometry. OGC SPEC s2. 10 10) '.2 / / s2. equals (' LINESTRING(0 0. <table_name>. integer) Sintaxe: AddGeometryColumn(<schema_name>. Remove uma coluna geométrica de uma tabela espacial. varchar) Sintaxe: DropGeometryColumn(<schema_name>. eg.1. Existem outras funções que são requeridas como suporte de funções aos objetos de PostGIS que não são de uso para um usuário comum. <srid>. <dimension>). 6. <column_name>). ' LINESTRING(0 0. 10 10) ') é verdade. O srid devem ser uma referência de valor inteiro a uma entrada dentro da tabela SPATIAL_REF_SYS. 5 5. varchar. SetSRID(geometry) Atribui o SRID em uma geometria para um valor de inteiro particular. O tipo deve ser uma string maiúscula que corresponde ao tipo de geometria .a.geometry) Retorna a distancia cartesiana entre duas geometrias em unidades projetadas. varchar. <type>.1. varchar.geometry) Retorna 1 (VERDADEIRO) se esta Geometria é que "spatially disjoint" (desloca espacialmente) de outra geometria. DropGeometryColumn(varchar. <table_name>.Relate(b.1. <column_name>.1.3 . Use ' = ' para uma melhor resposta . 6. e não um inteiro. varchar. integer.1.geometry) Retorna 1 (VERDADEIRO) se esta geometria "spatially intersects" (cruza espacialmente) outra geometria. Funções de Gerenciamento AddGeometryColumn(varchar. ' FF*FF * * * * ') Intersects(geometry.1. Executado pelo módulo de GEOS Não chame "GeometryCollection" como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean (condição verdadeira ou falsa).1. Funções de Relacionamento da Geometria Distance(geometry.2.geometry) Retorna1 (VERDADEIRO) se esta geometria é que "spatially equal" (espacialmente iguais) a uma outra geometria. Equals(geometry. Executado pelo módulo de GEOS OGC SPECs2.1.1. ' POLÍGONO' ou ' MULTILINESTRING '.

1.Touches(b) . OGC SPEC s2.1.1.geometry B) Retorna 1 (VERDADEIRO) se a geometria A é "spatially within" a geometria B.Relate(b. geometry B) Retorna 1 (VERDADEIRO) se a geometria A "spatially contains" (contem espacialmente) a geometria B. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean (condição verdadeira ou falsa). Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean.mesmo como within(geometry. e não um inteiro. OGC SPEC s2. e não um inteiro.1.13.1.2 / / s2.3 .Intersects(g1.13.geometry) Retorna 1 (VERDADEIRO) se esta geometria "spatially touches" (toca espacialmente) de outra geometria.13.1.1.geometry) Retorna 1 (VERDADEIRO) se esta geometria "spatially crosses" de outras geometrias.1.2 / / s2. e não um inteiro. ' T*F**F * * * ') Overlaps(geometry.2 / / s2. ' T*T * * * * * * ') Within(geometry A.3 . OGC SPEC s2. OGC SPEC s2. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean (condição verdadeira ou falsa). g2)) Touches(geometry. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean.Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean (condição verdadeira ou falsa).1. e não um inteiro.a.13.(I(a) intersection I(b) = {empty set}) e (a intersection b) não vazio Crosses(geometry.a.1.13. OGC SPEC s2. e não um inteiro.1. e não um inteiro.1.2 / / s2.1. g2)-Not (Disjoint(g1.2 / / s2.13.3 Contains(geometry A.3 .Relate(b.1.1. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean.2 / / s2.3 .a.1.geometry) Intersects(geometry.1. OGC SPEC s2.geometry) .3 .1.geometry) Retorna 1 (VERDADEIRO) se Geometria é "spatially overlaps" (sobrepõe espacialmente).

14. OGC SPEC s2.1. e não um inteiro. Area(geometry) Retorna a área da geometria. sinônimo para length2d () OGC SPEC 2.1.1.2 / / s2.1 PointOnSurface(geometry) Retorna um ponto garantido estar na superfície Implementado usando GEOS OGC SPEC 3.2.geometry) Retorna o DE-9IM (dimensionally extended nine-intersection matrix) Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento Não em especificação OGC.5.1. O limite combinatorial é definido como descrito na seção 3.3.12.geometry) Relate(geometry.2.geometry) Relate(geometry. o limite e o exterior de duas geometrias como especificado pelos valores em umaintersectionPatternMatrix.1.1. seção 3. e conseqüentemente fecharam topologicamente.geometry.2 6. testando interesecção entre o interior.1. mas sub-entendido. veja s2.1.2. .1.13. Porque o resultado desta função é um fechamento.3.2 da OGC SPEC.NOT disjoint(geometry. intersectionPatternMatrix) Retorna 1 (VERDADEIRO) se esta geometria é espacialmente relatada para outra geometria. Computação será mais precisa que se executado pelo módulo de GEOS (ocorreu em tempo de compilação). Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean.NOT disjoint(geometry.13.Retorna 1 (VERDADEIRO) se a geometria é "spatially intersects". Length(geometry) O comprimento desta curva em sua referência espacial associada. Funções de Processamento da Geometria Centroid(geometry) Retorna o identificador de centro da geometria como um ponto.2 Boundary(geometry) Retorna o fechamento do limite combinatorial desta geometria. o limite resultante pode ser representado usando representação de primitivas geométricas como discutido na OGC SPEC. e não um inteiro.18.12. se é um polígono ou multi-polígono.3 .3 . OGC SPEC s2.2 / / s2. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: esta é a versão "allowable" (permissível) que retorna uma boolean.13.2 e 3.

1.1.1. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento OGC SPEC s2.double.3 Difference(geometry A.1.1.3 Intersection(geometry.3 ConvexHull(geometry) Retorna uma geometria que representa a casca convexa desta geometria. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento NOTA: este é renomeado de "union" porque união é uma palavra reservada SQL OGC SPEC s2. Executado pelo módulo de GEOS OGC SPECs2.Executado pelo módulo de GEOS OGC SPEC s2. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento OGC SPEC s2.3 SymDifference(geometry A.1. O terceiro parametro opcional atribui o número de segmentos usados para aproximar um quarto de círculo (padrão para 8).[integer]) Retorna uma geometria que represente todos os pontos que distanciam desta geometria é menor ou igual a distancia.3 GeomUnion(geometry.1. geometry B) Retorna uma geometria que representa a diferença simétrica atribuída do ponto da geometria A com geometria B.1.1 Buffer(geometry.1.1.3 GeomUnion(geometry set) Retorna uma geometria que representa a união atribuída do ponto de todas as geometrias em dado conjunto.1. Cálculos estão em um Spacial Reference System desta geometria.1. Executado pelo módulo de GEOS Não chame GeometryCollection no conjunto de argumento Nada definido em OGC SPEC . geometry B) Retorna uma geometria que representa a diferença atribuída do ponto da geometria A com geometria B.1. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento OGC SPEC s2. Executado pelo módulo de GEOS Não chame GeometryCollection como um argumento OGC SPEC s2.geometry) Retorna uma geometria que representa a união atribuída do ponto das geometrias.geometry) Retorna uma geometria que representa a interseção atribuída do ponto das Geometrias.1.

usa menos memória e mais tempo de processamento) 6. OGC SPEC s2. É utilizado em cursores binários para extrair dados do banco de dados sem convertê-la a uma representação string.1 . só que com "memory-friendly" (memória-amigável . Por exemplo: POLYGON(0 0. (MINX. MAXY).1.1. OGC SPEC s2.0 0).1 . (MAXX.A caixa delimitada mínima para esta geometria. OGC SPEC s2.'NDR') SRID(geometry) Retornos de números inteiros SRID do sistema de referência espacial da geometria.1. retornou como uma geometria. então esta geometria representa o conjunto de ponto vazio-i.retorna 0 para pontos. MINY).1. OGC SPEC s2.MemGeomUnion(geometry set) Mesmo que o anterior.1.1. dimension ----------1 Envelope(geometry) Retorna um polígono representando a caixa delimitada da geometria.1 AsBinary(geometry) Retorna a geometria no OGC formato "well-known-bynary".1 .1.1 1. Executado pelo módulo de GEOS OGC SPECs2. O polígono está definido por pontos de curva da caixa delimitada ((MINX. e a maior dimensão dos componentes de um GEOMETRYCOLLECTION.also see asBinary(<geometry>.1.0 1.'XDR') and asBinary(<geometry>. como intersecção própria ou tangência própria. MAXY).1.1. Assessores Geométricos AsText(geometry) Retorna a representação de Well-Known Text (WKT) da geometria.1.0 0) OGC SPEC s2.1.1. NOTA:PostGIS acrescentará uma coordenada de Zmin/Zmax também.GEOMETRYCOLLECTION (EMPTY). usando a codificação endian do usuário em que o banco de dados está funcionando. select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1.e.1 IsSimple(geometry) Retorna 1 (VERDADEIRO) se esta geometria não tem nenhum ponto geométrico anômalo.1 .1. MINY)). (MAXX. 1 para linhas. MINY). OGC SPEC s2.POINT(0 0)'). Se for verdade. que deve ser menor ou igual à dimensão coordenada.1 0. IsEmpty(geometry) Retorna 1 (VERDADEIRO) se esta geometria é a geometria vazia.4. (MINX.1 Dimension(geometry) A dimensão inerente deste objeto de geometria.1. 2 para polígonos.

NumPoints(geometry) Encontra e Retorna o número de pontos na primeira linha na geometria. Nota Indice is 1-based como especificações para OGC desde a versão 0.8.IsClosed(geometry) Retornos verdadeiros do começo de geometria e pontos finais são coincidentes. As versões anteriores executaram esta como 0-based preferivelmente. Nota Indice é 1-based como para especificações OGC desde a versão 0. Caso contrário. retorna NULO. . MULTILINESTRING ou MULTIPOLYGON. GeometryN(geometry. Retorna NULO se não há nenhum polígono na geometria.1. retorna NULO.5.integer) Retorna o enésimo ponto na primeira linha na geometria.int) Retorna a enésima geometria se a geometria é uma GEOMETRYCOLLECTION. PointN(geometry. NumInteriorRing(geometry) Sinomimo para NumInteriorRings (geometry). Retorna NULO se não há nenhum polígono na geometria ou o N dado é fora da escala(1 baseado). assim que fornecemos ambas as escritas. As versões anteriores implementaram esta como 0-based preferivelmente.0.8. InteriorRingN(geometry. IsRing(geometry) Retorna 1 (VERDADEIRO) se esta Curva está fechada (StartPoint () = EndPoint ()) e esta Curva é simples (não atravesse o mesmo ponto mais de uma vez).1 NumGeometries(geometry) Se geometria é um GEOMETRYCOLLECTION (ou MULTI *) retorna o número de geometrias. Caso contrário. Retorna NULO se não há nenhum polígono na geometria.0. Retorna NULO se não há nenhuma linha na geometria. NumInteriorRings(geometry) Retorna o número de anéis interiores do primeiro polígono na geometria. integer) Retorna o enésimo anel interior do polígono na geometria. Executado por GEOS OGC spec 2. Retorna NULO se não há nenhuma linha na geometria. MULTIPOINT. As especificações OpenGIS são ambiguas sobre o nome da função exata. ExteriorRing(geometry) Retorna o anel exterior do primeiro polígono na geometria.

2 . Retorna NULO se não há nenhum ponto na geometria. padroniza-se -1. StartPoint(geometry) Retorna o primeiro ponto da geometria de "LineString" como um ponto. but is listed here to complete the point coordinate extractor function list. Retorna NULO se não há nenhum ponto na geometria.2 . ou NULO se não disponível.6.1. OGC SPEC s2.1.Retorna o nome do sub-tipo imediato de geometria de qual neste caso de geometria é um membro. ' POLYGON '. OGC SPEC 3. etc.[<srid>]) Converte uma geometria de WKT com o dado SRID. O nome do sub-tipo imediato de geometria é devolvido como uma string. GeometryType(geometry) Retorna o tipo da geometria como uma string.2.[<srid>]) .EndPoint(geometry) Retorna o último ponto da geometria de "LineString" como um ponto.1. PointFromText(text. Caso SRID não der.a opção SRID está de conformidade. 6. M(geometry) Retorna uma coordenada M do ponto. Mostra um erro se o WKT não é um Ponto LineFromText(text.1 .6. OGC SPEC 3. A entrada deve ser um ponto. Construtores Geométricos GeomFromText(text. ' MULTIPOINT '. Eg: ' LINESTRING '. X(geometry) Encontra e retorna a coordenada de X do primeiro ponto na geometria. Z(geometry) Encontra e retorna a coordenada de Z do primeiro ponto na geometria. mas é listada aqui para completar a lista da função do extrator da coordenada do ponto. Y(geometry) Encontra e retorna a coordenada de Y do primeiro ponto na geometria.opção SRID está de conformidade. Nota This is not (yet) part of the OGC spec. Retorna NULO se não há nenhum ponto na geometria. Esta não é (ainda) parte das especificações de OGC.2.5.[<srid>]) Faz uma geometria de WKT com o dado SRID.

OGC SPEC 3. GeometryFromWKB(bytea. padroniza-se -1.2.6.2. Caso SRID não der.2 .6.2. Mostra um erro se o WKT não é um MULTIPOINT MLineFromText(text.opção SRID está de conformidade. OGC SPEC 3.Faz uma geometria de WKT com o dado SRID.[<srid>]) Faz uma geometria de WKT com o SRID dado.2 . Mostra um erro se o WKT não é um Polígono PolygonFromText(text.opção SRID está de conformidade.6.2.opção SRID está de conformidade.2 .2.6.opção SRID está de conformidade.2 .2. Caso SRID não der.[<srid>]) Faz uma geometria de WKB com o SRID dado.[<srid>]) Faz uma geometria de WKT com o SRID dado. OGC SPEC 3.[<srid>]) Faz uma geometria de WKT com o dado SRID.[<srid>]) Faz uma geometria de WKB com o SRID dado. Caso SRID não der. padroniza-se -1. padroniza-se -1.opção SRID está de conformidade. OGC SPEC 3. Mostra um erro se o WKT não é um MULTILINESTRING MPolyFromText(text.2 .[<srid>]) . PointFromWKB(bytea. padroniza-se -1.6. OGC SPEC 3. Caso SRID não der. padroniza-se -1. Caso SRID não der.opção SRID está de conformidade.opção SRID está de conformidade. Mostra um erro se o WKT não é um MULTIPOLYGON GeomCollFromText(text. OGC SPEC 3.[<srid>]) Faz uma Geometria de WKT com o SRID dado. Mostra um erro se o WKT não é um Polígono MPointFromText(text.[<srid>]) Faz uma geometria de WKT com o SRID dado.6. Mostra um erro se o WKT não é uma Linha LinestringFromText(text. Caso SRID não der. Mostra um erro se o WKT não é um GEOMETRYCOLLECTION GeomFromWKB(bytea.2.2 .2.2. Caso SRID não der. Mostra um erro se o WKT não é uma Linha PolyFromText(text. padroniza-se -1.[<srid>]) Faz uma Geometria de WKT com o SRID dado .6. OGC SPEC 3. Caso SRID não der. OGC SPEC 3.6.2 . padroniza-se -1.2 .2 .2 .[<srid>]) Faz uma geometria de WKT com o SRID dado.opção SRID está de conformidade.opção SRID está de conformidade.2.opção SRID está de conformidade. OGC SPEC 3. padroniza-se -1.6.6. padroniza-se -1. Caso SRID não der. padroniza-se -1. OGC SPEC 3. Caso SRID não der.

opção SRID está de conformidade.2 .6. Caso SRID não der.2 . Caso SRID não der.2 . usa BdMPolyFromText neste caso ou vê BuildArea() para um acesso específico de postgis.2 .2 .2. padroniza-se -1. integer SRID) Construir um Polygon dada uma coleção arbitrária de linhas fechadas como uma representação do texto MultiLineString.2.6.[<srid>]) Faz uma Geometria de WKB com o SRID dado.2 .[<srid>]) Faz uma geometria de WKB com o SRID dado.opção SRID está de conformidade.[<srid>]) Faz uma geometria de WKB com o SRID dado. Lança um erro se a saída for um MULTIPOLYGON. Mostra um erro se o WKT não é um GEOMETRYCOLLECTION BdPolyFromText(text WKT.2 .2.[<srid>]) Faz uma geometria de WKB com o SRID dado. Mostra um erro se o WKT não é um MULTILINESTRING MPolyFromWKB(bytea.opção SRID está de conformidade. padroniza-se -1. OGC SPEC 3.2.opção SRID está de conformidade. OGC SPEC 3.opção SRID está de conformidade. Mostra um erro se o WKT não é um MULTIPOLYGON GeomCollFromWKB(bytea. padroniza-se -1.2.6. Caso SRID não der.opção SRID está de conformidade. OGC SPEC 3. padroniza-se -1.6. Mostra um erro se o WKT não é um POLÍGONO PolygonFromWKB(bytea.[<srid>]) Faz uma geometria de WKB com o SRID dado. OGC SPEC 3.6. padroniza-se -1.opção SRID está de conformidade. Caso SRID não der. Lança um erro se WKT não for um MULTILINESTRING. OGC SPEC 3.[<srid>]) Faz uma geometria de WKB com o SRID dado. OGC SPEC 3.2.6. . padroniza-se -1.6.Faz uma geometria de WKB com o SRID dado.6.2. Caso SRID não der.2.2 . Mostra um erro se o WKT não é um MULTIPOINT MLineFromWKB(bytea.2.2 . Caso SRID não der. padroniza-se -1.opção SRID está de conformidade. Mostra um erro se o WKT não é um LINESTRING LinestringFromWKB(bytea. Caso SRID não der. Mostra um erro se o WKT não é um PONTO LineFromWKB(bytea. Caso SRID não der. OGC SPEC 3. Mostra um erro se o WKT não é um LINESTRING PolyFromWKB(bytea. MPointFromWKB(bytea.[<srid>]) Faz uma Geometria de WKB com o SRID dado. OGC SPEC 3.6. padroniza-se -1. padroniza-se -1.[<srid>]) Faz uma geometria de WKB com o SRID dado. Caso SRID não der. OGC SPEC 3.opção SRID está de conformidade.

<table_name>. Nota: Antes da versão 1. Nota: usa o current_schema() em instalações do pgsql schema-aware se o schema não for fornecido.0 postgis_lib_build_date() Retorna data da construção da biblioteca PostGIS.OGC SFSQL 1.2 Disponibilidade: 1.1 .requer GEOS >= 2. Nota: começando com PostgreSQL 8. Nota: usa o current_schema() em instalações do pgsql schema-aware se o schema não for fornecido.1.6. UpdateGeometrySRID([<schema_name>]. 6. <column_name>]) Atualiza estatisticas sobre tabelas espaciais para o uso pelo operador da seleção. Funções de Gerenciamento DropGeometryTable([<schema_name>]. Extensões de Postgis 6. integer SRID) Construir um MultiPolygon dada uma coleção arbitrária de linha fechada como uma respresentação do texto de MultiLineString.1. assim possivelmente não estará retornando a informação exata (em caso dos melhoramentos incompletos do banco de dados). postgis_version() Retorna o número de versão de PostGIS e opções de tempo de compilação. Força saída MULTIPOLYGON mesmo quando o resultado é composto somente por um único POLYGON.0. postgis_lib_version() Retorna o número de versão da biblioteca de PostGIS.1.3. <table_name>) Destrói uma tabela e todas suas referências nas colunas geométricas.6. Disponível: 0. BdMPolyFromText(text WKT.9.1 .1. Disponível: 1.2. OGC SFSQL 1.0.3.0 que analisando estatisticas é automaticamente executado rodando "VACUUM ANALYZE". Lança um erro se WKT não for um MULTILINESTRING.2 Disponibilidade: 1.0 esta era uma função procedural. update_geometry_stats([<table_name>.2. <srid>) Atualiza o SRID de todas as características em uma coluna da geometria que atualiza confinamente e referência nas colunas geométricas.0. Precisará também rodar o "VACUUM ANALYZE [ table_name ] [ column_name ]" para as estatisticas que recolhem o processo para estar completo.2.1. <column_name>.0 .1. usa BdPolyFromText se você estiver certo que um único POLYGON resultará da operação ou veja BuildArea() para um acesso específico de postgis.0RC1 postgis_script_build_date() .requer GEOS >= 2.2.0 .

9.9. Disponibilidade: 0. A &> B O operador "&>" retorna verdadeiro se a caixa delimitada sobrepor o próprio A ou está à direita da caixa delimitada do próprio B. Disponível: 0.0 postgis_scripts_released() Retorna o número da versão do script de lwpostgis. Disponível: 1.0 postgis_proj_version() Retorna o número da versão da biblioteca PROJ4 ou NULo se o suporte a PROJ4 não for permitida. Operadores A &< B O operador "&<" retorna verdadeiro se a caixa delimitada sobrepor o próprio A ou está à esquerda da caixa delimitada do próprio B.9.0 postgis_uses_stats() Retorna verdadeiro se o uso do STATS for permitido.0.2. retorna o mesmo valor do postgis_lib_version().0RC1 postgis_scripts_installed() Retorna a versão do script postgis instalado neste banco de dados. Disponível: 0. Nota: Começar com versão 1.2.9.0 esta função.0 postgis_geos_version() Retorna o número da versão da biblioteca de GEOS ou NULO se o suporte a GEOS não for permitida.9.0 6. Nota: Se a saída desta função não combinasse com a saída de postgis_scripts_released() provavelmente faltou promover corretamente um banco de dados existente. Disponível: 0.1.caso contrário retorna falso. Disponível: 0.9.Retorna data da construção de scripts PostGIS.0 postgis_full_version() Retorna a versão postgis completa e constrói informações de configuração. A >> B . Disponível: 0.sql liberado com o instalado na biblioteca do postgis. Veja a seção Upgrading para mais informações. A << B O operador "<<" retorna verdadeiro se a caixa delimitada for estritamente à esquerda da caixa delimitada do próprio B. Conservar para a compatibilidade inversa.

Testa igualdade geométrica atual de duas características. mas menos exato. o operador retorna verdadeiro. Veja a explicação de esferóides dados para length_spheroid(). distance_spheroid(point. 6. A@B O operador "@ " retorna verdadeiro se a caixa delimitada do próprio A estiver completamente contido na caixa delimitada do próprio B. A~B O operador "~" retorna verdadeiro se a caixa delimitada estiver completamente contida na caixa delimitada do próprio B. A |&> B O operador "|&>" returna verdadeiro se a caixa delimitada de A for acima da caixa delimitada do próprio B. Atualmente só se implementou para pontos. Usa uma terra e um raio esféricos de 6370986 medidores. A <<| B O operador "<<|" retorna verdadeiro se a caixa delimitada de A for estritamente abaixo da caixa delimitada do próprio B. se é um polígono ou multi-polígono. A && B O operador "&& " é o operador sobreposto. Assim. A |>> B O operador "|>>" retorna verdadeiro se a caixa delimitada A for esttritamente acima da caixa delimitada do próprio B. Mais rapidamente do que distance_spheroid(). Se a caixa delimitada do prórpio A sobrepor a caixa delimitada do próprio B. A &<| B O operador "&<|" returna verdadeiro se a caixa delimitada do próprio A for abaixo da caixa delimitada do próprio B. se A e B são de mesma característica.2. point.O operador ">>" retorna verdadeiro se o salto de caixa do próprio A for estritamente à direita do salto de caixa do próprio B.3. Funções de Medida area2d(geometry) Retorna a área da geometria. spheroid) Retorna a distância linear entre dois pontos latitude/longitude dando um esferóide particular. . o operador retorna verdadeiro. distance_sphere(point. Atualmente só se implementou para pontos. point) Retorna a distância linear nos medidores entre dois pontos de lat/lon. A ~= B O operador "~ = " é o operador "same as".

perimeter3d(geometry) Retorna o perímetro 3-dimensional da geometria.<INVERSE FLATTENING>] Outra forma: SPHEROID["GRS_1980". pegando a elevação dentro da conta.2. length_spheroid(geometry.298.. se é um polígono ou multi-polígono. geometry) Retorna a distância menor entre duas geometrias.1. length3d(geometry) Retorna o comprimento 3-dimensional da geometria se é um linestring ou multi-linestring.spheroid) Calcula o comprimento de uma geometria em um ellipsoid. É exatamente igual a length_spheroid excluindo as coordenadas verticais (expressado nas mesmas unidades como os spheroid axes) são usados para calcular a soma de deslocamento da distância extra vertical. Saídas Geométricas . length3d_spheroid(geometry. geometry_column. Disponibilidade: 1.257222101] Um exemplo de cálculo poderia ser: SELECT length_spheroid( 6378137.257222101]' ) FROM geometry_table. O valor do retorno está nos radianos.<SEMI-MAJOR AXIS>.length2d(geometry) Retorna o comprimento 2-dimensional da geometria se é um linestring ou multi-linestring. distance(geometry. se é um polígono ou multi-polígono.6378137.spheroid) Calcula o comprimento de uma geometria em um ellipsoid.298. azimuth(geometry.4. se é um polígono ou multi-polígono. É utilizada se as coordenadas da geometria está em latitude/longitude e um comprimento é desejado sem reprojecções O ellipsoid é um tipo de banco de dados separado e pode ser construído como segue: SPHEROID[<NAME>. 'SPHEROID["GRS_1980".linestring) Retorna a distância maior entre duas linhas de string. geometry) Retorna o azimuth do segmento definido pelo dado geometrias Point ou o NULO. se os dois pontos forem coincidentes. perimeter2d(geometry) Retorna o perímetro 2-dimensional da geometria.0 6. max_distance(linestring. perimeter(geometry) Retorna o perímetro da geometria.

<URT>) Cria um BOX3D definido dados os pontos geométricos. Construtores Geométricos GeomFromEWKT(text) Faz a geometria de EWKT. Usa 1 como segundo argumento e tem o trajeto dos dados implementados nos termos de movimentos relativos. O segundo argumento pode ser usado para reduzir o número máximo de dígitos significativos usados na saída ( defaults para 15). AsGML(geometry. usando "little-endian" (NDR) ou big-endian (XDR) . É utilizado em cursores binários para extrair dados do banco de dados sem convertê-la a uma representação string. [precision]) Retorna a geometria como um dado do trajeto de SVG. o default (ou 0) usa movimentos absolutos. AsKML(geometry. . <y>. <UR>) Cria um BOX2D definido dados os pontos geométricos. [precision]) Retorna a geometria como um elemento KML. MakeBox2D(<LL>.2. x/y quando 'rel' é 1. O terceiro argumento pode ser usado para reduzir o número máximo dos dígitos decimais usados na saída ("default" para 15). <y>. AsSVG(geometry. 6. <m>) Cria um ponto 3dm geométrico. MakePoint(<x>. Pontos de geometrias serão rendidos como cx/cy quando arg 'rel' é 0. AsEWKT(geometry) Retorna uma Geometria em formato EWKT (como texto). GeomFromEWKB(bytea) Faz a geometria de EWKB.3dz or 4d geométrico. MakeBox3D(<LLB>. O segundo argumento pode ser usado para reduzir o número máximo dos dígitos significativos usados na saída (defaults para 15). [<m>]) Cria um ponto 2d. [precision]) Retorna a geometria como um elemento GML. AsEWKB(geometry. MakePointM(<x>. {'NDR'|'XDR'}) Retorna uma geometria em formato EWKB (como o "bytea") usando outra codificação "little-endian" (NDR) ou "big-endian". [<z>].{'NDR'|'XDR'}) Retorna a geometria no formato OGC "well-known-bynary". [rel].AsBinary(geometry.5.

0. "SELECT COLLECT(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN" retornará um GEOMETRYCOLLECTION separado para cada valor distinto de ATTRCOLUMN.0. Requer PostgreSQL 7.3 ou superiores. Cria um GeometryCollection que contem os polígonos possíveis formados de componentes de linhas de trabalho de um conjunto de geometrias. Polygonize(geometry set) Agregado. BuildArea(geometry) Cria uma geometria areal formada pelo componente de linha de trabalho da geometria dada. Quando a entrada geometrica é um tipo simples (POINT. [linestring[]]) Cria um polígono formado pela proteção dada e pelo conjunto de regras. geometry) Cria um Linestring dados dois pontos geométricos. NULO é retornado. O tipo de saída pode ser um MULTI* ou um GEOMETRYCOLLECTION. formada por uma geometria (geom) e por um conjunto de inteiros (path).0RC1.0. na mesma maneira de funções de sum() e de mean(). Veja também BdPolyFromText e BdMPolyFromText . O tipo do retorno pode ser um Polygon ou um MultiPolygon. Poderá construir um conjunto de geometria usando Accum. sendo uma coleção de duas saídas geométricas.requer GEOS >= 2. Disponível 1. e o caminho expressará a posição do componente dentro da coleção.0. Se a entrada das linhas de trabalho não forem forma de polígonos. Para o exemplo. geometry) Esta função retorna uma geometria.1.1.1. Quando a entrada geométrica é uma coleção ou multi retornará um registro para cada um dos componentes da coleção. MakePolygon(linestring. MakeLine(geometry. Isso significa que operadores em listas de dados. Disponibilidade: PostGIS 1. dependendo da entrada. Disponibilidade: 1.envoltórios para esta função com padrão de interface OGC. . Poderá usar um subselect para ordenar os pontos antes de alimentá-los a este agregado.POLYGON) um único registro será retornado com um conjunto de caminhos vazios e a entrada geométrica como geom.0 . Collect(geometry.requer GEOS >= 2.LINESTRING. Collect(geometry set) Esta função retorna um GEOMETRYCOLLECTION ou um objeto MULTI de um conjunto de geometrias. LineFromMultiPoint(multipoint) Cria um LineString de uma geometria MultiPoint. Retorna um conjunto de linhas geometry_dump. Dump(geometry) Esta é uma função de um conjunto de retornos (set-returning function-SRF). A função collect() é uma função "agregada" na terminologia de PostgreSQL.0RC1 .MakeLine(geometry set) Cria um Linestring de um conjunto de pontos de geometrias. Entradas geométricas devem ser LINESTRINGS fechadas (veja IsClosed e GeometryType).

2. DropBBOX(geometry) Destrói a caixa delimitada da geometria. Index is 0-based. contem um único elemento: 0 para o escudo. Disponível: 1.0 SetPoint(linestring. Disponibilidade: PostGIS 1. O índice é 0-based. formado por uma geometria (geom) e por uma conjunto de inteiros (path).3 ou superiores.DumpRings(geometry) Esta é uma função de um conjunto de retornos (set-returning function-SRF). RemovePoint(linestring. Requer PostgreSQL 7. O campo “path” carrega o índice do anel do polígono. Force_2d(geometry) Força as geometrias dentro de um "2-dimensional mode" (modo bi-dimensional) de forma que todas as representações de saída só terão as coordenadas X e Y. É utilizado para simplificar a respresentação de WKB. offset) Remove ponto de uma linestring.3. point) Replace point N of linestring with given point. Retorna um conjunto de linhas geometry_dump.1. mas aumentará o tamanho da geometria.1.0 Force_collection(geometry) Converte a geometria em um GEOMETRYCOLLECTION.1. Substitue o ponto N de linestring com o ponto dado. N. mas as caixa delimitada baseada em seleções mais lentas. Isto fará na caixa delimitada baseada em seleções mais rápidas. Offset é 0-based. O terceiro . Editores Geométricos AddBBOX(geometry) Adiciona caixa delimitada à geometria.6. 6. Force_3d(geometry) Força as geometrias dentro de um modo XYZ. Force_3dz(geometry). AddPoint(linestring. Isto reduz o tamanho da geometria. Force_3dm(geometry) (índice 0-based). [<position>]) Adiciona um ponto a um LineString na posição <pos> parâmetro pode ser omitido ou ajustado a -1. número do furo para regras. point. O campo do “geom” contem o anel correspondente como um polígono. Disponível: 1. É utilizado para forçar a saída OGC-compliant (desde que OGC especifica somente geometrias 2-D).

yoff. float8. b. float8) Aplica uma transformação 2d affine para a geometria. float8. e. h. esta retornará inalterada. d. i. float8.float8.1. float8. float8.integer) Retorna uma nova geometria com suas coordenadas transformadas ao SRID referenciado pelo parâmetro inteiro. float8. b. float8. c. Force_4d(geometry) Força as geometrias dentro de um modo XYZM. Disponível: 1.Força as geometrias dentro de um modo XYM. Translate(geometry. g. d. A chamada Affine(geom. float8. float8. float8. xoff. float8. a. Transform(geometry. Affine(geometry. a. Multi(geometry) Retorna a geometria como uma geometria MULTI*. yoff) representa a matriz da transformação / a b 0 xoff \ / a b xoff \ | d e 0 yoff | rsp.2. O destino SRID tem que existir na tabela SPATIAL_REF_SYS.2. Disponível: 1. xoff. Affine(geometry. e. | d e yoff | | 0 0 1 0 | \ 0 0 1 / \ 0 0 0 1 / e os vertices são transformados como segue: x' = a*x + b*y + xoff y' = d*x + e*y + yoff z' = z Este método é um subcaso do método 3D acima. float8. float8) Aplica uma trasformação 3d affine para a geometria.float8. float8. float8. A chamada Affine(geom. zoff) representa a matriz da transformação / a b c xoff \ | d e f yoff | | g h i zoff | \ 0 0 0 1 / e os vertices são 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 funções de tradução / escala abaixo são expressados através de uma transformação affine. f. float8. Se a geometria já é uma MULTI*.1.float8) . float8.

SnapToGrid(geometry. tolerance) Retorna uma versão "simplified" da geometria dada usando o algoritmo de DouglasPeuker. Y*YFactor.Traduz a geometria a um novo local que usa os parâmetros numéricos como recompensa. YFactor.Y. Usando transscale(geom. Disponível: 1. float8. 0. YFactor) internally calls affine(geom. traduz a geometria usando os primeiros dois floats. X*XFactor. Desta forma. Using transscale(geom. 1. 0. Seguir a regra right-hand. originX. Remove os pontos consecutivos que caem na mesma célula. 0. 0. sizeY). float8). 0. then scales it using the second two floats.1. Nota . Desde que a simplificação ocorra em uma base "object-by-object" e você pode também alimentar um GeometryCollection a esta função.0. translates the geometry using the first two floats. float8. Gira a geometria em torno da linha central de Z. X. As geometrias derrubadas em uma coleção são desfeitas dela.1. float8. Isto é: scale (geom. Disponível: 1. Primeiro. Y. size) Pega todos os pontos de entrada da geometria à definição de grade por seu tamanho de origem e de célula. Y*YFactor. 0). fará realmente algo com (multi)linhas e (multi)polígonos. se os pontos da saída não forem bastante para definir uma geometria do tipo dado.2.Z).1. X ou Y por dado ângulo dado nos radianos. Reverse(geometry) Retorna a geometria com a ordem do vértice invertida. XFactor. sizeX. 0. 0. multiplicando as ordenadas com os parâmetros. Scale(geometry. 0. 0. float8). 0. 0. 1. Zfactor). X*XFactor. originY. XFactor. RotateX(geometry. Disponível: 1. float8. TransScale(geometry. working in 2D only. (veja IsSimple) SnapToGrid(geometry. 0. float8). XFactor. usando os segundos dois floats.X. sizeX. YFactor. XFactor. a seguir escala-o. YFactor) internamente chama affine(geom. X. float8. SnapToGrid(geometry. Xfactor. RotateY(geometry. Yfactor. Y. Note que a geometria retornada pode perder sua simplicidade. ForceRHR(geometry) Força polígono da coleção a obedecer Right-Hand-Rule.0 RotateZ(geometry. trabalhando somente em 2D. float8) Escala a geometria a um novo tamanho. mas você pode estar seguro de chama-lo com qualquer tipo da geometria. float8) First. 0). retornando eventualmente o NULO. Isto é: translate(geom. sizeY). Simplify(geometry.

start. sizeZ.0 a geometria retornada terá mesmo dimensionalidade que a entrada. sizeY.1 esta função tambem interpola valores M e Z (quando presente). Usar a versão pegando um segundo argumento de geometria para definir todas as dimensões da grade. geometry.requer GEOS >= 2.A geometria retornada pode perder sua simplicidade (veja IsSimple). Disponível: 0. Especificar 0 como tamanho para alguma dimensão que você não quiser pegar para uma grade. maxlength) Retorna uma geometria modificada que não tem nenhum segmento mais por muito tempo então à distância dada.0RC1 SnapToGrid(geometry.1. Referência Linear line_interpolate_point(linestring. Os pontos interpolados terão os valores de Z e de M (se necessário) ajustados a 0.1.0 6. LineMerge(geometry) Retorna um (ou conjunto) LineString(s) formado por unindo a linha de trabalho (linework) constituinte da entrada.1. end) . O primeiro argumento deve ser um LINESTRING. sizeM) Pega todos os pontos de entrada da geometria a definição de grade por seu tamanho de origem (o segundo argumento. location) Retorna um ponto interpolado ao longo de uma linha.0 Segmentize(geometry.0. sizeX. deve ser um ponto) e por seu tamanho de célula. Disponível: 1. Nota Antes da liberação 1. A computação da distância é executada em somente em 2d. quando que as liberações anteriores ajustam-nas para 0. Nota Desde a liberação 1. Começando por 1. Veja line_locate_point() para computar a posição da linha o mais próximo a um Point.1.0 esta função retornou sempre uma geometria 2d .8.1.2 line_substring(linestring.7.2.0 . Disponível: 1. O segundo argumento é um float8 entre 0 e 1 representando fração do total 2d length o ponto tem que ser encontrado.1. Disponível: 1. uma com dimensão mais elevada valor não tocado.0.

Disponível: 1.1. Point) Retorna um float entre 0 e 1 que representam a posição do ponto o mais próximo em LineString para o dado Point.Text for Continuation CD Editing Meeting Disponível: 1. Semântica é especificado por: ISO/IEC CD 13249-3:200x(E) .1. Nota Desde a liberação 1. este é equivalente ao line_interpolate_point(). Você pode usar a posição retornada para extrair um Point (line_interpolate_point) ou um substring (line_substring).Text for Continuation CD Editing Meeting Disponível: 1. box3d(geometry) .1 esta função também interpola valores M e Z (quando presente). float8) Retorna um valor derivado da coleção da geometria com elementos que combinam a medida especificada. float8) Retorna um valor derivado da coleção da geometria com elementos que combinam a escala especificada das medidas inclusive.0 locate_between_measures(geometry. Semântica é especificado por: ISO/IEC CD 13249-3:200x(E) .8.1. float8. Variado Summary(geometry) Retorna um resumo de texto dos conteúdos da geometria. Veja line_locate_point() para computar a posição da linha o mais próximo a um ponto.2.1.Retorna um linestring sendo um substring da entrada uma que começa e que termina nas frações do total 2d length. Se o 'start' e 'end' tiverem o mesmo valor. Os elementos Polygonal não são suportados. quando que as liberações anteriores ajustam-nas aos valores não especificados. box2d(geometry) Retorna um BOX2D representando as extensões máximas da geometria.1.0 6.0 locate_along_measure(geometry. Disponível: 1. Os elementos Polygonal não são suportados. como uma fração do total tamanho 2d line. Os segundo e terceiro argumentos são os valores float8 entre 0 e 1.0 line_locate_point(LineString.

retorna o número de anéis. 1=3dm. fazem o mesmo caminho que as funções sum() e mean(). HasBBOX(geometry) Retorna VERDADEIRO se o bbox desta geometria é armazenada. zmflag(geometry) Returna ZM (semântica da dimensão) flag de geometrias como um inteiro. esta função não trabalhará tampouco.Usa addBBOX() e dropBBOX() para armazenamento. por uma quantidade especificada no segundo argumento. O estimado é feito de estatisticas de colunas geométricas. ndims(geometry) Retorna o número das dimensões da geometria como um inteiro. find_srid(varchar. <tabela>. estimated_extent([schema]. extent(geometry set) A função extent() é uma função "aggregate" (agregada) na terminologia de PostgreSQL. FALSO caso contrário.0 são recolhidos por VACUUM ANALYZE e a extensão resultante será aproximadamente 95% do real. <coluna>) e a função retorna o inteiro SRID da coluna especificada procurando através da tabela GEOMETRY_COLUMNS. Se a coluna da geometria não for adicionada corretamente com a função de AddGeometryColumns().varchar.Retorna um BOX3D representando as extensões máximas da geometria.0 são recolhidos por update_geometry_stats() e a extensão resultante será exata. isvalid(geometry) Retorna verdadeiro se esta geometria for válida. geocolumn) Retorna a extensão estimada da tabela espacial dada. . para adicionar um filtro do índice à seleção.Valores são: 0=2d. "SELECT EXTENT(GEOM) FROM GEOMTABLE GROUP BY CATEGORY" retornará um resultado de extensão para cada categoria. O "schema" atual será usado se não especificado. float) Esta função retorna uma caixa delimitada expandida em todos os sentidos da caixa delimitada da entrada da geometria.varchar) A sintaxe é find_srid(<db/schema>. Muito usada para selecionar distance() . table.3 ou 4. expand(geometry. Para estatística PostgreSQL>=8. 3=4d. Por exemplo. npoints(geometry) Retorna o número de pontos na geometria.0. Semelhantemente. Valores são: 2. 2=3dz. Isso significa que os operadores em listas de dados. nrings(geometry) Se a geometria for um polígono ou um multi-polígono.0. Para estatística PostgreSQL<8. "SELECT EXTENT(GEOM) FROM GEOMTABLE" retornará um BOX3D dando a extensão máxima de todas as características na tabela.

<radius>).float.float. Chamá-la duas vezes é inofensivo.mem_size(geometry) Retorna a quantia de espaços (em bytes) encontrados na geometria. Retorna verdadeiro se a geometria é um ponto e está dentro do círculo.1. sendo autorizada. Suporte a grandes transações (Long Transactions) Este módulo e funções associadas de pl/pgsql foram implementados para fornecer suporte a grandes bloqueios requerido por especificação Web Feature Service.float) A sintaxe para esta função é point_inside_circle (<geometry>. Esta função cria as tabelas requeridas dos metadados. Esta função remove as tabelas metadados de suporte a transações grandes. <table>. numb_sub_objects(geometry) Retorna o número dos objetos armazenados na geometria. 6. . Identifica linhas usando a coluna <rowid_col>. e apaga todos os gatilhos às tabelas lock-checked. retorna falso. xmax(box3d) ymax(box3d) zmax(box3d) Retorna o máximo solicitado de uma caixa delimitada. necessita ser chamada uma vez antes de usar as outras funções nesta seção. Nota Os usuários devem usar serializable transaction level que caso contrário o mecanismo de bloqueio quebraria. <circle_center_x>. xmin(box3d) ymin(box3d) zmin(box3d) Retorna o mínimo solicitado de uma caixa delimitada. Constrói um conjunto de geometrias. EnableLongTransactions() Permite suporte a transações grandes. <circle_center_y>. Isto é utilizado para MULTIgeometrias e GEOMETRYCOLLECTIONs.1.3 DisableLongTransactions() Desabilita suporte a transações grandes. Caso contrário. point_inside_circle(geometry. Disponível: 1. Accum(geometry set) Agregado.2. Disponível: 1.9. <rowid_col>) Verifica atualizações e deleções das linhas em dada tabela.3 CheckAuth([<schema>].

Retorna 1 se o bloqueio for assinado.5.1.2.3 6. ST_Area Return the area measurement of an ST_Surface or ST_MultiSurface value. o suporte cheio para geometrias curvadas para muitas funções não pode estar no lugar. Funções SQL-MM Esta é uma listagem das funções definidas SQL-MM que PostGIS suporta atualmente.0. Retorna o número dos bloqueios liberados. Disponível: 1. 9. Estes desvios serão notados. <expires> é um timestamp padronizado para now() +1hour. [<expires>]) Ajuste de bloqueio/autorização para linha específica na tabela <authid> é um valor de texto. Disponível: 1.1. <table>. 0 caso contrário (já bloqueado pelo outro auth) Disponível: 1. these functions have been implemented by wrapping existing PostGIS functions. estas funções foram implementadas envolvendo funções existentes no PostGIS.3 UnlockRows(<authid>) Remove todos os bloqueios carregados por id de autorização especificada.0. Até à data da versão 1. PostGIS usa um padrão SRID de -1. Nota SQL-MM define o padrão SRID de todos construtores de geometrias como 0. As a result.2.1.Disponível: 1.3 LockRow([<schema>]. . full support for curved geometries may not be in place for many functions. Retorna a medida da área de um valor ST_Surface ou ST_MultiSurface.3. Em conseqüência.1.3 ST_AsBinary Retorna a representação binária well-known de um valor ST_Geometry. <rowid>.1. <authid>.3 AddAuth(<authid>) Adiciona um símbolo da autorização a ser usado na transação atual. SQL-MM 3: 8.2. As of version 1. As implementações destas funções seguem a implementação ArcSDE e assim desviar-se um pouco das especificações.

9. SQL-MM 3: 5. SQL-MM 3: 8.1. SQL-MM 3: 5.1. SQL-MM 3: 5. SQL-MM 3: 5.5.16 ST_CoordDim Returna a dimensão da coordenada do valor ST_Geometry. SQL-MM 3: 5.1.14 ST_Buffer Retorna um buffer em torno do valor ST_Geometry.31 ST_ConvexHull Retorna o hull convexo do valor ST_Geometry.1. SQL-MM 3: 5.1.17 ST_Centroid Retorna centroid matemático do valor ST_Surface ou ST_MultiSurface.25 ST_Boundary Retorna o limite do valor ST_Geometry.SQL-MM 3: 5.1.4.1.29 ST_Difference Returna um valor ST_Geometry que representa a diferença do conjunto de pontos de dois valores ST_Geometry.20 ST_Dimension . SQL-MM 3: 5.3 ST_Crosses Testa se um valor ST_Geometry espacialmente atravessa outro valor ST_Geometry.37 ST_AsText Retorna a representação de texto well-known de um valor ST_Geometry.1.5 ST_Contains Testa se um valor ST_Geometry espacialmente contem um outro valor ST_Geometry.1.1. SQL-MM 3: 5.

SQL-MM 3: 8.5 ST_GeometryType Returna o tipo geométrico do valor ST_Geometry. SQL-MM 3: 5.3 ST_GeometryN Returna a indicação do valor ST_Geometry de um ST_GeomCollection.15 ST_Equals Testa se um valor ST_Geometry é espacialmente igual a outro valor ST_Geometry. SQL-MM 3: 5.24 ST_ExteriorRing Returna o anel exterior de um ST_Surface. SQL-MM 3: 9.1. SQL-MM 3: 5.3.4 ST_Envelope Returna o retângulo delimitado para o valor ST_Geometry.4 ST_GeomFromText Returna uma especificação do valor ST_Geometry.1.2.3. SQL-MM 3: 7.23 ST_EndPoint Returna um valor ST_Point que é o ponto final de um valor ST_Curve. SQL-MM 3: 5.1.1. SQL-MM 3: 5. SQL-MM 3: 5.2 ST_Disjoint Testa se um valor ST_Geometry é espacialmente desconecta de outro valor ST_Geometry.1.Returna a dimensão do valor ST_Geometry.26 ST_Distance Returna a distancia entre duas geometrias.1.1.40 . SQL-MM 3: 5.1. 8.1.

quando PostGIS returna NULO.1.27 ST_IsClosed Testa se um valor ST_Curve ou um valor ST_MultiCurve está fechado.ST_GeomFromWKB Returna uma especificação do valor ST_Geometry.5 ST_Intersection Returna um valor ST_Geometry que representa a interseção do conjunto de pontos de dois valores ST_Geometry.1. SQL-MM 3: 5. quando PostGIS returna NULO.5.2. quando PostGIS returna NULO. .6.1. 9. SQL-MM 3: 5.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. SQL-MM 3: 5. Nota SQL-MM define o resultado de ST_IsRing(NULL) para ser 0. Nota SQL-MM define o resultado de ST_IsClosed(NULL) para ser 0.3.7 ST_IsRing Testa se um valor ST_Curve é um anel.1. SQL-MM 3: 7. SQL-MM 3: 5. 8.3.1.18 ST_Intersects Testa se um valor ST_Geometry intercepta espacialmente outro valor ST_Geometry. SQL-MM 3: 8.41 ST_InteriorRingN Returna o anel interior especificado de um valor ST_Surface.

SQL-MM 3: 7. SQL-MM 3: 5. SQL-MM 3: 7.2. qunado PostGIS returna NULO.3.6 ST_IsSimple Testa se um valor ST_Geometry não tem pontos geométricos anomalos.4.4 ST_LineFromText Returna uma especificação do valor ST_LineString.2. Nota SQL-MM define o resultado de ST_IsValid(NULL) para ser 0. SQL-MM 3: 5.SQL-MM 3: 7.1.8 ST_LineFromWKB Returna uma especificação de valor ST_LineString.1.9 ST_Length Returna a medida do comprimento de um valor ST_Curve ou um valor ST_MultiCurve. Nota SQL-MM define o resultado de ST_IsSimple(NULL) para ser 0. quando PostGIS returna NULO.4.1.9 ST_MLineFromText Returna uma espeficiação de valor ST_MultiLineString. como própria interseção ou própria tangência.8 ST_IsValid Testa se um valor ST_Geometry está bem formado. SQL-MM 3: 9. SQL-MM 3: 9.1.2.5 . 9. SQL-MM 3: 7. QL-MM define o resultado de ST_IsValid(NULL) para ser 1.4 ST_MLineFromWKB Returna uma especificação de valor ST_MultiLineString.

43 ST_Overlaps Testa se um valor ST_Geometry sobrepõe camadas espacialmente a outro valor ST_Geometry. .4 ST_MPolyFromWKB Returna uma especificação de valor ST_MultiPolygon.htm#ST_OrderingEquals SQL-MM 3: 5. Nota Esta implementação é feita como especificação ArcSDE SQL melhor que SQL-MM. SQL-MM 3: 9. SQL-MM 3: 7. SQL-MM 3: 9.2.com/arcsde/9.6.1.4 ST_OrderingEquals ST_OrderingEquals compara duas geometrias e t (TRUE) se as geometrias são iguais e as coordenadas estão na mesma ordem. caso contrário retorna f (FALSE). SQL-MM 3: 9.4 ST_NumInteriorRing Returna o número de asnéis interiores em um ST_Surface. SQL-MM 3: 9.5 ST_NumPoints Returna o número de pontos em um valor ST_LineString ou um valor ST_CircularString.4 ST_MPointFromWKB Returna uma especificação de valor ST_MultiPoint.1/sql_api/sqlapi3. SQL-MM 3: 9.ST_MPointFromText Returna uma especificação de valor ST_MultiPoint.5 ST_NumGeometries Returna o número de geometrias em um ST_GeomCollection.6.2.2.5 ST_MPolyFromText Returna uma especificação de valor ST_MultiPolygon.2.esri. SQL-MM 3: 8. http:// edndoc.1.

3.1.3.5 ST_PointOnSurface Returna um valor ST_Point garantido para interseção espacialmente do valor ST_Surface ou ST_MultiSurface.2 .7 ST_Polygon Returna uma construção de polígono de uma linestring especificada e SRID.1.1. SQL-MM 3: 6.5.3.3. 9.5. SQL-MM 3: 8.8 ST_PointFromWKB Returna uma especificação de valor ST_Point.2 ST_PointFromText Returna uma especificação de valor ST_Point.2. SQL-MM 3: 8.4 ST_Point Returna um ST_Point com os valores de coordenadas dadas. SQL-MM 3: 6.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.9 ST_PointN Returna uma especificação de valor ST_Point em um ST_LineString ou ST_CircularString.6 ST_PolyFromText Returna uma especificação de valor ST_Polygon.5. SQL-MM 3: 6.1. 7.1.6 ST_PolyFromWKB Returna uma especificação de valor ST_Polygon. SQL-MM 3: 7. 9.3.5. SQL-MM 3: 8. SQL-MM 3: 8. SQL-MM 3: 8.

19 ST_Within Testa se um valor ST_Geometry é espacialmente dentro de outro valor ST_Geometry.30 ST_WKBToSQL Returna um valor ST_Geometry para uma dada representação binária well-known.1. SQL-MM 3: 5.1.5 ST_StartPoint Returna um valor ST_Point que é o ponto inicial de um valor ST_Curve.36 ST_WKTToSQL . SQL-MM 3: 5. SQL-MM 3: 5.25 ST_SRID Returna o identificador de sistema de referência espacial do valor ST_Geometry.1. SQL-MM 3: 5. SQL-MM 3: 5.1.ST_Relate Testa se um valor ST_Geometry é relatado espacialmente à outro valor ST_Geometry.1.21 ST_Touches Testa se um valor ST_Geometry tocado espacialmente por outro valor ST_Geometry.1.1.6 ST_Union Returna um valor ST_Geometry que representa a união de um conjunto de pontos de dois valores ST_Geometry.1.1. SQL-MM 3: 7. SQL-MM 3: 5. SQL-MM 3: 5. SQL-MM 3: 5.3 ST_SymDifference Returna um valor ST_Geometry que representa a diferença simétrica de um conjunto de pontos de dois valores ST_Geometry.28 ST_Transform Returna um valor ST_Geometry transformado para sistema de referência espacial especificado.

3 ST_Y Returna o valor da coordenada y de um valoST_Point.1. SQL-MM 3: 5. SE_LocateBetween Returna um valor de coleção de geometria derivada com escala especificada das medidas inclusive.Returna um valor ST_Geometry para uma dada representação de texto well-known. SE_IsMeasured Testa se um valor de geometria tem valores de coordenada m. SE_LocateAlong Returna um valor de coleção de geometria derivada com elementos que combinam a medida especificada. SQL-MM 3: 6.4 6. SE_Z Returna o valor da coordenada z de um valor ST_Point.1. SQL-MM 3: 6. contrário.1.34 ST_X Returna o valor da coordenada x de um valor ST_Point. caso elementos que combinam a .4. Funções ArcSDE As funções adicionais foram acrescidas para melhorar o suporte a uma interface de estilo ArcSDE. SE_Is3d Testa se um valor de geometria tem valores de coordenada z. SE_EnvelopesIntersect Returna t (TRUE) se os envelopes de duas interseções de geometrias. returna f (FALSE). SE_M Returna o valor da coordenada m de um valor ST_Point.

2.15.0.1.1.21.1. Notas da Versão A.13.1. Versão 1.1. Usar o PostGIS bug tracker assegurará que seus relatórios não serão rejeitados.17. Versão 1. Versão 1.1.1.6 A.2 A.0. Versão 1. Versão 1. Versão 1.5. Versão 1.0 A.1.0.1 A. Versão 1.20.4 A. vale a pena dar uma olhada primeiro no release changelog.10.1.0RC4 A. Versão 1.1.5 A. Versão 1.1. Apendice A.1.0.0 A. Você poderá ler o papel de Simon Tatham sobre How to Report Bugs Effectively antes de arquivar um relatório novo. Versão 1.0RC3 A.3 A.1 A. Versão 1. assim conteria um script engatilhando-o e cada informação a respeito do ambiente em que foi detectada.0.1.2. Apendice Índice A.1. pesquise no banco de dados para ver se este erro já é conhecido. Versão 1. Versão 1. Versão 1. e o manterá informado estando com um processo seguro.1.1.1.0RC5 A.1.0.1.7.1 A.0.1.1.1.0. e se for adicione toda informação nova que tiver sobre ele. Se você não estiver usando a liberação anterior. Versão 1. Versão 1.3.0 A.2.22. Versão 1.1 Data da versão: 11/01/2007 . Antes de relatar um erro novo. Uma boa e completa informação pode ser extraída rodando SELECT postgis_full_version() [for postgis] e SELECT version() [for postgresql]. O relatório mais eficaz de erro é aquele que permite desenvolvedores PostGIS reproduzi-lo.0.1.9.1. Versão 1.1.Capítulo 7.12.0.19.1. Versão 1.1.2.0.8.1.6.4.11.2 A. Versão 1.3 A.1.0RC6 A. para verificar se seu erro já foi corrigido. Relatando Erros Relatar erros é uma maneira fundamental de ajudar no desenvolvimento de PostGIS.1. Versão 1.18.0RC1 A.16.1.Notas de Versão A.1.14.5 A.0RC2 A.1.0.1.0. Versão 1.4 A.6 A.

Mudanças Fixado erro de atalho point-in-polygon em Within(). Fixados problemas do classpath com GCJ.3.2 NULO na manipulação para índices. A. Mudanças Adicionado suporte ao tipo de geometria curvada para serialização/deserialização.2 (inclusive) e querer realmente um melhoramento vivo leia o upgrade section do capítulo notas da versão 1.3 ou posteriores siga este procedimento soft upgrade. assim como aumentos de desempenho. Inclui uma atualização dos parâmetros SRS e de uma melhoria nas reprojeções (tome Z na consideração). em particular que fixa um erro crítico com interface GEOS nos sistemas 64bit.0. Fixado PostgreSQL 8.2.Esta versão fornece erro fixo no suporte PostgreSQL 8.1. Correções . A. Adicionado short-circuit para transform() dentro do case no-op.1.0.2 e em alguns pequenos aumentos de desempenho. Versão 1. A. Melhorias Se você estiver promovendo da versão 1.1. Versão 1.3.3 e anteriores.3.0.0. Fixados compatibilidade do pgjdbc 8.1.2. Atualizados arquivos de especificação RPM.2.1.1.0.1. A. perdendo suporte para JDK 1.3. Melhoria é incentivada.6 Data da versão: 02/11/2006 Esta é uma versão de fixação de erro.0 Data da versão: 08/12/ 2006 Esta versão fornece definições de tipo junto com potencialidades da serialização/ deserialização para geometrias curvadas definidas SQL-MM. agora JavaDoc é compilado e empacotado.0RC6 e 1.2. Adicionado um curto circuito point-in-polygon para as funções Contains e Within para melhorar o desempenho para estes casos.2. JDBC: Fixado JTS manipulando para geometrias multi-dimensional (agradecimentos a Thomas Marti pela sugestão e a colaboração parcial).1. Se você estiver promovendo de uma versão entre 1. Adicionalmente.1. Melhorias de alguma versão anterior à 1.1. A. A.1.0RC6 requer um hard upgrade.

3.1.3.Fixada mudança CAPI que quebrou plataforma 64-bit.0RC6 requer um hard upgrade. Adicionado EJB3Spatial.4. fixado nullpointer Exception no método Geometry. Versão 1.2 (inclusive) e realmente quer uma melhoria leia upgrade section do capítulo notas da versão 1. Melhorias de alguma versão anterior para 1. Atualizado pesadamente os antiquados arquivos README para shp2pgsql/pgsql2shp fundindo-o com as páginas principais.0. agradecimento à Thomas Marti.4. Substitue o hand-made.5 Data da versão: 13/10/2006 Esta é uma versão de correções.sql alterado para EPSG 6.1.4 Data da versão: 27/09/2006 . Fixada etiqueta versão no código jdbc que ainda diz “1.4.0.5.11. carregador/descarregador: fixado testes de regressão e uso de saída.config no carregador/descarregador de mensagens USAGE. Melhorias são incentivadas. Correções Fixado erro de link MingW que foi causado pgsql2shp para segmento padrão em Win32 quando compilado por PostgreSQL 8.1. analizador de versão JDBC frágil com Properties.3. A.2.1. Novas Características Adicionada opção -S option para geometrias non-multi para shp2pgsql.3” na versão “1. Removido sincronização obsoleta JDBC do código Jts.1.4”. spatial_ref_sys.3.1 para uso de um pacote simples de variáveis de versão para todos.0RC6 e 1. Versão 1. A.1. A. A.1.1.2.equals() em Java. Outras Mudanças uso ordenada Z nas reprojeções.3 ou posteriores siga o procedimento soft upgrade.1.1. Melhorias Se quiser melhorias da versão 1. incluindo um padrão de segmento crítico no win32.odt para cumprir a exigência de distribuição GPL “preferred form of modification”. A.0.0. A.4. Se quiser melhorias da versão entre 1.1. Inclue a Version. Fixado erro setSRID() em JDBC.0.

Adicionado SRID que verifica a combinação em MakeBox2d e MakeBox3d.0RC6 requer um hard upgrade.poly) dando resultados errados.1. Melhorada a concorrência de execução pgsql2shp.0RC6 e 1.geodetix.2.it/ .0. Versão 1.0.5. Company" http://www. Melhorias Se quiser melhorias da versão 1. CORREÇAO em shp2pgsql manipulando MultiLine WKT.1. Melhorias Se quiser melhorias da versão 1.1. Reorganizado um pouco o leiaute do diretório java.0.3 ou posteriores siga o procedimento soft upgrade.0. Correções/exatidão CORREÇAO em distance(poly.6. A.1.5.3. Adicionado tutorial/exemplos EJB3 doados por Norman Barker <nbarker@ittvis.3. Correções Fixado suporte para PostgreSQL 8.Esta é uma versão de fixação de erro incluindo algumas melhorias na interface Java. Improved pgsql2shp run concurrency.1.2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1. A.0. Se quiser melhorias de uma versão entre 1. Melhorias são incentivadas.0.3 Data da versão: 30/062006 Esta é uma versão de fixação de erro incluindo também algumas funcionalidades novas (mais notavelmente suporta a grandes transações) e aumento de portabilidade.0.com>.2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1. Fixado regresso de testes para passar com GEOS-3. Fixado erro na função collect() descartando SRID de entrada.0.Se quiser melhorias de uma versão entre 1.2.2.r.0RC6 e 1. Mudanças Java Retrabalhado o suporte JTS para refletir novos upstream atitudes de desenvolvedores próprios JTS para manipulação do SRID. A. Simplifica o código e a apaga a construção que depende de GNU Trove. Melhorias de alguma versão anterior para 1.1.3 ou posteriores siga o procedimento soft upgrade.6.0. A.3. CORREÇAO em pgsql2shp código de retorno bem sucedido.1.l.0. . Melhorias de alguma versão anterior para 1.5.6.1. Melhorias são incentivadas. A.1.0RC6 requer um hard upgrade. A. Adicionado o suporte EJB2 doado pela "Geodetix s.0.0.

A. NOVO função AsHEXEWKB(geom.2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1.3.1. Melhorias Se quiser melhorias da versão 1. Fixado alguns erros menores em código code. A. Melhorias de alguma versão anterior para 1. jdbc2 SRID manipulando reparos no código JTS.2 Data da versão: 30/03/2006 Esta é uma versão de fixação de erro incluindo algumas funções e novos aumentos de portabilidade. WKT analisador: construção proibida das multigeometrias com elementos EMPTY (suportados ainda para GEOMETRYCOLLECTION). Novas Funcionalidades NOVO suporte a grandes Transações.3 ou posteriores siga o procedimento soft upgrade. Sem link pgsql2shp para mais libs então requerida. Fixado suporte para arquitetura 64bit.6. XDR|NDR). A.3. Mudanças JDBC Testes de regressão melhorados: MultiPoint e ordenadas científicas.1. Se quiser melhorias de uma versão entre 1.0. NOVO função DumpRings().CORREÇAO em affine() falha na atualização da caixa delimitada.1. Usar Jade para gerar documentação.2. A. Suporte para contruir Tru64 build.0. Outras Mudanças NOVO suporte de teste de regressão para carregador/descarregador. Novas Funcionalidades . Correções CORREÇAO em SnapToGrid() computação da saída da caixa delimitada.7.0.3. Adicionada as funções acessor apropriado que funciona para todos os campos na preparação de fazer aqueles campos privados mais tarde.7. Suporte inicial para PostgreSQL 8.1.0RC6 e 1.1.6.7.2. A. Melhorias são incentivadas. A.1.4.0RC6 requer um hard upgrade. CORREÇAO em EnforceRHR().0.1.5.6. Adicionado --with-proj-libdir e --with-geos-libdir para configurar interruptores (switches).0.1. A.7.1. Versão 1.

Fixação de erro no line_substring(). contendo muitas melhorias e coisas novas. Correções Fixado uma saída prematura em postgis_restore.pl. Fixado manipulação de caminho postgresql./run_test para ter um comportamento padrão mais sensato.3 ou posteriores siga o procedimento soft upgrade.1. Adicionado suporte para conjunto localizado no verificador de regressão. Solaris 2. A.1.Testes de regressão agora podem ser executados *before* instalação postgis. Melhorias de alguma versão anterior para 1.0.7.Se quiser melhorias de uma versão entre 1. A. Novas Funcionalidades Nova interpolação Z e M no line_substring().0RC6 e 1.8.8.8.1.7 e melhorias de suporte MingW. A versão precedente conteve um erro em postgis_restore.3.1. Nova interpolação Z e M no line_interpolate_point(). A.pl que impede o procedimento hard upgrade de completar-se e um erro no conector GEOS-2. Melhorias Se quiser melhorias da versão 1.1.0.0.X.0.8.1. Fixação de erro no geometrycollection manipulando conector GEOS-CAPI. Adicionado NumInteriorRing() aliás devido a ambiguidade OpenGIS. Antigas funções translating e scaling agora usam internamente affine().Y.3. O mais notavel: o procedimento da construção extremamente simplificada. Fixação de erro no line_locate_point().4. Alterado o script .1.0. melhorias é altamente recomendada.2+ que impede os objetos GeometryCollection a serem usados em operações topológicas.2.0.Z}().9. A. A.0RC6 requer um hard upgrade.0 Data da versão: 21/12/2005 Esta é uma versão menor.2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1. Controle de acesso enfileirado estimated_extent() para construção com pgsql >= 8. A. Versão 1.1 Data da versão: 23/01/2006 Esta é uma versão importante de correções./configure mais portável. Outras Mudanças script .1.1.0. Versão 1. transform() desempenho . Novas funções de transformação de matriz affine(). Nova função rotate{.

0RC6 e 1. Melhorias Se quiser melhorias de uma versão 1. offset).x instalando PostGIS. Carl Anderson ajudou com a nova área de construção das funções.1. SnapToGrid by point offset (up to 4d support). BuildArea(any_geometry).2. Veja o capítulo soft upgrade para mais informação. Hartmut Tschauner forneceu o código para a função azimuth(). float8. locate_along_measure(geometry. Correções Escape da memória fixado no polygonize(). mais estabilidade na conectividade GEOS (suporte CAPI). OGC BdMPolyFromText(linestring_wkt.0. David Techer e Gerald Fenoy ajudaram testar conector GEOS C-API. float8). É altamente recomendado melhoria para antes de GEOS-2. A.sql em todos seus bancos de dados existentes. locate_between_measures(geometry. LineMerge(geometry). srid). Novas Funções métodos companheiros scale() e transscale() para translate(). line_locate_point(). Simplesmente o fonte trabalhará um novo roteiro lwpostgis_upgrade. ReplacePoint(linestring. Créditos Esta versão inclui o código de Mark Cave Ayland para esconder objetos proj4.2. A.0. Alex Bodnaru ajudou com fonte PostgreSQL relevo da dependência e fornece especificação de arquivos Debian. suporte da topologia do esboço. float8). Veja a seção credits para consultar mais nomes. Markus Schaber adicionou muitas melhorias em seu código JDBC2.0.melhorado drasticamente. point).0. azimuth(geometry). srid). A. A.4. Corrigidas funções cast lwgeom_as_anytype. shift_longitude(geometry).3 ou anterior NÃO precisa descarregar/recarregar.9. Michael Fuhr testou coisas novas na arquitetura Solaris.1. . muitas novas funções. Melhorias de alguma versão anterior para 1. isto assegurará futuros melhoramentos GEOS não requererá uma reconstrução da biblioteca de PostGIS. M(point).2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1. Devrim GUNDUZ forneceu especificação de arquivos RPM.1. RemovePoint(linestring.3.3.0.9.0RC6 requer um hard upgrade.1. offset.9. line_substring(). OGC BdPolyFromText(linestring_wkt.1.9. Se quiser melhorias de uma versão entre 1.

9. Outras Mudanças Melhorias no suporte JTS. Suporte inicial para modelagem de topologia. A. Novo script lwpostgis_upgrade. Chamada automática removida para fix_geometry_columns () em AddGeometryColumns () e update_geometry_stats (). Adicionada preliminar suporte read-only para geometrias java2d.9. Auto investigação DriverWrapper para interruptores HexWKB / EWKT. Sistema de teste de regressão melhorado. com relevo da dependência da fonte PostgreSQL. Mudanças de Semântica de Função SnapToGrid não rejeita dimensões mais elevadas.0 e mais elevada). A.Fixados elementos USE_GEOS. A. problemas para compilar fixo em ValueSetter para antigas versãos JDK.1.2. JDBC2 works Melhorias no Makefile.1.6. Antigo código jdbc removido da Versão. A. Melhorias no suporte JTS. Melhorias de Desempenho Muito mais rapida a função transform(). Função changed Z() retorna NULO se a dimensão pedida não está disponível. objetos escondidos proj4. USE_PROJ e USE_STATS da saída postgis_version() para refletir sempre em estado de biblioteca.sql.6 .10.9.1.9. A.8. Wider and cleaner regression test suite Suite de teste de regressão mais largo e mais limpo. Especificação de arquivos Debian e RPM. Versão 1.pl.1.0.9. Suporte para (Hex)(E)wkb. Método de verificação de consistência básica para coleções da geometria. Construtores EWKT fixos para aceitar representação SRID=4711.1. Suporte GEOS C-API (2. Stricter mapping between DBF and SQL integer and string attributes Mapeamento mais estrito entre o inteiro DBF e SQL e atributos de string.1. A.9. Outras Novas Funções Configuração autoconf-based completa.7. Versão unificada de scripts com versão Versão.5. Obsoleto uso direto de postgis_proc_upgrade.

Melhorias de alguma versão anterior para 1.3 ou anterior NÃO precisa descarregar/ recarregar. uma falta de segmento fixo no seu carregador manipulando atributos de UTF8 e algumas melhorias e limpezas. Correções Fixada chamada palloc(0) na coleção deserializadora (só dá problema com --enablecassert). Melhorias de alguma versão anterior para 1.2. Melhorias Se quiser melhorias de uma versão 1.11.3.2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1.1. Versão 1.11. A. A.0RC6 e 1. Adicionado o faltante da má combinação SRID que verifica ops GEOS. Fixado erro em segmentize().2.0. Fixado short-allocation em lwcollection_clone().0.0. Fixada falha de segmento em addPoint().2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1. A.2.0RC6 requer um hard upgrade.0. Se quiser melhorias de uma versão entre 1. A.1.1.Data da versão: 2005/12/06 Contem algumas correções e melhorias.0.0.1.3.0.0RC6 e 1. Improvements Suporte inicial para postgresql 8.0. Fixada computação bbox de saída SnapToGrid. Mudanças de Bibliotecas . Melhorias Se quiser melhorias de uma versão 1.0. NULL). Fixada falha de segmento geom_accum(NULL.0.Se quiser melhorias de uma versão entre 1.1. Fixado cache bbox de manipulação de erros. Nota Retorna código shp2pgsql alterado de Versãos anteriores para conformar-se aos padrões unix (retorna 0 no sucesso).1.0.5 Data da versão: 25/11/2005 Contem memory-alignment fixa na biblioteca.3.1.10.10. A.1.11. A.10.0RC6 requer um hard upgrade.3 ou anterior NÃO precisa descarregar/recarregar.

0. Novo capítulo no manual "Relatando Erros".2+. Falha no segmento fixo em shp2pgsql (utf8 encoding). Melhorias Melhorias na documentação.pl ciente. A. Mudanças de Carregador Fixado return code de shp2pgsql. Velocidade alta das funções do serializador.2. Fixado título back-compatibility no carregador (carga de shapefiles nulos).3.12. A.1. . A. Corrigidos em manipulação de dimensão do MakeLine. Fixado alguns textos proj4 no spatial_ref_sys (perdido +proj). Menor velocidade alta em distance().4.0RC6 requer um hard upgrade.1. Fixado um pequeno erro na função getPoint4d_p() low-level. Carregador: fixada uso da função string.0.1. Versão 1. A.12.12. Outras Mudança Esquema postgis_proc_upgrade. Se quiser melhorias de uma versão entre 1. Fixado um erro em force_3dm(). Melhorias de alguma versão anterior para 1. retrabalhado verificação de objetos NULO. suporte para pgsql 7.0.11. fixa um escape da memória que impede a construção bem sucedida de índices GiST para tabelas espacial grandes. Melhorias Se quiser melhorias de uma versão 1.1. A.1.3.0.2 (inclusive) e realmente quer uma melhoria leia o upgrade section do capítulo notas da versão 1. Correções Escape de memória conectado na indexação GiST.3. Estimador de seletividade mais robusto.0.3 ou anterior NÃO precisa descarregar/recarregar.Fixada problemas de alinhamento de memória. A.0. fixada falta de segmento na entrada MULTILINESTRING. Fixado manipulação de pontos arrastando em atributos numéricos dbf.1.12.0RC6 e 1. Em particular. Corrigidos em translate() corrupção de saída da caixa delimitada. Fixada computação de fração de valores nulos no analisador.11.4 Data da versão: 09/09/2005 Contem correções importantes e algumas melhorias. Falta de segmento fixo no transform() com manipulaçao de erros proj4. force_3dz() e force_4d().1.

Novo script util rebuild_bbox_caches. Correção na manipulação das seleções user-defined.13. porque as caixas delimitadas armazenadas no banco de dados poderiam estar incorretas. reindexação).1.13.0. Invocar o script depois de um make install (executar sem argumentos para ajuda da sintaxe).incluindo um severo afeição exata de geometries armazenados .pl. A.pl.1. Correções Correção severa em lwgeom's 2d computação de caixa delimitada. esta Versão inclui um script perl (utils/rebuild_bbox_caches. Correção no script create_undef.0.3.2. Um procedimento (descarrega/recarrega) hard upgrade forçará a recomputação de todas as caixas delimitadas (não incluídas nos descarregadores). A.1. . Melhorias Devido a um erro em uma rotina computacional de caixa delimitada. Limpeza em índices GiST.0RC6. Se você tiver melhorias das versões 1.1. A.13.0. Correção no WKT (-w) POINT manipulando no carregador.pl) para forçar a recomputação das caixas delimitadas de suas geometrias e para invocar todas as operações requeridas propagar mudanças eventuais nelas (atualização das estatisticas da geometria. a melhoria do procedimento requer atenção especial.14. Versão 1.0.13. Opcionalmente executar utils/postgis_proc_upgrade.Menor limpeza.e algumas melhorias.2 Data da versão: 04/07/2005 Contem algumas correções e melhorias. Aceitação de sintaxe mais solto no analisador box3d.pl para atualização de procedimentos do postgis e assinaturas das funções (veja Soft upgrade). Isto é requerido se melhorias em Versãos anteriores à 1. Melhorias no script no postgis_restore.0RC6 ou posteriores. Menor limpeza no carregador.1. Versão 1. Correção no descarregador em máquinas 64bit. A.pl. A. Suporte para nome de campo multibyte no carregador. Melhorias Melhorias de pequenos desempenhos na função de entrada canonica.3 Data da versão: 2005/08/08 Contem algumas correções .1.

1.0RC6 ou superior NÃO precisa descarregar/ recarregar.14. NOVO -k comutar para pgsql2shp.1. Índice fixo Rtree. A.15. Melhorias Potencialidade na nova criação de índice no carregador (-I switch).15.15. A. Correções Falha tolerante do btree ops. NOVO suporte para opções createdb em postgis_restore. jdbc2: compilar com "-target 1. Melhorias de versões anteriores requer um descarrega/recarrega. Outras Mudanças/Adições CORREÇÃO na função escape shp2pgsql. A. Suporte inicial para postgresql 8.1.14. . Melhorias de versões anteriores requer um descarrega/recarrega. A.15.2 -source 1.1.0.2" por padrão. Mudanças da Bibliotecas CORREÇÃO na computação 3d de length_spheroid().3. Veja o capítulo upgrading para mais informações.0. Documentações fixas.3. Versão 1.1. Melhorias Se quiser melhorias de uma versão 1. Veja o capítulo upgrading para mais informações.1 Data da versão: 24/05/2005 Contem algumas correções e melhorias. Melhor suporte para concorrente postgis em esquemas múltiplos.1. Melhorias Se quiser melhorias de uma versão 1.1.A. Memória de escape plugada em pg_error.1dev. A.2.pl.0.2.1. Scripts mais limpos na construção (mistura evitada de CFLAGS e CXXFLAGS). CORREÇÃO no estimador de seletividade agrupado. CORREÇÃO em nomes de atributos pgsql2shp cumprimento de unicidade. A.14.0RC6 ou superior NÃO precisa descarregar/ recarregar.1.

0.16. Mudanças de Bibliotecas CORREÇÃO em multi().0. NOVO .3. NOVO suporte a autoconfiguração (autoconf) para biblioteca JTS. leaks.0. A.1.16. A.17.1. sd).pl.CORREÇÃO em definições de projeções Paris.17. Mudanças de Scripts funções dropped {x. Outras Mudanças/Adições CORREÇÃO no escape de valores shp2pgsql começando com "tab" ou "single-quote".0RC6 NÃO precisa descarregar/recarregar. A. Melhorias Se quiser melhorias de uma versão 1.2.p (prepare) flag para shp2pgsql.0. A. NOVO páginas manuais para carregador/descarregador.0.0.1. tuplecount. Contem algumas correções. CORREÇÃO no force_3dm() alocando menos memória então requerida.1. CORREÇÃO nos verificadores do estimador (suporte para LWGEOM e esquema analisador).16.1.2.1.0 Data da versão: 19/04/2005 Versão final 1. Mudanças de Bibliotecas CORREÇÃO no transform() liberando o endereço de memória aleatório. A.0RC6 Data da versão: 30/03/2005 Sexta Versão candidata para 1.17.3.0. pronto return [when noop] do multi(). Contem algumas correções e limpezas. Versão 1. A. algumas melhorias no carregador (o mais notavel suporte para versões postgis mais antigas) e mais documentações.1. Versão 1. Veja o capítulo upgrading para mais informações. limpezas postgis_restore. NOVO suporte shp2pgsql para antigas versões postgis (HWGEOM). Melhorias de algumas versões anteriores requer um descarrega/recarrega.16.17.1.y}{min. Melhorias Você precisa descarregar/recarregar para melhoria das versões precedentes. CORREÇÃO no estimator de seletividade agrupado (defaults. Veja o capítulo upgrading para mais informações.1.1. A. A.max}(box2d) . NOVO capítulo manual sobre cumprimento de conformidade OGC.

0.1. A. Melhorias Você precisa descarregar/recarregar para melhoria das versões precedentes. A. Veja o capítulo upgrading para mais informações. Retorno rápido da force_collection. . Mudanças de Bibliotecas CORREÇÃO (segmento padrão) em geom_accum(). Saída retroagida Box2d para 15 dígitos significativos.18.0RC4 Data da versão: 18/03/2005 Quarta Versão candidata para 1. outros!). Versão 1.0. A.4.19. Mudanças de Bibliotecas CORREÇÃO (segmento padrão) em computação box3d (sim.1. A.1. CORREÇÃO (segmento padrão) em estimated_extent().17.2. Outras Mudanças Construções pequenas de scripts e refinamentos de utilidades. Versão 1. CORREÇÃO no suporte a arquitetura 64bit. Contem algumas correções e melhorias.1. CORREÇÃO no seu descarregador de suporte 64bit.1.1.18.3.0.pl.0. Adicionais desempenho de tipos documentados.0. CORREÇÃO no função da computação box3d com coleções.0RC5 Data da versão: 25/03/2005 Quinta Versão candidata para 1. Melhorias Se quiser melhorias de uma versão 1.2. Melhorias de algumas versões anteriores requer um descarrega/recarrega. NOVO suporte a subselects em estimador de seletividade.18.1.A. Verificação de consistência fixa em SnapToGrid().19.0. Contem correções e poucas melhorias.19.0. Box2d output changed back to 15 significant digits. A.1. A. Outras Mudanças CORREÇÃO no script postgis_restore.18. A.1.0RC4 NÃO precisa descarregar/recarregar.1. Veja o capítulo upgrading para mais informações.

melhorias em postgis_restore. Precisão reduzida da saída box2d. CORREÇÃO na manipulação do alinhamento da memória.20. Refinamentos de scripts construídos. para melhorar o desempenho.20.1. Version.2.1.0. CORREÇÃO no probe_geometry_columns() para trabalhar com PG72 e para suportar colunas da geometria múltiplas em uma tabela simples. Uso de memória reduzido mais cedo liberando um "query-context" de um palloc. Ligado um escape no conversor GEOS2POSTGIS. Melhorias Você precisa descarregar/recarregar para melhoria das versões precedentes. CORREÇÃO no GeometryFromText() faltando adicionar uma memória bbox.3.19. Alterada implementação get_proj4_from_srid para usar PL/PGSQL em vez do SQL. CORREÇÃO no force_collection() causando falhas do conector do mapserver em tipos de geometria simples. Versão 1. NOVO cast bool::text Feitas algumas funções IMMUTABLE de STABLE. A. melhorias no Makefile.1. Manipulação de versão melhorada.1. A.A.4.1. Mudanças de Bibliotecas CORREÇÃO no transform(): faltando SRID. Contem muitas correções e melhorias. saltando tudo com exceção da primeira regra de polígonos. A.Já adicionado analisador gerado na versão.0. Veja o capítulo upgrading para mais informações.19.3. Mudanças JDBC .1. Variáveis FLEX e YACC atribui *after* pgsql Makefile.1. jdbc2: limpeza de códigos. CORREÇÃO no carregador. manipulação melhor de erro.config central.20.4. A. A. A.global que é incluído e só se a versão pgsql *stripped* determina string vazia.1. Macros DEBUG pré-fixados com PGIS_ para evitar o choque com um pgsql. Outras Mudanças CORREÇÃO na manipulação do carregador e descarregador das formas MultiLine.0RC3 Data da versão: 24/02/2005 Terceira Versão candidata para 1. Mudanças de Scripts CORREÇÃO em 72 índices sujeitantes.20.pl.20. Mudanças de Scripts NOVO função distance_sphere().0.

0. Outras Mudanças Novo desempenho vira o capítulo no manual.1.3. script inicial do autoconf.jdbc2: Caminhos pequenos. CORREÇÃO no transform() faltando atualizar memória bbox.1. Mudanças em Scripts Usos mais corretos STABLE. jdbc2: Adicionado suporte BETA para classes geometricas jts. documentos e licença revisados. A.0. Saídas binárias mais rápidas. Veja o capítulo upgrading para mais informações.1. A. jdbc2: Pulo de testes known-to-fail contra servidores mais antigos PostGIS. Fixado spatial_ref_sys. . jdbc2: Adicionado suporte para construção com pg72jdbc2. A extração de BUILDDATE feito mais portável.2.sql.4.0 contendo correções e algumas melhorias. jdbc2: Atualização e limpeza do makefile.x. Outras Mudanças Carregador mais rápido e mais robusto (ambos i18n e não).21.sql. A.21.sql para evitar limpeza no banco de dados inteiro.1. A.1. CORREÇÃO na definição distance_spheroid. lwpostgis. Construtores mais estritos OGC WKB/WKT.1. IMMUTABLE.0RC2 Data da versão: 26/01/2005 Segunda Versão candidata para 1. A. jdbc2: Correções e o caso de teste para o tipo autoregistro pgjdbc 8. spatial_ref_sys: alteradas entradas Paris para combinar alguns distribuídos com o 0.21.5. Poucas mudanças no autoconf.0. Melhorias Você precisa descarregar/recarregar para melhoria das versões precedentes. construtores mais estritos OGC WKB/WKT. STRICT em lwpostgis. NOVO jdbc driver (jdbc2).21.20.4 só características para permitir construção com versões mais antigas JDK. Versão 1. Atualizações da documentação: exigência pgsql72. Mudanças em bibliotecas CORREÇÃO na computação box3d pointarray. jdbc2: Uso removido de jdk1.jar. A.1.21. jdbc2: Fixado manipulação de medidas geométricas em EWKT. GEOMETRYCOLLECTION(EMPTY) suporte de sintaxe para a compatibilidade inversa. testes box2d/3d.

A. Melhorias Você precisa descarregar/recarregar para melhoria das versões precedentes.1. Novas funções: UpdateGeometrySRID(). accum(). ForceRHR().1. JOIN função de seletividade. Versão 1.1. estimated_extent(). AsGML(). Suporte para até coordenadas 4d. SnapToGrid(). com armazenamento interno dos tipos postgis redesenhado para ser menor e mais rápido em seleções posicionadas. Saída canônica de pouca perda. Mais geometrias construtores / editores.1.0.2. Suporte UTF8 no carregador. EWKB binário canônico IO com PG>73. fornecendo a sem perda da conversão shapefile>postgis->shapefile. Mudanças Entrada canônica mais rápida. A.0RC1 Data da versão: 13/01/2005 Este é o primeiro candidato da principal versão postgis. Veja o capítulo upgrading para mais informações. Posicionamento vertical de operadores indexados. A. API de extensão Postgis.22.22. .22.

Sign up to vote on this title
UsefulNot useful