回答:
ティーセンポリゴンを構築するために距離を重み付けする方法は多数あります。 それらを構築する際の基本的な考え方は、任意のポイントxと2つの固定ポイントpおよびqとの間の距離を比較することに基づいています。xがqよりもpに「近い」かどうかを判断する必要があります。この目的のために、少なくとも概念的には、距離dp = d(x、p)およびdq = d(x、q)を考慮します。通常、重み付けは2つの方法で行われます。ポイントに正の数値の重みwpおよびwqを与えることができ、距離自体を変換できます。
意味をなすために、距離が増加するにつれて変換(これをfとして記述します)を増加させる必要があります。つまり、d '> d> = 0の場合は常にf(d')> f(d)です。このような変換の例は、f(d)= d + 1、f(d)= d ^ 2(Reillyの小売重力の法則)です。 )、f(d)= 1-1 / d(すべての距離が1より小さいと仮定)、f(d)= log(d)、f(d)= exp(d)-1
次に、xはqよりもpに「近い」と正確に言います。
f(d(x、p))/ wp <f(d(x、q))/ wq。
乗算ではなく、重みによる除算に注意してください。これは、大きな重みは、より大きな距離でポイントを「引き込む」傾向があることを意味します。これは、以下の実行例で確認できます。
ここに美しいものと、このやや抽象的な説明の要点があります:結果のティーセン領域は、複雑で非常に計算しにくい境界を持つことができますが、グリッドベースの表現を使用して計算するのは比較的簡単です。 レシピは次のとおりです。
各入力ポイントpについて、そのユークリッド距離グリッド[d(p)]を計算します。
マップ代数演算を使用してfと重みを適用し、各距離グリッドを次のように再表現します。
[fp] = f([d(p)])/ wp。
以下はf(d)= 100 + d ^(3/2);を使用した例です。スケールは400 x 600です。
f(d)が増加すると、値は暗くなります。明らかに、この例の距離は中央の赤い点を基準にしています。他の4つのポイントは、個別の距離計算を取得します(表示されていません)。ドットの面積は、2、10、3、4、5の重みに比例します。
これらすべてのグリッドの極小値を計算します[fp]。これを[f]と呼びます。以下に例を示します。
[f]と各[fp]を比較して、各グリッドセルに、[f]> = [fp] である最初のpの識別子を割り当てます。(これは、例えば、最低位置の操作で1ステップで実行できます。)
(この重み関数fのベクトル形式の解を計算するアルゴリズムはどこにも存在しないと思います。)
明らかに、ポイントpが数個以上ある場合は、これをスクリプト化します。また、その数が数千に達すると、おそらく、計算を実行不可能であるとして試行を放棄します(ただし、計算をタイリングすることで計算を高速化する方法はあります)。
楕円上のティーセンポリゴンを示す別の例は、https://gis.stackexchange.com/a/17377/にあります。
必要なのは、重み付けされたボロノイ図です。http: //en.wikipedia.org/wiki/Weighted_Voronoi_diagram は、2次元平面で乗法の重みを使用して行われた場合、円形のディリクレテッセレーションとしても知られています。誰かがこれらを構築するためにarcgis 9拡張機能を構築したようです:http ://arcscripts.esri.com/details.asp?dbid=15481 ここで利用可能なユーザーガイド http://geography.unt.edu/~pdong/software .htm およびDong、P.、2008で発行された論文。GISのポイント、ライン、ポリゴンフィーチャの乗法的に重み付けされたボロノイ図の生成と更新。Computers&Geosciences、Volume 34、Issue 4、Pages 411-421。
このためのベクトルベースのアルゴリズムに関する最近の記事があります(P Dongのアルゴリズムはラスターベースであると仮定しています)。 http://www.sciencedirect.com/science/article/pii/S0098300411003037 Abstractは、c#コードが含まれていると述べています。