h3lib使用C语言写的,因此如果要用到库函数,必须得链接一下,大致用到了geoToH3,h3ToGeo和h3ToGeoBoundary三个函数,功能分别为:
geoToH3:经纬度转换成H3索引
h3ToGeo:根据H3索引输出对应六边形格子的中心位置经纬度
h3ToGeoBoundary:根据索引输出对应六边形格子的六个顶点位置经纬度
先看一个简单的例子
这里我传入的经纬度是滨江星光大道的位置,精度为8,边长大约400米,通过gcc编译,带上h3库
首先获取索引,然后计算出顶点,最后 输出中心位置
此时可以简单查下结果
前面是六边形六个顶点,最后一个是中心点
如果觉得这样太麻烦了,H3也可以将它们都编译成可执行程序直接来运行
我这里是MAC的安装过程,首先是brew直接安装一波依赖
brew install clang-format lcov doxygen cmake
然后在H3目录下编译
lihui@2018 ~/caocao/h3 master ● cmake . lihui@2018 ~/caocao/h3 master ● make
这时候就已经生成了可执行程序,如果想安装到系统环境路径下,可以继续执行 make install操作,这里直接bin目录下执行可执行程序
首先带参数执行geoToH3,传入精度,这里是8,交互命令行里输入经纬度,注意的是经度在后面
lihui@2018 ~/caocao/h3/bin master ● ./geoToH3 8 30.209012 120.208449 88309a40dbfffff
获取了索引之后,执行h3ToGeoBoundary,交互输入索引,返回六个顶点
lihui@2018 ~/caocao/h3/bin master ● ./h3ToGeoBoundary 88309a40dbfffff 88309a40dbfffff { 30.206740285 120.209918360 30.210887920 120.210645324 30.214041030 120.206884285 30.213046536 120.202396017 30.208898737 120.201669099 30.205745597 120.205430403 }
最后执行h3ToGeo,输入索引,返回中心
lihui@2018 ~/caocao/h3/bin master ● ./h3ToGeo 88309a40dbfffff 30.2098934423 120.2061573351
可以继续查一下大致位置
唯一不同的就是demo里经纬度小数部分做了截断,位置基本一致,同一个经纬度只会对应一个六边形索引