Dari sudut pandang kepadatan penduduk, "daerah perkotaan" umumnya harus memenuhi hanya beberapa kriteria aksiomatik :
Batasnya tidak boleh mencakup titik-titik dengan kepadatan (relatif) tinggi dibandingkan dengan kepadatan maksimum dalam interiornya.
Ini harus dihubungkan dengan mudah (tidak ada "lubang").
Kepadatan populasi rata-rata harus melebihi ambang batas yang ditentukan sebelumnya.
Aksioma (1) adalah yang paling alami: jika titik batas memiliki kepadatan tinggi, kita hanya akan memindahkan batas ke luar untuk memasukkan titik itu dalam wilayah perkotaan. Saya ingin menyarankan bahwa "relatif" berarti sebagai proporsi maksimum , seperti sepersepuluh atau seperseratus atau apa pun. Aksioma (2) menghindari taman tidak termasuk dan daerah kepadatan rendah lainnya yang secara alami terjadi di kota. Aksioma (3) , yang karena tergantung pada ambang batas agak sewenang-wenang, menghilangkan desa-desa kecil yang kompak.
Sebenarnya, setidaknya ada satu unsur kesewenang-wenangan lainnya: setiap peta kepadatan populasi yang tersusun secara rata-rata secara implisit rata-rata populasi di lingkungan lokal (sama dengan satu sel dalam beberapa kasus dan sama dengan jari-jari kernel untuk perkiraan kepadatan kernel). Mari kita terima ukuran lingkungan implisit ini (yang dapat diubah dengan pertama-tama menjalankan focal means atau kernel smooths lain di atas peta kepadatan asli), ambang batas populasi ini, dan pengertian "relatif tinggi" dalam aksioma 1 sebagai parameter yang dapat diatur pengguna yang mengontrol hasil.
Aksioma-aksioma ini mengarah secara alami ke algoritma yang cukup sederhana : seseorang harus menemukan maxima lokal, lihat di lingkungan mereka sampai batas ditemukan memenuhi aksioma (1), isi setiap lubang untuk memenuhi aksioma (2), dan kemudian saring semua area kandidat tersebut menurut (3). Ini dilakukan sebagai berikut:
Secara opsional, menghaluskan peta kerapatan.
Lakukan algoritme "isi" pada peta terkait kerapatan (lihat di bawah).
RegionGroup hasilnya.
Hapus lubang dari poligon RegionGrouped.
Lakukan jumlah zonal dari kepadatan populasi di atas poligon yang terisi.
Hilangkan semua poligon yang memiliki jumlah (atau kepadatan rata-rata) di bawah ambang batas populasi (kepadatan).
Yang tersisa adalah solusi Anda.
Izinkan saya mengatakan sedikit lebih banyak tentang langkah (1), yang merupakan kuncinya. Algoritma isian mengidentifikasi "tenggelam" dan "mengisinya" hingga jumlah yang konstan di atas ketinggiannya. Ini adalah persis apa yang Aksioma (1) minta kita lakukan, asalkan (a) kita dapat membuat "tenggelam" memainkan peran "maksimum lokal" dan (b) membuat "jumlah konstan di atas" memainkan peran " fraksi konstan . " Cara untuk melakukan ini adalah dengan mengisi logaritma negatif dari kepadatandaripada kepadatan itu sendiri. (Tambahkan konstanta kecil terlebih dahulu ke kerapatan - katakanlah, sekitar 0,1 orang per kilometer persegi - sebelum mengambil log, sehingga setiap sel yang mengandung nol tidak akan menyebabkan masalah.) "Danau" di kandidat identifikasi kepadatan log negatif daerah perkotaan. Anda masih memiliki tiga parameter independen untuk dimainkan (memasukkan pada langkah 0, 1, dan 5); pengaturan mereka akan memerlukan beberapa pemikiran tentang apa yang Anda maksud dengan "area perkotaan" serta beberapa eksperimen.