备案 控制台
文档
产品文档

基于TairGIS实现同城购业务

更新时间:
一键部署
产品详情
相关技术圈
我的收藏

本文介绍通过云原生内存数据库Tair的GIS结构,实现同城购业务。

背景说明

随着同城购业务的兴起,品牌商家在其众多门店中判断出距离消费者最近门店的场景越来越流行。

商家通常会对每一个门店设置可销售的范围,可能是以行政区划分,也可能是不规则形状的区域,或按照半径圈选。如果消费者坐标在销售范围内,就认为该门店可以对该消费者进行销售,否则,则不可销售。此模型为:判断点(消费者)和多边形(门店销售范围)是否为包含关系。

同城购..jpeg

该方案的传统架构通常使用MySQL或PostGIS数据库,虽然其对GIS相关能力有专业的支持,API也比较完备,但是由于MySQL或PostGis数据库本身磁盘存储的特性,查询速度较慢,特别是在数据量较大的场景下,会产生多次磁盘读IO,容易导致业务查询超时。

您可以使用TairGIS能力构建新一代判店系统,TairGIS底层使用RTree结构,支持常见的Contains、Within、Intersects等关系判断,可以在毫秒(ms)级别返回查询结果。更多信息请参见 GIS。

方案概述

  1. 将某品牌旗下各门店的销售范围存入GIS中。

  2. 根据消费者GPS坐标,查询可进行销售服务的门店。

代码示例

本示例的Python版本为3.8,且已安装Tair-py依赖,Tair-py的快捷安装命令为:pip3 install tair

# -*- coding: utf-8 -*-
# !/usr/bin/env python
from typing import Dict
from tair import Tair
from tair import ResponseError


def get_tair() -> Tair:
    """
    该方法用于连接Tair实例。
    * host:Tair实例连接地址。
    * port:Tair实例的端口号,默认为6379。
    * password:Tair实例的密码(默认账号)。若通过自定义账号连接,则密码格式为“username:password”。
    """
    tair: Tair = Tair(
        host="r-8vb************.redis.zhangbei.rds.aliyuncs.com",
        port=6379,
        db=0,
        password="D******23",
        decode_responses=True
    )
    return tair


def add_brand_store(brandID: str, mapping: Dict[str, str]) -> bool:
    """
    该方法为通过GIS.ADD命令,将品牌(brandID)下的各门店(storeID)与其销售范围(store_wkt)存入GIS中。
    """
    try:
        tair = get_tair()
        ret = tair.gis_add(brandID, mapping)
        return ret == 1
    except ResponseError as e:
        print(e)
        return False


def get_brand_all(brandID):
    """
    该方法为通过GIS.GETALL命令,获取某品牌的全部门店及其对应销售范围。
    """
    try:
        tair = get_tair()
        return tair.gis_getall(brandID)
    except:
        return None


def get_service_store(brandID: str, user_location: str):
    """
    根据消费者坐标(user_location),查询可进行销售服务的门店。
    """
    try:
        tair = get_tair()
        return tair.gis_contains(brandID, user_location)
    except:
        return None


if __name__ == "__main__":
    tair = get_tair()
    # 添加“brand1”品牌的2家门店销售范围。
    add_brand_store(
        "brand1",
        {
            "store_1": "POLYGON ((120.14772 30.19513, 120.15370 30.17838, 120.19385 30.18011, 120.18853 30.20817))",
            "store_2": "POLYGON ((120.18986 30.20852, 120.19651 30.17988, 120.22512 30.17978, 120.21667 30.22292))"
        },
    )
    print("查询“brand1”品牌的所有门店及销售范围:")
    print(get_brand_all('brand1'))
    print("查询可对消费者(120.19707 30.19539)进行销售服务的门店信息:")
    print(get_service_store('brand1', 'POINT(120.19707 30.19539)'))

本示例的正确执行结果如下:

查询“brand1”品牌的所有门店及销售范围:
['store_1', 'POLYGON((120.14772 30.19513,120.1537 30.17838,120.19385 30.18011,120.18853 30.20817))', 'store_2', 'POLYGON((120.18986 30.20852,120.19651 30.17988,120.22512 30.17978,120.21667 30.22292))']
查询可对消费者(120.19707 30.19539)进行销售服务的门店信息:
[1, ['store_2', 'POLYGON((120.18986 30.20852,120.19651 30.17988,120.22512 30.17978,120.21667 30.22292))']]

结果说明:消费者(120.19707 30.19539)的可服务门店为store_2

总结

同城购、买菜、本地商超等应用均可通过TairGIS数据结构,方便地实现地理相关的计算,同时也能满足用户对高性能的需求。

相关文档

  • 基于TairGIS实现电子围栏

  • Tair免费试用教程

上一篇:基于TairGIS实现电子围栏 下一篇:基于TairSearch加速多列索引联合查询
  • 本页导读 (1)

深圳SEO优化公司九江网站优化推广推荐宜春网站搜索优化多少钱铜仁网站建设公司晋城关键词按天扣费多少钱普洱网站优化公司大庆建设网站哪家好安康关键词排名报价上饶网站优化推广多少钱青岛网站改版多少钱马鞍山英文网站建设推荐石家庄seo张家口网络广告推广报价安阳营销网站多少钱泰州网页设计报价日照网页制作报价沙井关键词排名包年推广哪家好雅安seo网站推广多少钱鸡西英文网站建设价格荷坳建网站报价襄樊网页制作多少钱咸宁关键词按天计费临沧百度seo推荐果洛高端网站设计公司定西网站优化按天扣费价格山南网站定制价格丹竹头百姓网标王多少钱石岩SEO按效果付费推荐盐田关键词按天计费阿坝建站公司钦州建网站公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化