人口密度の観点から見ると、「都市部」は一般に、いくつかの公理的基準のみを満たす必要があります。
その境界には、内部の最大密度と比較して(比較的)高密度のポイントを含めないでください。
単純に接続する必要があります(「穴」はありません)。
その平均人口密度は、事前に指定されたしきい値を超える必要があります。
公理(1)が最も自然です。境界点の密度が高い場合は、境界線を外側に移動して、その点を都市部に含めます。「相対的」とは、1/10や100分の1など、最大の比率を意味することをお勧めします。 公理(2)は、都市で自然に発生する公園やその他の低密度領域を除外することを避けます。 Axiom(3)は、しきい値に依存するためやや恣意的であり、小さなコンパクトな村を排除します。
実際、任意の他の要素が少なくとも1つあります。人口密度のグリッド化されたマップは、局所的な近隣の人口を暗黙的に平均化します(場合によっては1つのセルに等しく、カーネル密度推定のカーネル半径に等しい)。レッツは、この集団のしきい値(第一焦点手段または元の密度マップを介して他のカーネル平滑化しを実行することによって変更することができる)、この暗黙の近傍サイズ、およびなどの公理1における「比較的高い」感受け入れるユーザ設定可能なパラメータを制御します結果。
これらの公理は自然にかなり単純なアルゴリズムにつながります:極大を見つけ、境界が公理(1)を満たすように境界が見つかるまでその近傍を調べ、公理(2)を満たすために穴を埋め、そのような候補領域すべてをスクリーニングする必要があります(3)によると。これは次のように行われます。
必要に応じて、密度マップを平滑化します。
密度関連のマップで「塗りつぶし」アルゴリズムを実行します(以下を参照)。
結果をRegionGroupします。
RegionGroupedポリゴンから穴を削除します。
塗りつぶされたポリゴンの人口密度のゾーン合計を実行します。
母集団(密度)のしきい値を下回る合計(または平均密度)を持つポリゴンを削除します。
残っているのはあなたのソリューションです。
重要なステップ(1)についてもう少し説明しましょう。塗りつぶしアルゴリズムは、「沈み込み」を識別し、標高を超える一定量までそれらを「埋め」ます。これはまさに、(a)「シンク」を「極大」の役割を果たすようにすることができ、(b)「一定量以上」を「一定の割合」の役割を果たすようにすることを条件として、Axiom(1)が私たちに要求することです。 」これを行う方法は、密度の負の対数を埋めることです密度そのものではなく。(最初に小さな定数を密度に追加します-たとえば、1平方キロメートルあたり約0.1人-対数を取る前に、ゼロを含むセルが問題を引き起こさないようにします。)負の対数密度の「レーク」は候補を識別します。都市部。まだ3つの独立したパラメーターを操作できます(ステップ0、1、および5で入力)。それらを設定するには、「市街地」とは実際に何を意味するのかについての考えと、いくつかの実験が必要です。