开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情
引言
这是关于 Uber/h3 空间索引库的第五篇,之前说Uber/H3 Cell Mode 关于 Cell 模式的这篇作为最后一篇,但是 h3-Java 是一个底层 native 的函数,无奈只能通过看 C 语言源码来查看经纬度是如何映射到 Resolution 0 的六边形中的。
但是在调试源码的过程中,遇到了些问题就整理总结了下,方便跟我有同样需求的小伙伴顺利调试。
Uber/h3 项目 Clone
进行项目
git clone https://github.com/uber/h3.git
若存在 Github 访问超时问题,可以通过 GitHub Proxy 代理加速 进行代理 clone
git clone https://ghproxy.com/https://github.com/uber/h3.git
C 语言环境准备
C 语言最好用的还得是 Visual Studio 2022 社区版 ,很多的依赖通过 Visual Studio Installer 安装要简单很多
踩过坑 这两个建议勾选上,单独下载 CMake 编译项目会报错,作为一个 Java 程序猿也没精力去解决。
Builing H3 on Windows
正确的打开方式
打开命令行,切到项目目录执行编译命令
mkdir build
cd build
cmake ..
编译完成后可以到 build/CMakeOutput.log 文件中查看执行结果,若文件显示 :
已成功生成。
0 个警告
0 个错误
则证明 build 成功。
异常情况
我之前自己安装的 CMake 编译就报如下的错误:
CMake Error at CMakeLists.txt:26 (project):
系统找不到指定的文件。
一般就是自己系统的环境有问题,建议按照 环境准备那一章去重新安装下环境。
跑一个单元测试
在 h3 testapps 找一个 单元测试,我的使用场景就是给定经纬度求空间索引,对应的单元测试为 testLatLngToCell
运行本地调试
输入参数
该单元测试比较的输入的空间索引与生成的空间索引是否一致,输入的参数就为 空间索引地址 + 坐标
进入断点
就可以逐句查看 Uber/h3 根据经纬度如何生成空间索引的 C 语言算法实现了。