尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

H3六边形网格实战指南:从经纬度到空间统计的完整路径

H3六边形网格实战指南:从经纬度到空间统计的完整路径 H3六边形网格实战指南从经纬度到空间统计的完整路径【免费下载链接】h3Hexagonal hierarchical geospatial indexing system项目地址: https://gitcode.com/gh_mirrors/h3/h3想给每个商圈单独算一笔订单密度直接把订单按经纬度摊在图上就行——难的是算哪个区域商圈不是数据库里的表你得先给地球切一刀。H3 把地球表面切成分层六边形网格每个位置对应一个稳定的六边形索引切多大、怎么归并都由你说了算。 为什么用六边形划分地球把地球按经纬度切成正方形网格问题不少格子越靠近两极越窄同分辨率的格子面积差出一倍还不止正方形还有 8 个邻居四个角上的邻居距离比四条边上的远 41%。六边形把这两件事都消掉了任意单元的 6 个邻居中心点距离完全一致附近有了明确的定义六边形无缝铺满平面格子大小在同一分辨率下基本均匀每个单元向下细分都是 7 个子单元天然支持从粗到细的层级。打个比方正方形网格像棋盘对角相邻的马和正前方相邻的马离得不一样远六边形更像蜂巢每个格子到六个邻居的路一样长。 如何安装并拿到第一个 H3 索引macOS 上最快的一行是brew install h3其他系统从源码构建当前发布版本 4.5.0git clone https://gitcode.com/gh_mirrors/h3/h3 cd h3 mkdir build cd build cmake -DCMAKE_BUILD_TYPERelease .. make make install装好之后把任意经纬度变成一个 64 位 H3 索引一条命令./bin/latLngToCell --resolution 10 --latitude 39.9325 --longitude 116.4283在 C 代码里坐标与索引互转也就是两行H3Index cell; latLngToCell(39.9325, 116.4283, 10, cell); // 经纬度 - 十进制 H3 索引 cellToLatLng(cell, ll); // H3 索引 - 中心点经纬度索引本身就是一个uint64存进任何数据库都能直接当聚合的 key 用。 必须掌握的三个核心能力坐标与索引互转前面两行代码就是全部一个坐标落进哪个格子、一个格子的中心点在哪双向都能查。所有空间统计的第一步都是把散点变成索引。父子层级关系从散点到区域统计每个六边形向下细分都是 7 个子单元cellToChildren向上一级用cellToParent一个就拿到。把每条订单落到第 10 级索引上再上卷到第 6 级就是一份每 36 平方公里一格的区域订单量——分辨率就是下钻和上卷的旋钮。邻居查询把附近变成一次函数调用gridDisk(cell, k, out)返回以cell为中心、距离 k 环内的全部单元k1 时 7 个含中心k2 时 19 个。周边三公里有哪些门店这类问题不用写空间索引就能一次查完。️ 如何选择合适的分辨率H3 一共 16 个分辨率0 级最粗全球 122 个单元15 级最细单元不到 1 平方米。选型看两件事选最粗、但还能看清业务的分辨率全国密度图用 5~8 级城市热力图用 8~10 级门店粒度再考虑 11 级以上。别一上来压到 12 级以上——单元数量按 7 倍递增聚合和存储都会先崩。另外球面没法只用六边形铺满每个分辨率固定有 12 个五边形单元集中在极地一带API 会正常处理不需要你特殊照顾。 常见用途区域密度统计订单/客流按格子分组求和一份每格多少人的报表热力图把格子按聚合值上色粒度就是分辨率本身邻近查询以门店为原点gridDisk取 N 环覆盖半径分析、竞店距离都能直接算。⚠️ 避坑提示分辨率宁粗勿细先选能用最粗看清业务的级别再按需下钻别图省事直接用 12 级以上层级结果要预存用cellToParent把各分辨率的聚合结果提前算好查询时直接取别每次都从原始散点重算控制邻居搜索范围gridDisk的 k 每加一环单元数翻 3 倍还不止k5 就是 91 个按需取环。更多机制细节可以看官方文档examples/ 目录下的 C 示例覆盖了本文提到的每个函数。【免费下载链接】h3Hexagonal hierarchical geospatial indexing system项目地址: https://gitcode.com/gh_mirrors/h3/h3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表