私は、その形状に含まれる値を最大にするためにポリゴン(または複数のポリゴン)の形状を最適化するアルゴリズムを考え出しています。フットプリント検索アルゴリズム
- X:X軸上の位置
- Y:Y軸上の位置
- 値:正有することができ、ブロックの値と
私は3列のデータを持っています負の値。
このデータは規則的なグリッドからのものなので、x値とy値の間隔は一定です。
追加された条件で含まれる値を最大にする境界ポリゴンを作成したいと思います。
- ポリゴンのすべてのポイントで最小半径を維持する必要があります。これは、正の価値ブロックを失うか、負の価値ブロックを得ることを意味します。この場合
私が使用している現在のアルゴリズムは以下
- が出発点(またはユーザ定義)として最大ブロック値を求めない
- は最小半径内のすべてのブロックを検索し、決定します
- 最小探索半径内のすべてのブロックをさらなる値計算から除外し、最終形状の一部としてフラグを付けます。
- 次のポインタに移動します原点を中心としたスパイラルによって決定される。 (中心は常にデルタXまたはデルタYで移動する格子点です)
これは不要なセルをいくつか取り込んでいるようです。そこに形のアルゴリズムがあると確信していますが、私は助けを見つけるために何を見上げるか分からない。
以下は、質問の概要を示すのに役立つ画像です。陽性細胞は赤色で示されている(陰性細胞は示されていない)。黒いアウトラインは、私の現在のルーチンが返す形を示しています。私は、左サイドがもっと持ち込まれるべきだと思う。最小半径は100mです。左下の黒丸はおよそこれです。
今のコードでは、Rで実行されているが、私は、アルゴリズムが正しい得ることができる場合、私はおそらく何か他に移動します。
不明の投票に応えて、私は背景や未遂解決せずに解決しようとしています問題は次のとおりです。
「に含まを最大化するために一連の点の周りに境界ポリゴン(またはポリゴン)を作成します。値は、「多角形に沿って曲率の最小半径を維持しながら
編集:
データ
いくつかのデータが含まれているはずです。hereです。
ファイルはcsvです。 4列(X、Y、Z [未使用]、値)、長さは〜25kサイズは800kbです。
ポリゴンの「曲率半径」はどのように定義していますか? – mhum
基本的にポリゴンの任意の点で、半径Rの(粗い)円を内側に収めることができるはずです。画像では、左下の黒丸は選択可能な最小サイズです(これが負の値の空白を多く取る理由です)。私のポリゴンはグリッドをたどっていて、なぜそれは粗いサークルなのですか? – gtwebb
私は理解していると思います。これは、通常「曲率」が意味するものとは少し異なります(たとえば、X = 421500とY = 6259100付近の鋭い凹状の領域は、従来の定義では許可されません)。ポリゴンPの内部のすべての点は、Pの中に完全に収まる半径Rの円で覆うことができると言えば十分でしょうか?特に、古典的な[Venn図](https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Venn0001.svg/2000px-Venn0001.svg.png)のように見える多角形を受け入れますか?中央の部分は少し狭いですが? – mhum