それはすべて、線を描く場所に依存します。とにかく、この問題は、Spatial Analystで使用可能な形態学的関数、特にしきい値(「<」および「>」ローカル操作で実行)および「RegionGroup」を使用してコンポーネントを識別および抽出することで簡単に対処できるように見えます。
説明するためにDEMにアクセスすることはできませんが、最初の画像はとにかく仕事をするのにほぼ十分です。たとえば、しきい値が0から始まり、左から右、上から下に0.02の増分で移動する、赤いバンドの領域グループ化されたバージョン(0.0 =黒から1.0 =白にスケーリングされた値)のシーケンスは次のとおりです。
(これらの画像はここで複製するために縮小されました。すべての分析は元の画像の解像度で行われました。)
堤防は、2番目の行の開始までに黒い領域の境界付近に出現します(しきい値= 0.08)。3行目の開始(しきい値= 0.16)で、堤防は独自のコンポーネント(濃い青)を形成し、その時点で、個別のグリッドまたはポリゴンとして容易に抽出できます(エッジ検出ステップの後、境界をポリラインとして抽出できます) )。最後の行までに最も幅の広い堤防のみが残ります(しきい値= 0.24以上)。 必要なものを正確に取得するには、適切なしきい値を選択する必要があります。
元のDEMでは、標高が強度の役割を果たすため、これらの手順はDEM自体でも同様に効果的である必要があります。DEMの範囲が大きい場合(川や堤防から遠く離れた地物を含む)、関連する地物を、川の地物があるコンポーネントに隣接するものとして選択できます。
RegionGroupによって検出された薄い不要な領域は、小さな侵食(負のバッファー)に続いて同等の膨張(正のバッファー)を適用することで除去できます。小さな不要な領域は、サイズの基準(合計セル数または面積)で除外できます。各堤防の最高点(実際に必要な場合)は、DEMをゾーン最大グリッドと比較することで見つけることができます(堤防をゾーンとして使用)。
ちなみに、この一連の画像はMathematica 8で作成されました。このオプションを追求したい人向けのコマンドを次に示します。
original = Import["http://i.stack.imgur.com/gV7Du.jpg"];
{r, g, b} = ColorSeparate[original];
frames = ParallelTable[Colorize[MorphologicalComponents[Binarize[r, t/100]],
ColorFunction -> "ThermometerColors"], {t, 0, 30, 2}];
Rasterize @ TableForm[Partition[frames, 4]]
合計クロック時間(イメージのインポート後)は0.94秒で、そのうちの半分は16個のイメージすべてを縮小およびエクスポートするのに必要でした:形態学的操作は高速である傾向があります(LIDAR DEMは巨大になる可能性があるため)