sábado, outubro 18, 2014

A Função row_number() em Consultas de Agregação Espacial

Em Banco de Dados, as funções de agregação são utilizadas para agrupar valores de acordo com um ou vários campos, agregando em uma única linha o conteúdo de vários registros. Dessa forma, os detalhes da informação original são postos de lado e as informações são tratadas em conjunto. São exemplos de funções de agregação: count(), sum(), max(), avg(), dentre outras. 

As funções de agregação também são empregradas em dados espaciais, é o caso da função ST_Union(), onde os vértices adjacentes da nova camada são dissolvidos a partir dos valores armazenados em um campo específico. 

Entretanto, para visualizar o resultado desta nova camada em um software de GIS ou de Webmapping, a maioria deles necessita que a camada tenha um campo com valores únicos. E é exatamente aí que a função row_number() se torna útil neste tipo de análise, permitindo gerar um campo “ID” (identificador único) a partir do número da linha dentro da consulta, de acordo com o “order by” informado. 

Para ilustrar o uso função row_number(), vejamos o exemplo a seguir (Figura 1). Utilizando o QGIS e uma camada de um BD Espacial PostGIS é realizada uma agregação dos municípios a partir do campo “meso” (mesorregiões do estado). 

Figura 1 - Consulta no DB Manager do QGIS

Desta forma, o campo id é criado e povoado através da função row_number() e o resultado pode ser visualizado no QGIS (Figura 2).

Figura 2 - Resultado em forma de mapa temático

Existem outras formas de se obter o mesmo resultado do campo id, neste tipo de situação, porém, o emprego da função row_number() é muito simples, como foi demonstrado no exemplo.