Grids地图网格系统实现通勤找房需求

《我是程序媛》之地图网格系统Grids,主要用来实现通勤找房的产品需求。

背景

  • 给用户提供更好的找房产品,产品需求叫“通勤找房”:
    • 直线距离找房误差较大,效果差,app上原来有此方案但是已经下线;
    • 网站的写字楼找房只提供了固定的“x分钟路程”,没有结合交通方式;
    • 通过滑动条更改通勤时间,而不是固定时间;
    • 列表页的查询数据和地图找房数据差距较大;
    • 之后还有更复杂的场景化找房需求,例如:情侣找房需求等;
  • 基于以上问题,有一些技术难点:
    • 实时计算x分钟之内到达某点的查询量大,计算多,性能较低;
    • 地球是椭圆的;
    • 结合调研了链家网、京东到家等实现方式;

目标

  • 实现通勤找房的产品需求;
  • 建设一个通用的栅格化路径搜索系统,满足全球化业务;
  • 数据指标
    • Grids测距离的数据平均偏差±10%以内

      • 指标算法:出发地->目的地的百度测距:Grids的测距,抽查10%的数据;
      • 实现方式:可以通过缩小每个格子的精确度达到;
    • 业务数据平均偏差200米内

      • 楼盘上只有小区的坐标,没有楼栋坐标,较大的小区误差会大;
      • 调用地图拿到楼栋的坐标;
      • 产品驱动运营方去完善房源的楼栋精确坐标;

价值

  • 实现通勤找房的用户需求,完成产品设定的目标和运营目标;
  • 建设一个通用的栅格化路径搜索系统,全球化业务开展的开发周期降低80%(只需要跑业务数据,不需要开发);
  • 更多场景化的业务场景;比如:情侣找房、找附近的管家、找附近的师傅、就近派单等;
  • 提供了社交场景的想象空间;
  • bricks房源展示系统也借此开展;

核心方案

  • 时间转换距离
    • 直接调用百度api拿到交通方式和距离的数据,不需要自己拿速度去算,给大众的感受较一致;
      (暂时不提供早晚高峰和实时的距离)
  • 地图栅格化
    • 基于WEB墨卡托投影的原理,将地球平面化
      • 优点:最多可以精确到米;数据更直观友好;正方形;城市边界可以无限扩展,全球化的坐标;
      • 缺点:越接近两极放大越严重,所以我们只用它画格子,做简单的逻辑,不做实际距离测算;
        (市面上还有geohash,公式等)
    • 格子编号直接采用魔卡托坐标,格子编号为:魔卡托经度+魔卡托维度+格子米数
A格子编号 B格子编号 时间 时间
XY00500 AB00500 5min 500
AB00500 XY00500 10min 1000
XY00500 PQ00500 6min 567
  • 格子和格子的距离索引(绿色部分)

    • 调用地图api计算距离
      计算的是每个格子的实际路径距离,而不是直线距离;
    • 提供三种精确度索引
      分别是 e1=200米,e2=500米,e3=1000米(先做500米的);
    • 离线数据,定期更新
      每新开一个城市,需要提前建立索引;
      需要新城市的起始左下角L,K的坐标;
  • 北京的数据大约需要跑7天,约千万级数据量;

  • 房源和格子索引(红色部分)

    • 在基础研发部新的搜索平台上建立房源和格子的索引数据;
  • 查询(紫色部分)

    • app获取到WGS84坐标,然后根据公示转换为web Mercator坐标
    • 所在格子的中心点精度坐标 = L+ int((web Mercator经度坐标 - L坐标)/e2)*e2+e2/2,纬度同理,从而得到所在的格子编号(no);
    • 查询网格间距离的索引得到所有的格子编号(格子s),查询条件:where B格子编号=no and 距离< 规定距离;
    • 查询房源网格索引,查询在这些格子(格子s)里的所有房源数据,给客户端返回;
  • 数据流程图

围绕索引展开的数据流程图.png
  • 应用架构图
  • 存在的问题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,322评论 5 465
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,288评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,227评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,015评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,936评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,534评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,995评论 3 389
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,616评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,907评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,923评论 2 315
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,741评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,525评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,016评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,141评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,453评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,054评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,249评论 2 339

推荐阅读更多精彩内容