Criando uma tabela PostGIS espacial como resultado de uma consulta PostGIS


8

Quando eu quero armazenar os resultados de uma consulta espacial como outra tabela PostGIS, o que devo fazer? Estou interessado em identificar todos os edifícios residenciais que se enquadram em um conjunto de parcelas:

CREATE TABLE residentialBuildings AS
SELECT buildings.the_geom
FROM parcels as p
JOIN buildings as b
ON ST_Contains(p.the_geom, b.the_geom)
WHERE p.residentialarea > 0;

Isso parece funcionar, mas não retorna um resultado espacial - em vez disso, a tabela possui a representação binária da geometria. Não tenho certeza do que devo fazer para criar uma tabela como resultado. Preciso primeiro criar uma tabela e depois converter o resultado em uma geometria?

(Li a documentação, mas sinto que estou perdendo os termos de pesquisa corretos, pois acho que isso deve ser uma coisa bastante óbvia).

Eu percebo que existem muitos comandos para fazer uma geometria

ST_GeogFromText 
ST_GeographyFromText 
ST_GeogFromWKB 
ST_GeomCollFromText 
ST_GeomFromEWKB 
ST_GeomFromEWKT 
ST_GeometryFromText 
ST_GeomFromGML 
ST_GeomFromKML 
ST_GMLToSQL 
ST_GeomFromText 
ST_GeomFromWKB 

mas não sei qual opção escolher ou se essa é a abordagem correta.

Respostas:


8

Você pode registrar manualmente colunas de geometria em geometry_columns . Algo como:

INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type")
VALUES ('', 'public', 'residentialBuildings', 'the_geom', 2, <yourSRID>, 'MULTIPOLYGON')

1
Estou recebendo uma mensagem de erro informando ERROR: column "polygon" does not exist SQL state: 42703Você sabe o que pode estar causando o erro? A tabela existe e eu também tentei usar POLYGON.
DJQ

Desculpe, esqueci de adicionar ''.
Underdark

5

O resultado é uma tabela espacial com apenas uma coluna na forma de geometria. A representação binária está correta. Se você estiver usando isso fora do PostGIS (por exemplo, ArcGIS ou QGIS ou o que for), provavelmente está procurando duas coisas:


Para esclarecer (vou atualizar a pergunta), quero criar uma tabela no PostGIS com o resultado.
DJQ

Sim, então sua abordagem e resultado estão corretos. Assim como nos bancos de dados geográficos, as linhas na coluna geometria são feitas de geometrias serializadas. Se você quiser ver o conteúdo, basta usar ST_AsText na coluna de geometria, como faria com qualquer outra tabela postgis.
Ragi Yaser Burhum
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.