如何在h3-js中找到h3索引5公里半径内的位置(其经纬度坐标以geo-json格式存储的索引)?

2023-12-24

我正在创建一个超本地送货服务应用程序。只有距离用户 5 公里半径范围内有商店,我才能接收订单。我以 geojson 格式存储商店位置。 h3-js 中是否有一个函数,它将获取半径、商店数组、h3 索引,然后返回距给定 h3 索引 5 公里范围内的商店列表。或者我如何使用 h3-js 来实现这个?


这里有几个不同的部分:

选择分辨率:选择 H3 分辨率进行查找。更精细的分辨率意味着更高的准确性,但会占用更多的内存。 Res 8 大约有几个街区那么大。

索引数据:要使用 H3 进行半径查找,您需要通过 H3 索引对商店进行索引。如果您希望提高效率,最好提前对所有商店建立索引。如何做到这一点取决于您; JS 中的一种简单方法可能是创建 id 数组的映射:

const lookupIndexes = stores.features.reduce((map, feature) => {
  const [lon, lat] = feature.geometry.coordinates;
  const h3Index = h3.geoToH3(lat, lon, res);
  if (!map[h3Index]) map[h3Index] = [];
  map[h3Index].push(feature.id);
  return map;
}, {})

执行查找:要进行搜索,请索引您的搜索位置并获取某个半径内的所有 H3 索引。您可以使用h3.edgeLength函数来获取当前分辨率下单元格的近似半径。

const origin = h3.geoToH3(searchLocation.lat, searchLocation.lon, res);
const radius = kmToRadius(searchRadiusKm, res);

// Find all the H3 indexes to search
const lookupIndexes = h3.kRing(origin, radius);

// Find all points of interest in those indexes
const results = lookupIndexes.reduce(
  (output, h3Index) => [...output, ...(lookupMap[h3Index] || [])], 
[]);

查看 Observable 的工作示例 https://observablehq.com/@nrabinowitz/h3-radius-lookup

Caveats:这是not真正的半径搜索。 K 形环是一个以原点为中心的大致六边形形状。这对于许多用例来说已经足够好了,并且比传统的半正弦半径搜索快得多,特别是当您有很多行需要搜索时。但是,如果您关心确切的距离,H3 可能不合适(或者,在某些情况下,H3 可能没问题,但您可能希望索引位于“真正的”圆内 - 这里的一个选择是将圆转换为闭合圆 -到圆形多边形,然后通过获取索引h3.polyfill).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在h3-js中找到h3索引5公里半径内的位置(其经纬度坐标以geo-json格式存储的索引)? 的相关文章

  • 合并python中的字典列表

    我有 python 中的字典 格式如下 dict1 Name a value 20 Name b value 10 Name c value 15 我想要输出类似这样的内容 dict2 a 20 b 10 c 15 怎么做 我认为你可以用
  • 连接空间数据时如何解决球面几何故障

    我有一个形状文件 带有多个多边形 和一个带有坐标的数据框 我想将数据框中的每个坐标分配给形状文件中的多边形 因此 要在数据框中添加具有多边形名称或 ID 的列 这里是链接到数据 https docs google com spreadshe
  • 使用地理定位和 Google 地图 API [帮助]

    我是移动开发领域的新手 现在我正在构建一个使用 jQuery mobile 和 PhoneGap 的应用程序 这是我的逻辑 我有一个包含用户及其地址的表 我获取用户地址并通过地图 API 传递它以捕获位置 但我对每条记录都这样做 有时 AP
  • iOS 自定义地图、地理位置、地图绘制等

    下一张图片取自 www Trimaps com 我希望这里允许使用图片 如果不允许 请告诉我 我会立即删除 这些图像完美地解释了我想要实现的目标 我拥有所需的所有数据 所需区域 4 个角的纬度 经度 以十进制值表示 来自 Google 地图
  • 在地图应用程序中快速获取路线

    我有一个应用程序可以在多个地图视图中显示多个位置 如何添加一个按钮 允许用户在其地图应用程序中打开这些位置之一并获取前往该位置的路线 如果你有一个MKPlaceMark你可以使用MKMapItem并打开地图应用程序 位置为launchOpt
  • 捏合缩放 Google Maps API v3 Android Webkit

    我正在编写一个 webkit 应用程序 并且正在使用 google 地图 api v3 我在 Android 手机 HTC Desire 上尝试过 但它无法捏合缩放 请注意 我不想捏合和缩放网页 我想捏合缩放网页视图中的 google 地图
  • Google 地图地点自动完成 - 未捕获类型错误:无法读取未定义的属性“getPlace”

    setAutocomplete this originPlaceId null this destinationPlaceId null this travelMode google maps TravelMode WALKING this
  • iOS 编程中的中心地图

    我们如何在地图中关注用户 我想让蓝点 用户位置 位于地图的中心 但我还允许用户放大和缩小 然后在几秒钟后放大回用户位置 我对解决方案的有根据的猜测 我们检测用户是否正在放大或缩小 在没有放大或缩小检测的三秒后 我们开始跟随用户 你的帮助会很
  • 根据半径从地图数据库中选择点

    我有一个包含点的纬度 经度的数据库 如果我想选择以特定点为中心的特定范围内的所有点 它可以正常工作 但是如果有任何点位于该中心 则它将不会被选择 我使用这个查询 SELECT 6371 acos cos radians 27 5796498
  • Google 地图可以设置为缓慢持续平移吗?就像一场全球革命?

    正如标题所说 我正在寻找解决方案 但没有找到任何可以引导我找到正确文档或文章的内容 如果您有任何想法或可以向我指出一个可以使用的可能解决方案 我将不胜感激 Thanks 你可以自己这样做 Use setInterval https deve
  • Android:有没有办法获取国家/地区名称的时区?

    有没有办法让时区指定国家 地区名称 我用getCountryName 在地图中获取国家 地区的名称 考虑到一些国家跨越多个时区 这似乎很困难
  • Android 显式 Intent 抛出 NoClassDefFounderror

    我正在尝试使用明确的意图在我的 Android 应用程序中显示 MapView 尽管我没有发现我的代码有任何问题 但当我尝试启动我的活动时 我不断收到 NoClassDefFoundError 基本上 从我的主要活动 SetCriteria
  • Qt/Qml:如何包含地图图块以供离线使用?

    我需要将离线图块 滑动地图 包含到主要在 Android 和 iOS 上运行的 Qt Qml 移动应用程序中 我发现的唯一有据可查且有效的解决方案是商业 Esri Arcgis Runtime for Qt 但是 创建切片包需要使用 Arc
  • Reactjs 反应谷歌地图未定义

    我正在使用react google maps包https github com tomchentw react google maps https github com tomchentw react google maps and htt
  • 我什么时候应该使用geom_map?

    我正在制作一个等值线图 并在 ggplot 中添加了点 因此 按照最后一个例子geom map帮助文档 http docs ggplot2 org 0 9 2 1 geom map html 我想出了这个 require ggplot2 r
  • 没有河流的世界地图与 matplotlib / 底图?

    有没有一种方法可以用底图 或者没有底图 如果有其他方法的话 绘制大陆的边界 而不会出现那些烦人的河流 尤其是那段刚果河 连入海口都没有 令人不安 编辑 我打算进一步在地图上绘制数据 就像在底图库 http matplotlib org ba
  • 如何对多重映射中的键和值进行排序?

    建议使用任何方法对多重映射的键及其值进行排序 例如 输入 5 1 1 9 1 1 5 2 1 2 输出必须是 1 1 1 2 1 9 5 1 5 2 答案是emplace hint 伪代码如下所示 insert with hint M mm
  • 删除 ggplot 地图/choropleth 中的边框线

    我想删除 ggplot 中生成的等值线区域之间的线 我的问题是由一张非常大的地图引起的 其中包含非常非常小的区域 人口普查区块组 这些区域数量如此之多 以至于鉴于边界的密度 不可能看到填充形状的颜色 我在 Mac 上使用更新后的 RStud
  • 如何将 BOOST_FOREACH 与两个 std::map 一起使用?

    我的代码基本上如下所示 std map
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap

随机推荐

  • 翻译到世界坐标

    我有鼠标坐标 mousePos 矩阵视图view 以及透视投影矩阵pMatrix 我将坐标转换为世界坐标 找到逆投影矩阵和逆矩阵视图 然后乘以鼠标的坐标 原点坐标是z 4 终点坐标为z 100 在第一种情况下 我得到坐标mouseDir1
  • 期望数组参数具有设定的长度

    我是 Jest 的新手 所以如果这是一个明显的答案 请原谅我 但在滚动文档后我找不到答案 我有一个函数 funcA 它将不同长度的数组传递给另一个函数 funcB 取决于以下论点funcA收到 我正在尝试测试传递给的数组的长度funcB根据
  • 使用 JsonUtility 序列化 2D 数组

    所以我尝试使用 Unity JSON 实用程序保存一些数据 但遇到了一些麻烦 我有一个世界类 里面有一些参数 如宽度高度等 以及一个 Tiles 的二维数组 它是另一个类 缩小版 public class World SerializeFi
  • 为什么 netstat 没有列出我的套接字的开放端口?

    如果运行此示例 您将看到该端口从未列出netstat 为什么 我该如何做到这一点 include
  • 从 Wordpress 媒体库获取单个特定图像

    我已将图像上传到 Wordpress 媒体库 我知道我可以查看图像 然后获取该特定图像的 URL 然后使用imghtml 标签将其显示在页面上 然而这并没有得到alt title caption and description的图像 The
  • Yarn 中的“应用优先”

    我使用的是 Hadoop 2 9 0 是否可以在 YARN 中提交具有不同优先级的作业 根据一些 JIRA 票证 应用程序优先级似乎现已实施 我尝试使用YarnClient 并设置优先级ApplicationSubmissionContex
  • 是否可以像 LINQ 那样创建 C# 语言修改?

    我已经看了很多Skeet 先生关于如何重新实现 LINQ 的博客 http msmvps com blogs jon skeet archive 2011 02 23 reimplementing linq to objects part
  • 在其他控件上方显示透明加载微调器

    我正在旋转器控件中工作 我希望控件支持透明背景色 当绘制弧线时 中间有一个空白区域 我希望该空间是真正透明的 这样我就可以在其后面放置另一个控件 并且它不会被微调器覆盖 我尝试覆盖 CreateParams void 我还设置了支持透明颜色
  • org.springframework.orm.jpa.EntityManagerHolder 无法转换为 org.springframework.orm.hibernate5.SessionHolder

    我尝试将 Spring 与 Hibernate 5 一起使用 但出现此错误 org springframework orm jpa EntityManagerHolder 无法转换为 org springframework orm hibe
  • 执行 querySelector() 和 querySelectorAll() 操作的纯 Javascript 代码,包括 Shadowroots

    我正在尝试编写一个接受两个参数的方法 当前元素的parentNode之一 其中有许多带有shadowroots的childNodes 第二个参数是该元素的childNodes之一的shadowroots之一内的元素的id父节点参数我尝试使用
  • 在 Gunicorn Worker 之间共享锁

    有没有在gunicorn工作人员之间共享多处理锁的好方法 我正在尝试使用 Flask 编写 json API 一些 API 调用将与管理正在运行的进程的 python 类交互 例如用于视频转换的 ffmpeg 当我将 Web Worker
  • Android,熄屏时获取位置

    我使用带有 fused api 的已启动服务 并直接在其上实现位置侦听器 即使屏幕锁定 位置也会持续更新 但如果屏幕关闭 位置就会停止 那么 有没有什么方法可以确保屏幕关闭时位置保持更新呢 我读了很多其他问题 但我真的不知道我错过了什么 p
  • 在运行时选择方法实现

    我想通过选择从给定集合中调用的方法来配置对象在运行时的行为 考虑这个简单的例子 class Parameter class Conf class Obj public Obj const Conf t t t void f Paramete
  • 如何在 Eclipse Project Explorer 中删除 JAX-WS Web 服务节点?

    对于开发 我使用 Eclipse Helios 在项目资源管理器中我的一个项目中出现了一个新节点 它称为 JAX WS Web 服务 我不在我的项目中使用网络服务 该节点有两个子节点 服务端点接口和Web服务 两者都是空的 我还有其他一些项
  • ng-click 中的 jQuery 传递 html 元素引用

    NOTE 不是上面的重复 上面是访问单击的元素 这个问题是关于访问不同的元素 QUESTION 如何将元素 不是单击的元素 从我的 html 文档传递到 Angular 范围方法ng click 例子 http jsfiddle net L
  • 无法使用 Angular JS 获取选定选项

    致力于使用 Angular JS 获取选择标签的选定选项 当我更改选择标签时 我得到的属性值为 1 2 我需要的是 一 二 我的示例代码是 JS var app angular module myApp app controller myC
  • C#聚合函数定义解释

    Enumerable Aggregate 有 3 个重载版本 我找不到该函数的任何重载版本来匹配中使用的版本官方示例 https msdn microsoft com en us library bb548651 v vs 110 aspx
  • 如何在WPF中创建Windows 8风格的应用程序栏?

    我打算创建一个 Windows 8 风格的应用程序 Metro 但发现不支持使用双屏 而这是我的应用程序的需求 现在我正在将我的应用程序重新设计为 WPF 中的桌面应用程序 但我仍然喜欢模仿 Windows 8 应用程序中的一些漂亮的设计功
  • 使用 ActionScript 评估数学公式字符串

    如何使用 AS3 评估数学公式 没什么特别的 比如 10 3 4 10 Thanks 虽然你可以使用一个巨大的评估库 比如D eval http www riaone com products deval or AS3Eval http e
  • 如何在h3-js中找到h3索引5公里半径内的位置(其经纬度坐标以geo-json格式存储的索引)?

    我正在创建一个超本地送货服务应用程序 只有距离用户 5 公里半径范围内有商店 我才能接收订单 我以 geojson 格式存储商店位置 h3 js 中是否有一个函数 它将获取半径 商店数组 h3 索引 然后返回距给定 h3 索引 5 公里范围