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版本。
ArcGIS中实现指定面积蜂窝(正六边形)方法的更多相关文章
- PyQt(Python+Qt)学习随笔:QTreeWidget中获取指定位置项的itemAt方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeWidget的itemAt方法通过视口内的坐标点获取对应坐标位置的项,相关调用方法如下: ...
- iOS获取视频中的指定帧的两种方法
方法一 :AVFoundation #import <AVFoundation/AVFoundation.h> - (UIImage *)thumbnailImageForVideo:(N ...
- arcgis中给属性文件加x y坐标
两种方式: 一, 1在ArcGIS 9.2桌面软件arcview级别以上软件中,加载要添加x,y坐标的数据,打开属性表,添加X.Y字段 2 右键X字段,选择calculate geometry,如果颜 ...
- ArcGIS中生成蜂窝多边形算法解析
近来有不少同学.都有问我关于蜂窝多边形的问题.也就是正六边形,也就是以下这个东东: 一般的问答模式例如以下: 亲们问:ArcGIS里面那个工具能够做这个东东? 虾神答:额,没有原生的工具. 亲们问:那 ...
- (转)ARCGIS中坐标转换及地理坐标、投影坐标的定义
原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...
- ArcGIS中的坐标系统定义与投影转换【转】
ArcGIS中的坐标系统定义与投影转换 坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置.方向和距离,缺少坐标系统 ...
- 【转】+【举例】ArcGIS中的坐标系统定义与投影转换
背景知识: UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的.虽然我们仍然将其看作与"高斯-克吕格"相似的坐标系统,但实际上 ...
- ArcGIS中的坐标系定义与转换 (转载)
原文:ArcGIS中的坐标系定义与转换 (转载) 1.基准面概念: GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对应的转换参数确定,因此欲正确定义GIS系统坐 ...
- arcgis中的geodatabase模型
简介Geodatabase是ESRI公司定义的一个为ArcGIS所用的数据框架,该框架定义了ArcGIS中用到的所有的数据类型.不管ArcGIS的数据存储到何处.以什么格式存储,都脱离不了该框架.也可 ...
随机推荐
- Nginx学习之配置RTMP模块搭建推流服务
写在开始 小程序升级实时音视频录制及播放能力,开放 Wi-Fi.NFC(HCE) 等硬件连接功能.同时提供按需加载.自定义组件和更多访问层级等新特性,增强了第三方平台的能力,以满足日趋丰富的业务需求. ...
- 不写一行代码,利用常用工具和软件批量下载URL资源
有时候会遇到这种情况:想从某个网站下载一批东西,目标URL是比较规整的,而且结构都一样(仅某些字段不同).但又懒得开IDE专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一 ...
- C# System.Windows.Forms.NumericUpDown 控件全选其中文字
num_length.Focus(); UpDownBase updbText = (UpDownBase)num_length; ...
- Spark源码剖析(八):stage划分原理与源码剖析
引言 对于Spark开发人员来说,了解stage的划分算法可以让你知道自己编写的spark application被划分为几个job,每个job被划分为几个stage,每个stage包括了你的哪些代码 ...
- 在Ubuntu下安装OpenJDK的方法
最近在看<深入理解Java虚拟机>就想试一下在ubuntu下安装一个自己的虚拟机,说实话还是废了些功夫的. 首先我的ubuntu版本是Ubuntu 14.04.5, 于是我就去OpenJD ...
- php isset和empty方法的区别
我总结了下面几点区别,直接上代码: empty方法: 变量不存在,返回true 变量存在,值为空,返回true 变量存在,值不为空,返回false function empty1(){ //变量不存在 ...
- QCanvasItem介绍-QT3
QCanvasItem类提供一个在QCanvas上的抽象图形对象. 各种QCanvasItem子类提供立即可用的行为.这个类是一个纯粹的抽象超类,它提供了在所有具体的canvas项目类中共享的行为.Q ...
- 编码(ACSII unicod UTF-8)、QT输出中文乱码深入分析
总结: 1. qt输出中文乱码原因分析 qt的编程环境默认是utf-8编码格式(关于编码见下文知识要点一): cout << "中文" << endl; 程 ...
- hive入门(一)、什么是hive
1.Hive 基本概念 Hive是基于Hadoop的一个 数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能: Hive是构建在Hadoop 之上的数据仓库: 使用HQL作为查询 ...
- Java8函数式接口以及lambda表达式实践
罗列一下遇到可以转换成lamada表达式的场景,仅供参考,如有更好的方式,欢迎在评论区留言. 1.计算订单总金额 订单总金额一般是在后台循环叠加每个购买商品的金额已获取到,通常的方式如下 BigDec ...
