Uber H3地理索引
正六边形优点
首先正六边形相邻单元距离相等,且近似圆,不仅自身近似圆形,贴合密度概念,很适合大多数的汇总分析场景,而且周围相近近似圆形且等距,方便附近查找,阶梯分析等等。
全球怎么划分成正六边形
如果光是正六边形是没办法构成一个球体的,所以将全球分为正二十面体,每个交点有五条边,所以交点处有五边形。
整体划分
基本单元
并且H3支持逐级拆分
逐级拆分
分辨率
H3使用
H3 Core Library由C写成,但是绑定其他语言,Java也可以调用核心的API。具体参考使用文档:https://h3geo.org/docs
1、引入依赖
<dependency>
<groupId>com.uber</groupId>
<artifactId>h3</artifactId>
<version>3.6.3</version>
</dependency>
或者
compile("com.uber:h3:3.6.3")
2、根据H3文档,调用API
https://h3geo.org/docs/api/indexing
Java示例:
public class test {
public static void main(String[] args) throws IOException, DistanceUndefinedException, PentagonEncounteredException, LineUndefinedException {
//将经纬度编码为六边形地址
H3Core h3 = H3Core.newInstance();
double lat = 31.920523;
double lng = 119.168182;
//H3分辨率
int res = 6;
String hexAddr = h3.geoToH3Address(lat, lng, res);
System.out.println("H3地址:" + hexAddr);
//H3地址转换为经纬度
List<GeoCoord> geoCoords = h3.h3ToGeoBoundary(hexAddr);
System.out.println("六边形顶点经纬度:" + geoCoords);
//geoToH3:经纬度转换成H3索引
System.out.println("H3索引Long类型:" + h3.geoToH3(lat, lng, 6));
//查找索引的质心
System.out.println("H3索引质心,经纬度坐标类型:" + h3.h3ToGeo(617847554087583743L));
//查找索引的边界
System.out.println("六边形顶点经纬度:" + h3.h3ToGeoBoundary(604336920381620223L));
//根据提供的起点和终点返回单向边缘H3索引
//起点镇江市
double originLat = 31.977022;
double originLng = 119.160861;
//起终点经纬度转换为H3索引
Long originH3Index = h3.geoToH3(originLat, originLng, 9);
Long destH3Index = h3.geoToH3(lat, lng, 9);
//查找相邻索引,将k=1定义为所有相邻索引
System.out.println("origin相邻索引:" + h3.kRing(originH3Index, 1));
//两索引是否为邻居
boolean isNeighbors = h3.h3IndexesAreNeighbors(originH3Index, 617847554084700159L);
System.out.println("两索引是否为邻居:" + isNeighbors);
//计算单向边缘H3索引,单向边缘允许对从一个小区到相邻小区的有向边缘进行编码
System.out.println("单向边缘H3索引:" + h3.getH3UnidirectionalEdge(originH3Index, 617847554084700159L));
//返回两个索引之间的网格单元格距离
System.out.println("两个索引之间的网格单元格距离:" + h3.h3Distance(originH3Index, destH3Index));
//返回空心六角环
System.out.println("周围相邻空心六角环:" + h3.hexRing(originH3Index, 1));
//返回两个索引之间的索引行
System.out.println("两个索引之间的索引行:" + h3.h3Line(originH3Index, destH3Index));
}
}
网友评论