创建加权的蒂森多边形?


17

我有一个点shapefile,并使用以下脚本语法以编程方式创建了Thiessen(Voronoi)多边形:

CreateThiessenPolygons_analysis (in_features, out_feature_class, fields_to_copy) 

但是,每个点都与一个区域相关(即每个多边形的首选大小),我希望基于该字段对Thiessen多边形进行加权。

那有可能吗?

VBA中有任何相关代码吗?

Answers:


15

许多方法可以加权距离以构造蒂森多边形。 构造它们的基本思想是基于比较任意点x与两个固定点pq之间的距离;您需要确定x是否比p更“接近” q。为此,至少在概念上,我们考虑了距离dp = d(xp)和dq = d(xq)。加权通常以两种方式发生:可以为点赋予正数值权重wp和wq,并且可以转换距离本身。

从某种意义上说,变换(我将写为f)应随着距离的增加而增加;也就是说,每当d'> d> = 0时,f(d')> f(d)。此类转换的示例为f(d)= d + 1,f(d)= d ^ 2(零售引力的赖利定律) ),f(d)= 1-1 / d(假设所有距离均小于1),f(d)= log(d),f(d)= exp(d)-1。

然后我们说x恰好在什么时候比p更接近于q

f(d(xp))/ wp <f(d(xq))/ wq。

注意权重除法,而不是乘法:这意味着较大的权重将趋向于“拉入”更远距离的点。您将在下面的运行示例中看到这一点。

这是一件很美的事情,也是这个有点抽象的论述的全部要点:尽管所得的蒂森地区可能具有复杂且极难计算的边界,但使用基于网格的表示法则相对容易计算。 这是食谱:

  1. 对于每个输入点p,计算其欧几里得距离网格[d(p)]。

  2. 使用地图代数应用f和权重,从而将每个距离网格重新表示为

    [fp] = f([d(p)])/ wp。

    这是一个使用f(d)= 100 + d ^(3/2)的示例;比例是400 x 600。

    图1

    随着f(d)的增加,该值将变暗。显然,此示例中的距离是相对于中心红点的距离;其他四个点分别获得各自的距离计算(未显示)。点的面积与它们的权重成正比,分别为2、10、3、4和5。

  3. 计算所有这些网格的局部最小值[fp]。称它为[f]。这是一个例子。

    图2

  4. 通过将[f]与每个[fp]进行比较,向每个网格单元分配[f]> = [fp] 的第一个p的标识符。(例如,这可以通过最低位置操作一步完成。)

    图3

    (我怀疑在任何地方都存在一种算法,它将为此加权函数f计算矢量格式的解决方案。)

显然,如果您有几个点p,您将编写脚本,并且如果它们的数量达到数千,您可能会放弃在计算上不可行的尝试(尽管有许多方法可以通过平铺来加速计算)。

/gis//a/17377/上显示了另一个示例,该示例在椭圆体上显示了蒂森多边形。


3
+1我从未意识到采用光栅方法会使此问题变得多么容易。
Kirk Kuykendall

Whuber:非常复杂的过程!但是,请注意我的应用;输入文件的每个点都代表一块地块的近似质心。我使用上面提到的脚本行创建了矢量蒂森多边形文件。每个多边形都分配有一个空间,即一个基于边界相等距离的蒂森多边形原则的大小。另一方面,每个地形图都有一个预定义的大小,该大小在区域字段中提供;这是我要考虑的因素,因此多边形将与该因素成比例。有什么想法吗?
Demetris

我不明白你的言论,德米特里。听起来您确实想要区域制图,而不是Thiessen多边形的集合。这将有助于解释为什么要计算这些多边形。他们要解决什么问题?他们将如何解释?
ub

Whuber:在Thiessen多边形过程中输入的每个点都代表一个新的地块集的近似质心。因此,我基于这些代表地块(一点一地块)形状的点创建了蒂森多边形。通过移动这些点来填充我的遗传算法,我可能会产生许多随机的地块形状。问题在于这些生成的宗地形状(即Thiessen多边形)应该具有预定义的面积,我想知道在使用Thiessen多边形操作时是否可以考虑到这一点。我希望这是有道理的。
Demetris

您的遗传算法正在尝试做什么?听起来您仍然不需要加权的Thiessen多边形:我相信没有任何可能的加权来确保多边形达到预定的面积甚至预定的相对面积。
ub

10

您想要的是一个加权的Voronoi图:http : //en.wikipedia.org/wiki/Weighted_Voronoi_diagram 在二维平面中使用乘法权重时也称为圆形Dirichlet细分。似乎有人构建了arcgis 9扩展来构建这些扩展:http : //arcscripts.esri.com/details.asp? dbid=15481 此处提供了用户指南, 网址为http://geography.unt.edu/~pdong/software .htm 和发表在Dong,P.上的论文,2008。为GIS中的点,线和面要素生成和更新加权加权Voronoi图。计算机与地球科学,第34卷,第4期,第411-421页。

为此,最近有一篇有关基于矢量的算法的文章(我假设P Dong的算法是基于栅格的)。 http://www.sciencedirect.com/science/article/pii/S0098300411003037 摘要说,其中包含c#代码。


1
Blord-castillo:非常感谢所有这些信息。这是非常有用的,我将接受此作为全面的答案。但是,我的新问题是,我希望通过在上述脚本行中提供类似egas的输入,在代码中多次运行该工具。那可能吗?
Demetris
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.