Como localizar todas as padarias num raio de 100 metros
Um dos recursos mais úteis em SIG é a capacidade de gerar polígonos que contornam um objeto a uma determinada distância. Esses polígonos são usualmente denominados buffers (por enquanto, não surgiu uma tradução adequada para essa palavra). Sua principal função é materializar os conceitos de "perto" e "longe", embora sem o componente fuzzy que caracteriza o raciocínio humano nestes termos. Um exemplo de consulta que demanda a utilização de buffers: "localizar todos os postos de gasolina ao longo de uma rodovia". Considerando que os postos estejam representados por um ponto, e a rodovia esteja representada pela linha de seu eixo, é preciso determinar uma distância que materialize o conceito de "ao longo", por exemplo 100 metros. O processamento é feito construindo um polígono que contenha todos os pontos do plano localizados a 100 metros do eixo da rodovia ou menos. Em seguida, determina-se quais postos de gasolina estão contidos neste polígono.
Buffers podem ser construídos ao redor de qualquer tipo de objeto geográfico vetorial: pontos, linhas ou polígonos. No caso de pontos, o buffer é simplesmente um círculo cujo raio é a distância desejada. Em linhas e polígonos, o buffer é construído a partir da união de buffers elementares, que são construídos ao redor de cada segmento e cada vértice. Estes buffers elementares são simplesmente círculos, ao redor dos vértices, e retângulos ao redor dos segmentos, com lados paralelos a estes (Figura 1).
Figura 1 – Buffers elementares ao redor de ponto (a) e segmento (b)
O buffer final é exatamente a união dos buffers elementares que foram construídos sobre os vértices e segmentos da linha ou do polígono (Figura 2). Assim, para construir um buffer a partir de seus componentes básicos (retângulos e círculos), basta usar repetidamente o algoritmo de união de polígonos apresentado na última infoGEO.
Figura 2 – Buffer ao redor de linha
No caso de polígonos, a união deve incluir também o próprio polígono, para que todos os pontos interiores a ele sejam considerados (Figura 3). Se o objetivo for obter apenas a área externa ao polígono a uma dada distância, basta tomar o resultado e subtrair dele o polígono original (Figura 4).
Figura 3 – Buffer ao redor de polígono.
Figura 4 – Buffer externo a um polígono.
Ocorre também com freqüência a necessidade de se ter buffers com distância negativa, ou seja, áreas que são construídas no interior de polígonos a uma dada distância da fronteira. Este tipo de buffer é conhecido como skeleton, ou como setback. O processamento é diferente apenas em um ponto: constrói-se a união dos buffers elementares ao longo da fronteira, considerando o valor absoluto da distância fornecida, e em seguida determina-se a diferença entre a união dos buffers e o polígono inicial (Figura 5). Mais uma vez, a diferença de polígonos pode ser conseguida usando o algoritmo apresentado na última coluna.
Figura 5 – Buffer "negativo" de polígono.
Observe-se que o resultado de uma operação de criação de buffers pode ser formado por vários polígonos separados, ou por polígonos com buracos (Figura 6). Isso faz com que nem todos os algoritmos para união, interseção e diferença de polígonos possam ser usados.
Figura 6 – Buffers com buracos (a) e formados por polígonos isolados (b).
Ao final da construção do buffer, o conjunto de polígonos resultante é utilizado para viabilizar a consulta ou operação de análise inicialmente formulada pelo usuário. Para isso, são usados algoritmos de ponto em polígono e de detecção de interseções envolvendo linhas e polígonos.
Clodoveu Davis
é engenheiro civil, analista de sistemas, mestre em Ciência da Computação e Assessor de Desenvolvimento e Estudos da Prodabel – Empresa de Informática e Informação do Município de Belo Horizonte. Rua Alagoas, 314/1501 CEP 30130-160 – Belo Horizonte – MG . Tel.:(031)9978-1422 . Fax:(031)224-0022 . e-mail: cdavis@uol.com.br