gpt4 book ai didi

geohashing - 在距点的半径范围内查找一定长度的地质哈希

转载 作者:行者123 更新时间:2023-12-03 08:04:50 25 4
gpt4 key购买 nike

我的点具有给定的latlong和周围的距离-例如{40.6826048,-74.0288632:20英里,51.5007825,-0.1258957:100英里}。如果我选择固定的geohash长度(例如,等于〜1x1英里),如何找到每个点具有给定半径的该长度的所有geohash条目?

要添加一些背景-我想要这样做的原因是,这样我就可以保存一个由geohash id键控的缓存,该缓存具有给定geohash在半径之内的点列表的值(还与某些自定义资格规则匹配)。然后,我可以快速查找用户的位置geohash,以找到他们周围的所有合格点。

最佳答案

这就是我尝试做的事情:

输入: 兴趣点(纬度,经度)查询半径

步骤1:找到完全包含 QUERY CIRCLE 'MINIMUM'BOUNDING RECTANGLE(MBR)

步骤2:要创建最小边界矩形,请首先使用输入参数长时间计算其最小和最大纬度。请引用的3.1和3.3部分Computing the Minimum and Maximum Latitude Longitude – the Correct Way

步骤3:使用(minLat, minLon), (maxLat, maxLon)计算MBR 西北 (maxLat, minLon)西南 (minLat, minLon)东南 (minLat, maxLon)东北(maxLat, maxLon)
步骤4:计算MBR所有四个角的GeoHash

例如:对于纽约市的某个点,例如(40.75798,-73.991516),距离:800米,GeoHash长度:12

  • NorthWest: dr5ru j4477kd
  • SouthWest: dr5ru 46ne2ux
  • 东南: dr5ru 6ryw0cp
  • NorthEast: dr5ru mpfq534

  • 步骤5:从这些GeoHash中,计算查询边界框(MBR)前缀: dr5ru

    这将为您提供更粗糙的GeoHash,它完全包含我们的MBR,因此也包含查询区域。换句话说,所有点均由 dr5ru 索引,并从产生32个GeoHashes,dr5ru0 - dr5ruz

    最后一步:

    为了找到与我们的查询圈(确切地说,平方(MBR))相对应的精确网格(或)GeoHash,我们应该通过使用2D数组表示一个循环(4X8)矩阵从这32个GeoHash中进行选择。

    在我们的示例中:我们得到 dr5ru + J, M, H, K, 5, 7, 4, 6。所有这些GeoHashes代表距中央查询点800米的within的点,除了极少数的GeoHashes(由于考虑使用MBR而不是理想的圆而无法避免)之外。

    单幅GIF文件中的总体过程:(步骤1-5)

    Overall Process

    最后一步:

    GeoHash

    Important: Please find the use of 4 x 8 Grid for GeoHash. It varies for each character along the length of GeoHash. For ODD lengths it is 8 x 4, for even its transpose 4 X 8. In our case, we are inside dr5ru(5 + 1, 6th resolution) and hence we use 4 X 8

    关于geohashing - 在距点的半径范围内查找一定长度的地质哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705355/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com