Existe uma maneira fácil de obter a caixa delimitadora para uma tabela inteira no PostGIS?
19
Como o @underdark respondeu , o ST_Extent fará o trabalho, mas lembre-se de que ele não retorna uma geometria, mas a box2d
. Se você precisar de um tipo de geometria, use algo como
SELECT ST_SetSRID(ST_Extent(the_geom), THE_SRID) as table_extent FROM your_table;
Além disso, se o que você precisa é obter a caixa delimitadora de cada uma das linhas, você também pode usar ST_Extent
uma farsa GROUP BY
como esta:
SELECT ST_SetSRID(ST_Extent(the_geom),THE_SRID) as table_extent FROM your_table GROUP BY gid;
Supondo que gid é a chave primária da tabela
Mas ST_Envelope fará um trabalho melhor como @ bugmenot123 afirmou nos comentários
SELECT ST_Envelope(geom) FROM your_table ;
ST_Envelope
! Não foi o que foi pedido.Outra possibilidade é usar a
ST_Envelope
função, que retorna uma geometria com SRID,, juntamente com a função agregada
ST_Union
para obter a união de todas as geometrias (ou a união de seus respectivos envelopes) da seguinte maneira:ou
A segunda opção deve ser mais rápida, pois simplifica a operação de união usando os envelopes de geometrias individuais.
veja Fonte .
fonte
Não aplicar nenhuma agregação espacial deve ser muito mais rápido:
fonte