从人口密度的角度来看,“城市区域”通常应满足一些公理标准:
与内部内部的最大密度相比,其边界不应包括(相对)高密度的任何点。
它应该简单地连接(没有“孔”)。
其平均人口密度应超过一些预定的阈值。
公理(1)是最自然的:如果边界点具有高密度,我们只需将边界向外移动,以将该点包括在市区内。我想建议“相对”是指最大值的一部分,例如十分之一或百分之一百。 公理(2)避免排除公园和城市中自然存在的其他低密度区域。 由于依赖于阈值的公理(3)在某种程度上是任意的,因此消除了紧凑的小村庄。
实际上,至少还有其他任意性元素:任何人口密度的网格图都隐式平均了本地邻域的人口(在某些情况下等于一个单元,并且在核密度估计中等于核半径)。让我们接受此隐式邻域大小(可以通过首先运行聚焦方法或在原始密度图上进行其他内核平滑来更改),人口总数阈值以及公理1中的“相对较高”的感觉,作为用户可设置的参数来控制结果。
这些公理自然会导致一种相当简单的算法:必须找到局部最大值,在其邻域中查找,直到找到满足公理(1)的边界,填充任何孔以满足公理(2),然后筛选所有此类候选区域根据(3)。这样做如下:
(可选)平滑密度图。
在密度相关图上执行“填充”算法(请参见下文)。
RegionGroup结果。
从RegionGrouped多边形中删除孔。
对填充的多边形执行总体密度的分区求和。
消除总和(或平均密度)低于总体(密度)阈值的任何多边形。
剩下的就是您的解决方案。
让我说说更多有关步骤(1)的问题。填充算法可识别“下沉”,并将其“填充”到其高度以上的恒定量。这正是 Axiom(1)要求我们做的,只要(a)我们可以使“接收器”发挥“局部最大值”的作用,并且(b)使“高于此常数”发挥“恒定分数的”作用。 ” 做到这一点的方法是通过填充密度的负对数而不是密度本身。(在获取对数之前,首先在密度上添加一个微小的常数(例如,每平方公里约0.1个人),以便任何包含零的像元都不会引起问题。)负对数密度中的“湖”标识候选者城市地区。您仍然可以使用三个独立的参数(在步骤0、1和5中输入);设置它们需要对“城市区域”的真正含义以及一些实验进行思考。