zoukankan      html  css  js  c++  java
  • 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版本。

    
    
    
  • 相关阅读:
    java关键字-static
    java内部类
    绘制椭圆
    画出一个三角形
    创建和使用画刷
    画刷使用
    绘制矩形
    在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()
    SecondContract 接口类
    SecondModel 实现类
  • 原文地址:https://www.cnblogs.com/giserliu/p/8351378.html
Copyright © 2011-2022 走看看