ArcGIS中实现指定面积蜂窝(正六边形)方法

  本篇博文为博主(whgiser)原创,转载请注明。

  空间聚集研究中,地理尺度大多数都是基于格网构建的,只需fishnet下就行了。也常有使用社区、交通小区(TZ)作为研究单元的。直到发现蜂窝网络做出的炫酷效果,迫不及待想试一下。六边形可以说其几何描述非常完美,但Arcgis并没有提供直接的工具生成正六边形。

  受博文启发,该博文阐述了利用泰森多边形方法生成蜂窝,但是文章中没讲具体如何去算长度,只是基于大概绘制的,并且提到fishnet宽高比为1.5,其实是不精确的,画出来的并不是严格意义上的正六边形。经推理,假设需求的蜂窝单元为**平方公里或公顷,根据几何推导,可准确计算各个参数的值,从而能绘制出准确的蜂窝网络。具体推导如下:

 

  现在实践检验下。假设现在需要生成1平方公里的蜂窝网络,按如上推导,其各个参数计算如下:

area = 1000000 ## 面积
l = np.sqrt((2*area)/(3*np.sqrt(3))) ##蜂窝边长
cellWidth = 3*l ## 渔网宽度
cellHeight = (np.sqrt(3))*l ## 渔网高度
deltaX = 1.5 * l ## 横向偏移
deltaY = (np.sqrt(3)/2)*l ## 纵向偏移
out】
area:1000000  
l: 620.403239 
cellWidth: 1861.209718 
cellHeight: 1074.569932 
deltaX: 930.604859  
deltaY: 537.284966

   接下来介绍在Arcgis中的实现,分三步走。

  第一步,生成 fishnet。设置模板范围为研究对象,像元宽度和高度值设置为cellWidth 和 cellHeight,注意勾选创建标注点,设置运行环境即可。

  第二步,复制上一步生成的点文件,打开编辑,设置移动距离X = deltaX,Y=deltaY,对点进行偏移。然后将偏移后的点和第一步生成的点进行合并。至此,已完成前期所有工作。内容如下:

  第三步,运用泰森多边形工具,生成网络,删去周边不需要的多边形,即可得到结果。经面积验证,基本上为1平方公里,会有很小的精度误差,这是由于计算过程中精度损失,可忽略不计。

  在自己动手实现蜂窝网络过后,发现还是满有意思的操作。另外,如果不想这么麻烦去算的话,推荐一个直接生成的工具Create Hexagon Tessellation,适用于Arcgis 10.2版本。


 

posted @ 2018-01-25 15:15  whgiser  阅读(7037)  评论(4编辑  收藏  举报