Do ponto de vista da densidade populacional, uma "área urbana" geralmente deve satisfazer apenas alguns critérios axiomáticos :
Seu limite não deve incluir pontos de densidade (relativamente) alta em comparação com a densidade máxima em seu interior.
Deve ser simplesmente conectado (sem "orifícios").
Sua densidade populacional média deve exceder algum limite pré-especificado.
O axioma (1) é o mais natural: se um ponto de limite tivesse uma alta densidade, apenas moveríamos o limite para fora para incluir esse ponto na área urbana. Eu gostaria de sugerir que "relativo" significa como uma proporção do máximo , como um décimo ou centésimo ou qualquer outra coisa. O Axiom (2) evita a exclusão de parques e outras regiões de baixa densidade que ocorrem naturalmente nas cidades. O axioma (3) , que por depender de um limiar é algo arbitrário, elimina pequenas aldeias compactas.
Na verdade, há pelo menos outro elemento de arbitrariedade: qualquer mapa em grade da densidade populacional calcula a média das populações nas vizinhanças locais (igual a uma célula em alguns casos e igual a um raio do núcleo para estimativas de densidade do núcleo). Vamos aceitar esse tamanho implícito de vizinhança (que pode ser alterado pela primeira vez que os meios focais ou outro kernel suavizam o mapa de densidade original), esse limite de população e a sensação de "relativamente alto" no axioma 1 como parâmetros configuráveis pelo usuário que controlam o resultado.
Esses axiomas levam naturalmente a um algoritmo bastante simples : é preciso localizar os máximos locais, procurar nas vizinhanças até encontrar um limite que satisfaça o axioma (1), preencher todos os buracos para satisfazer o axioma (2) e, em seguida, filtrar todas essas áreas candidatas de acordo com (3). Isto se faz do seguinte modo:
Opcionalmente, alise o mapa de densidade.
Execute um algoritmo de "preenchimento" em um mapa relacionado à densidade (veja abaixo).
RegionGroup o resultado.
Remova os furos dos polígonos do RegionGrouped.
Execute somas zonais da densidade populacional sobre os polígonos preenchidos.
Elimine todos os polígonos com somas (ou densidades médias) abaixo do limite da população (densidade).
O que resta é a sua solução.
Deixe-me dizer um pouco mais sobre o passo (1), que é fundamental. Um algoritmo de preenchimento identifica "sumidouros" e os "preenche" até uma quantidade constante acima de suas elevações. É exatamente isso que o Axioma (1) nos pede para fazer, desde que (a) possamos fazer com que "afundar" desempenhe o papel de "máximo local" e (b) fazer com que "quantidade constante acima" desempenhe o papel de " fração constante de. " A maneira de fazer isso é preenchendo o logaritmo negativo da densidadeao invés da densidade em si. (Adicione uma pequena constante primeiro à densidade - digamos, cerca de 0,1 pessoa por quilômetro quadrado - antes de registrar o log, para que quaisquer células que contenham zeros não causem problemas.) Os "lagos" na densidade negativa de log identificam candidatos áreas urbanas. Você ainda tem três parâmetros independentes para brincar (inserindo as etapas 0, 1 e 5); defini-los exigirá uma reflexão sobre o que você realmente entende por "área urbana", bem como algumas experiências.