CN110799968A - 用于空间索引的系统和方法 - Google Patents

用于空间索引的系统和方法 Download PDF

Info

Publication number
CN110799968A
CN110799968A CN201780092639.9A CN201780092639A CN110799968A CN 110799968 A CN110799968 A CN 110799968A CN 201780092639 A CN201780092639 A CN 201780092639A CN 110799968 A CN110799968 A CN 110799968A
Authority
CN
China
Prior art keywords
node
linked list
processor
read
quadtree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201780092639.9A
Other languages
English (en)
Inventor
陈桦
张旭东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Didi Infinity Technology and Development Co Ltd
Original Assignee
Beijing Didi Infinity Technology and Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Didi Infinity Technology and Development Co Ltd filed Critical Beijing Didi Infinity Technology and Development Co Ltd
Publication of CN110799968A publication Critical patent/CN110799968A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及用于空间索引的系统和方法。该系统可以执行以下方法:编码包括至少两个子区域的区域;相对于编码区域生成四叉树,所述四叉树包括至少两层和至少两个节点,其中,所述至少两个节点中的每个节点对应于所述至少两个子区域中的至少一个区域;确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每个链表对应于所述至少两个节点中的一个节点,其中,对应于第二节点的第二链表附属于对应于第一节点的第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。

Description

用于空间索引的系统和方法
技术领域
本申请涉及用于按需服务的系统和方法,尤其涉及,用于基于空间索引处理按需服务的系统和方法。
背景技术
利用因特网技术的按需运输服务(例如,在线出租车服务),由于其便利性变得越来越流行。提供按需服务的系统应该动态地确定或更新与按需服务相关联的参考信息(例如,区域内的可用服务提供者的数量)。然而,在某些情况下,当参考信息随时间快速变化时,可能难以有效地确定或更新参考信息。
发明内容
根据本申请的第一方面,提供了一种系统。该系统可以包括至少一个存储介质和与所述至少一个存储介质通信的至少一个处理器。所述至少一个存储介质可以包括用于确定与区域相关联的四叉树的一组指令。当执行所述一组指令时,可以指示所述至少一个处理器执行一个或以上以下操作:所述至少一个处理器可以编码包括至少两个子区域的区域;所述至少一个处理器可以相对于编码区域生成四叉树,所述四叉树可以包括至少两层和至少两个节点,所述至少两个节点中的每一个节点可以对应于所述至少两个子区域中的至少一个区域;所述至少一个处理器可以确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每一个链表可以对应于所述至少两个节点中的每一个节点;对应于第二节点的第二链表附属于对应于第一节点的第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
根据本申请的第二方面,提供了一种方法。该方法可以在具有至少一个处理器、至少一个存储介质和连接到网络的通信平台的计算设备上实现。所述方法可以包括一个或以上以下操作:所述至少一个处理器可以编码包括至少两个子区域的区域;所述至少一个处理器可以相对于编码区域生成四叉树,所述四叉树可以包括至少两层和至少两个节点,所述至少两个节点中的每一个节点可以对应于所述至少两个子区域中的至少一个区域;所述至少一个处理器可以确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每一个链表可以对应于所述至少两个节点中的每一个节点,对应于第二节点的第二链表可以附属于对应于第一节点的第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
根据本申请的第三个方面,本申请提供了一个非暂时性计算机可读介质。非暂时性计算机可读介质包括用于确定与区域相关联的四叉树的一组指令。当由至少一个处理器执行时,所述一组指令可以指示至少一个处理器执行一个或以上以下操作:所述至少一个处理器可以编码包括至少两个子区域的区域;所述至少一个处理器可以相对于编码区域生成四叉树,所述四叉树可以包括至少两层和至少两个节点,所述至少两个节点中的每一个节点可以对应于所述至少两个子区域中的至少一个区域;所述至少一个处理器可以确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每一个链表可以对应于所述至少两个节点中的每一个节点,对应于第二节点的第二链表附属于对应于第一节点的第一链表,所述第一节点是所述四叉树的上层的所述第二节点的父节点。
在一些实施例中,所述至少一个处理器可以基于几何库编码所述至少两个子区域中的每一个区域。
在一些实施例中,通过所述第一链表中包括的无效位置,对应于所述第二节点的所述第二链表附属于对应于所述第一节点的所述第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
在一些实施例中,所述至少两层中的每一层可以包括至少两个读写锁,其可由所述至少两个链表共享。
在一些实施例中,所述读写锁状态可以包括读取状态或写入状态。
在一些实施例中,所述至少一个处理器可以访问对应于所述第一链表的所述第一节点;所述至少一个处理器可以确定所述第一链表的第一读写锁状态为写入状态;所述至少一个处理器可以访问对应于所述第二链表的所述第二节点;所述至少一个处理器可以确定所述第二链表的所述第二读写锁状态为写入状态;所述至少一个处理器可以将所述第一链表的所述第一读写锁状态从所述写入状态改变为所述读取状态。
本申请的一部分附加特性可以在下面的描述中进行说明。通过对以下描述和相应附图的研究或者对实施例的生产或操作的了解,本申请的一部分附加特性对于本领域技术人员是明显的。本申请的特征可以通过对以下描述的具体实施例的各种方面的方法、手段和组合的实践或使用得以实现和达到。
附图说明
本申请将通过示例性实施例进行进一步描述。这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的符号表示相同的部件,其中:
图1是根据本申请的一些实施例所示的示例性按需服务系统的示意图;
图2是根据本申请的一些实施例所示的计算设备的示例性硬件和/或软件组件的示意图;
图3是根据本申请的一些实施例所示的移动设备的示例性硬件和/或软件组件的示意图;
图4是根据本申请的一些实施例所示的示例性处理引擎的框图;
图5是根据本申请的一些实施例所示的用于读取/写入与区域中的对象相关联的信息的示例性过程的流程图;
图6是根据本申请的一些实施例所示的示例性确定模块的框图;
图7是根据本申请的一些实施例所示的用于确定空间四叉树索引的示例性过程的流程图;
图8是根据本申请的一些实施例所示的示例性空间四叉树索引的示意图;
图9是根据本申请的一些实施例所示的示例性读写模块的框图;
图10是根据本申请的一些实施例所示的与四叉树相关联的示例性写入过程的流程图;以及
图11是根据本申请的一些实施例所示的示例性四叉树的示意图。
具体实施方式
以下描述是为了使本领域的普通技术人员能够实施和利用本申请,并且该描述是在特定的应用场景及其要求的环境下提供的。对于本领域的普通技术人员来讲,显然可以对所公开的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请并不限于所描述的实施例,而应该被赋予与权利要求一致的最广泛的范围。
本申请中所使用的术语仅用于描述特定的示例性实施例,并不限制本申请的范围。如本申请使用的单数形式“一”、“一个”及“该”可以同样包括复数形式,除非上下文明确提示例外情形。还应当理解,如在本申请说明书中,术语“包括”和/或“包含”仅提示存在所述特征、整体、步骤、操作、组件和/或部件,但并不排除存在或添加一个或以上其他特征、整体、步骤、操作、组件、部件和/或其组合的情况。
根据以下对附图的描述,本发明所述的这些特征和其他特征、特性,以及相关结构组件的操作方法和功能,以及部件和制造经济性的组合更加显而易见,所有这些构成了本规范的一部分。然而,应当理解,附图仅仅是为了说明和描述的目的,并不旨在限制本申请的范围。应当理解的是,附图并不是按比例绘制的。
本申请中使用了流程图来说明根据本申请的一些实施例的系统所执行的操作。应当理解的是,流程图中的操作可以不按顺序执行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将一个或以上其他操作添加到这些流程图中。也可以从流程图中删除一个或以上操作。
此外,虽然在本申请中披露的系统和方法主要关于按需运输服务,但还应该理解,这仅是一个示例性实施例。本申请的系统和方法可以适用于其他任一种按需服务。例如,本申请的系统和方法可以应用于不同的运输系统,包括陆地、海洋、航空航天等或其任意组合。所述运输系统的交通工具可以包括出租车、私家车、顺风车、公交车、火车、动车、高铁、地铁、船舶、飞机、飞船、热气球、无人驾驶的车辆等或其任意组合。运输系统还可以包括应用管理和/或分配的任何运输系统,例如用于发送和/或接收快递的系统。本申请的系统或方法的应用场景可以包括网页、浏览器插件、客户端、定制系统、内部分析系统、人工智能机器人等或其任意组合。
在本申请中,术语“乘客”、“请求者”、“服务请求者”和“客户”可以互换使用,以指可请求或预订服务的个人、实体或工具。此外,本申请中的术语“司机”、“提供者”、“服务提供者”和“供应者”可以用于表示提供服务或协助提供服务的个人、实体或工具,并且可以互换使用。本申请中的词语“用户”可以指请求服务、订购服务、提供服务或促进提供服务的个体、实体或工具。例如,用户可以是乘客、司机、操作者等或其任意组合。在本申请中,术语“乘客”和“乘客终端”可以互换使用,且术语“司机”和“司机终端”可以互换使用。
本申请中,术语“服务请求”是指由乘客、请求者、服务请求者、用户、司机、提供者、服务提供者、供应者等或者其任意组合发起的请求。所述服务请求可以被乘客、请求者、服务请求者、客户、司机、提供者、服务提供者、供应者中的任一个接收。所述服务请求可以是收费的或免费的。
本申请中使用的定位技术可以包括全球定位系统(Global Positioning System,GPS)、全球导航卫星系统(Global Navigation Satellite System,GLONASS)、北斗导航系统(Compass Navigation System,COMPASS)、伽利略定位系统、准天顶卫星系统(Quasi-Zenith Satellite System,QZSS)、无线保真(Wireless Fidelity,WiFi)定位技术等或其任意组合。以上定位技术中的一种或以上可以在本申请中交换使用。
在线按需运输服务(例如,在线出租车)是一种仅在后互联网时代扎根的新型服务形式。此外,实时确定区域内可用出租车服务提供者的数量和待处理服务请求的数量是仅在后互联网时代引起的技术问题。
本申请的一个方面涉及用于基于空间索引确定和/或更新与按需服务相关联的信息(例如,区域内的可用服务提供者的数量、区域内待处理服务请求的数量)的系统和方法。该系统和方法可以编码区域并基于编码区域构建空间四叉树索引。四叉树可包括对应于区域的至少两个子区域的至少两个节点。该系统和方法还可以确定对应于至少两个节点的至少两个链表。因此,该系统和方法可以通过读取和/或写入对应的链表确定或更新与子区域相关联的信息。通过空间四叉树索引,确定或更新与按需服务相关的信息变得有效。
图1是根据本申请的一些实施例所示的示例性按需服务系统100的示意图。例如,按需服务系统100可以是用于运输服务的在线运输服务平台,例如出租车、司机服务、运送车辆、拼车、公共汽车服务、司机雇佣和班车服务。按需服务系统100可以是包括服务器110、网络120、请求者终端130、提供者终端140和存储器150的在线平台。服务器110可以包含处理引擎112。
在一些实施例中,服务器110可以是单个服务器,也可以是服务器组。服务器组可以是集中式的,也可以是分布式的(例如,服务器110可以是分布式的系统)。在一些实施例中,服务器110可以是本地的,也可以是远程的。例如,服务器110可以通过网络120访问存储在请求者终端130、提供者终端140和/或存储器150中的信息和/或数据。又例如,所述服务器110可以连接请求者终端130、提供者终端140和/或存储器150,以访问存储的信息和/或数据。在一些实施例中,服务器110可以在云平台上实施。仅作为示例,云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。在一些实施例中,服务器110可以在图2中描述的包含了一个或者多个组件的计算设备200上执行。
在一些实施例中,服务器110可以包括处理引擎112。处理引擎112可以处理与服务请求相关联的信息和/或数据,以执行在本申请中揭示的一个或者多个功能。例如,处理引擎112可以确定与区域相关联的四叉树。在一些实施例中,所述处理引擎112可以包括一个或以上处理引擎(例如,单核处理引擎或多核处理引擎)。仅作为示例,处理引擎112可以包括一个或以上硬件处理器,例如,中央处理单元(CPU)、专用集成电路(ASIC)、专用指令集处理器(ASIP)、图像处理器(GPU)、物理运算处理器(PPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑装置(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等,或其任意组合。
网络120可以促进信息和/或数据的交换。在一些实施例中,所述按需服务系统100的一个或以上组件(例如,服务器110、请求者终端130、提供者终端140、和存储器150)可以通过网络120将信息和/或数据发送至按需服务系统100中的其他组件。例如,服务器110可以通过网络120从请求者终端130接收服务请求。在一些实施例中,网络120可以为任意形式的有线或无线网络,或其任意组合。仅作为示例,网络130可以包括电缆网络、有线网络、光纤网络、远程通信网络、内部网络、互联网、局域网络(LAN)、广域网路(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、ZigBee网络、近场通讯(NFC)网络等,或其任意组合。在一些实施例中,网络120可以包括一个或以上网络接入点。例如,网络120可以包括有线或无线网络接入点,如基站和/或互联网交换点120-1、120-2、……,通过接入点,按需服务系统100的一个或以上部件可以连接到网络120以交换数据和/或信息。
在一些实施例中,请求者可以是请求者终端130的用户。在一些实施例中,请求者终端130的用户可以是除请求者之外的其他人。例如,请求者终端130的用户A可以使用请求者终端130发送针对用户B的服务请求,或者从服务器110接收服务和/或信息或指令。在一些实施例中,提供者可以是提供者终端140的用户。在一些实施例中,提供者终端140的用户可以为除提供者之外的其他人。例如,提供者终端140的用户C可以通过提供者终端140接收对用户D服务请求和/或从服务器110处接收信息或指令。在一些实施例中,“请求者”和“请求者终端”可以互换使用,“提供者”和“提供者终端”可以互换使用。
在一些实施例中,请求者终端130可以包括移动设备130-1、平板计算机130-2、膝上型计算机130-3、车载设备130-4等,或其任意组合。在一些实施例中,移动设备130-1可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、增强现实设备等,或其任意组合。在一些实施例中,智能家居设备可以包括智能照明设备、智能电器控制设备、智能监控设备、智能电视、智能摄像机、对讲机等,或其任意组合。在一些实施例中,可穿戴设备可以包括智能手镯、智能鞋袜、智能眼镜、智能头盔、智能手表、智能衣服、智能背包、智能配件等,或其任意组合。在一些实施例中,智能移动设备可以包括智能电话、个人数字助理(PDA)、游戏设备、导航设备、销售点(POS)等,或其任意组合。在一些实施例中,虚拟现实设备和/或增强型虚拟现实设备可以包括虚拟现实头盔、虚拟现实眼镜、虚拟现实补丁、增强现实头盔、增强现实眼镜、增强现实补丁等,或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括Google GlassTM、RiftConTM、FragmentsTM、Gear VRTM等。在一些实施例中,车载设备130-4可以包括机载计算机或机载电视等。在一些实施例中,请求者终端130可以是带有定位技术的设备,用于定位请求者和/或请求者终端130的位置。
在一些实施例中,提供者终端140可以是与请求者终端130相似或相同的设备。在一些实施例中,提供者终端140可以是带有定位技术的设备,用于定位提供者和/或提供者终端140的位置。在一些实施例中,请求者终端130和/或提供者终端140可以与其他定位设备通讯来确定请求者、请求者终端130、提供者和/或提供者终端140的位置。在一些实施例中,请求者终端130和/或提供者终端140可以将定位信息发送到服务器110。
存储器150可以存储数据和/或指令。在一些实施例中,存储器150可以存储从请求者终端130和/或提供者终端140处获取的数据。在一些实施例中,存储器150可以存储服务器110用来执行或使用的数据和/或指令,服务器110可以通过执行或使用所述数据和/或指令来完成本申请中描述的示例性方法。在一些实施例中,存储器150可包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等,或其任意组合。示例性的大容量存储器可以包括磁盘、光盘、固态磁盘等。示例性可移动存储器可以包括闪存驱动器、软盘、光盘、存储卡、压缩盘、磁带等。示例性易失性读写存储器可以包括随机存取内存(RAM)。示例性RAM可包括动态随机存取存储器(DRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、静态随机存取存储器(SRAM)、晶闸管随机存取存储器(T-RAM)和零电容随机存取存储器(Z-RAM)等。示例性只读存储器可以包括掩模型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(PEROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字多功能磁盘只读存储器等。在一些实施例中,所述存储器150可以在云平台上实现。仅作为示例,云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等,或其任意组合。
在一些实施例中,存储器150可以连接到网络120,以与按需服务系统100的一个或以上组件(例如,服务器110、请求者终端130、提供者终端140)通信。按需服务系统100中的一个或以上组件可以通过网络120访问存储器150中的数据或指令。在一些实施例中,存储器150可以与按需服务系统100的一个或以上组件(例如,服务器110、请求者终端130、提供者终端140)直接连接或者进行通信。在一些实施例中,存储器150可以是服务器110的一部分。
在一些实施例中,按需服务系统100的一个或以上组件(例如,服务器110、请求者终端130、提供者终端140)可以访问存储器150。在一些实施例中,当满足一个或以上条件时,按需服务系统100的一个或以上组件可以读取和/或修改与请求者、提供者和/或公众有关的信息。例如,在完成一个服务后,服务器110可以读取和/或修改一个或以上用户的信息。又例如,当从请求者终端130接收到服务请求时,提供者终端140可以访问与所述请求者相关的信息,但提供者终端140无法修改请求者的相关信息。
在一些实施例中,按需服务系统100的一个或以上组件的信息交换可以通过请求服务的方式实现。服务请求的对象可以为任何产品。在一些实施例中,产品可以是有形产品或无形产品。有形产品可以包括食品、药品、商品、化学产品、电器、服装、汽车、房屋、奢侈品等,或其任意组合。无形产品可以包括服务产品、金融产品、知识产品、互联网产品等,或其任意组合。互联网产品可以包括个人主机产品、网站产品、移动互联网产品、商业主机产品、嵌入式产品等,或其任意组合。移动互联网产品可以用于移动终端的软件、程序、系统等,或其任意组合。移动终端可以包括平板计算机、膝上型计算机、移动电话、个人数字助理(PDA)、智能手表、POS设备、车载计算机、车载电视、可穿戴设备等,或其任意组合。例如,产品可以是在计算机或移动电话上使用的任一软件和/或应用。该软件和/或应用程序可以与社交、购物、交通、娱乐、学习、投资等或其任意组合相关。在一些实施例中,所述与运输相关的软件和/或应用程序可以包括出行软件和/或应用程序、车辆调度软件和/或应用程序、地图软件和/或应用程序等。在车辆调度软件和/或应用程序中,车辆可以是马、马车、人力车(例如,独轮手推车、脚踏车、三轮车等)、汽车(例如,出租车、公交车、私人汽车等)、列车、地铁、船舶、飞行器(例如,飞机、直升机、航天飞机、火箭、热气球等)等,或其任意组合。
应当注意,图1中所示的应用场景仅用于说明目的,并非旨在限制本申请的范围。例如,按需服务系统100可以用作导航系统。
图2是根据申请的一些实施例所示的计算设备200的示例性硬件和软件组件的框图,其上可以实现本申请所述服务器110、请求者终端130和/或提供者终端140相应的功能。例如,处理引擎112可以在计算设备200上实施并执行本申请所披露的处理引擎112的功能。
计算设备200可以用于实现本申请的按需系统。计算设备200可以被用于实现当前描述的按需服务系统的任一元件。例如,处理引擎112可以在计算设备200上通过其硬件、软件程序、固件或其组合实现。图中为了方便起见,只绘制了一台计算机,但是本实施例所描述的提供按需服务有关的计算机功能可以以分布的方式在多个相似平台上实施,以分散系统的处理负荷。
例如,计算设备200可以包括与网络相连接通信端口250,以实现数据通信。计算设备200还可以包括处理器(例如,处理器220),其形式为一个或以上处理器(例如,逻辑电路),用于执行程序指令。例如,处理器可以包括接口电路和其中的处理电路。接口电路可以被配置为从总线210接收电信号,其中,电信号编码用于处理电路的结构化数据和/或指令。处理电路可以进行逻辑计算,然后将结论、结果和/或指令编码确定为电信号。然后,接口电路可以经由总线210从处理电路发出电信号。
示例性计算设备可以包括内部通信总线210、程序存储和不同形式的数据存储,数据存储包括例如磁盘270、只读存储器(ROM)230或随机存取存储器(RAM)240,用于由计算设备处理和/或传输的各种数据文件。示例性计算设备也可以包括存储于ROM 230、RAM 240和/或其他形式的非暂时性存储介质中的能够被处理器220执行的程序指令。本申请的方法和/或流程可以以程序指令的方式实现。计算设备200还包括I/O组件260,用来支持计算机和其他组件之间的输入/输出。计算设备200也可以通过网络通信接收编程和数据。
仅用于说明,图2中仅示出了一个CPU和/或处理器。还可以考虑多个CPU和/或处理器;因此,由本申请中描述的一个CPU和/或处理器执行的操作和/或方法步骤也可以由多个CPU和/或处理器联合或单独执行。例如,如果在本申请中,计算设备200的CPU和/或处理器执行步骤A和步骤B,应当理解的是,步骤A和步骤B也可以由计算设备200的两个不同的CPU和/或处理器共同地或独立地执行(例如,第一处理器执行步骤A,第二处理器执行步骤B,或者第一和第二处理器共同地执行步骤A和步骤B)。
图3是根据本申请的一些实施例所示的示例性移动设备300的示例性硬件和/或软件组件的示意图,在示例性移动设备300上可以实现请求者终端130或提供者终端140。如图3所示,移动设备300可以包括通信单元310、显示器320、图形处理单元(GPU)330、中央处理单元(CPU)340、I/O 350、内存360和存储器390。CPU可以包括类似于处理器220的接口电路和处理电路。在一些实施例中,任何其他合适的组件,包括但不限于系统总线或控制器(未示出),也可以包括在移动设备300内。在一些实施例中,移动操作系统370(例如,iOSTM、AndroidTM、Windows PhoneTM等)和一个或以上应用程序380可以从存储器390加载到内存360中,以便由CPU 340执行。应用程序380可以包括浏览器或任何其他合适的移动应用程序,用于接收及呈现与订单服务相关的信息或基于位置的服务提供系统中的其他信息。用户与信息流的交互可以通过I/O设备350实现,并且通过网络120提供给处理引擎112和/或系统100的其他组件。
为了实现本申请中描述的各种模块、单元及其功能,计算机硬件平台可以用作这里描述的元件的一个或以上的硬件平台(例如,按需服务系统100和/或关于图1-11描述的按需服务系统100的其他组件)。计算机的硬件元件、操作系统和编程语言在本质上是常规的,假定本领域技术人员对此技术足够熟悉,可以处理本文中描述的供应服务。一台包含用户界面元素的计算机能够被用作个人计算机(PC)或其他类型的工作站或终端设备,被适当程序化后也可以作为服务器使用。可知,本领域技术人员应熟悉该计算机装置的结构、编程和一般操作,因此,附图应该是不言自明的。
本领域的普通技术人员将理解,当按需服务系统100的元件(或组件)执行时,元件可以通过电信号和/或电磁信号执行。例如,当请求者终端130处理诸如做出确定、识别或选择对象的任务时,请求者终端130可以在其处理器中操作逻辑电路以处理这样的任务。当请求者终端130向服务器110发出服务请求时,服务请求者终端130的处理器可以生成编码服务请求的电信号。请求者终端130的处理器然后可以将电信号发送到输出端口。若请求者终端130经由有线网络与服务器110通信,则输出端口可以物理连接至电缆,其进一步将电信号传输给服务器110的输入端口。如果请求者终端130经由无线网络与服务器110通信,则请求者终端130的输出端口可以是一个或以上天线,其可以将电信号转换为电磁信号。类似地,提供者终端140可以通过其处理器中的逻辑电路的操作处理任务,并且经由电信号或电磁信号从服务器110接收指令和/或服务请求。在如请求者终端130、提供者终端140和/或服务器110的电子装置中,当处理器处理指令、发送指令和/或执行一动作时,该指令和/或动作经由电信号传导。例如,当处理器从存储介质(例如,存储器150)检索或保存数据时,它可以将电信号发送到存储介质的读取/写入设备,其可以在存储介质中读取或写入结构化数据。结构化数据可以电信号的形式经由电子装置的总线传输至处理器。此处,电信号可以指一个电信号、一系列电信号和/或至少两个不连续的电信号。
图4是根据本申请的一些实施例所示的示例性处理引擎112的框图。处理引擎112可以包括确定模块410、识别模块410和读写模块430。
确定模块410可以被配置为确定与区域相关联的四叉树(也称为“空间四叉树索引”)。四叉树可以是树结构,其可以用于分析、分类和/或处理空间数据(例如,二维空间中的位置点)。四叉树可以包括至少两个节点,所述节点可以包括四个子节点。所述区域可以是预定的地理区域(例如,具有预定边长的方形区域)。
在一些实施例中,确定模块410可以编码区域并基于编码区域构造四叉树。例如,确定模块410可以将区域划分为至少两个子区域,并且至少两个子区域中的每一个区域可以由代码表示。此外,确定模块410可以基于对应于至少两个子区域的至少两个代码构造四叉树。在一些实施例中,四叉树可以包括至少两个节点,确定模块410可以进一步确定对应于至少两个节点的至少两个链表。
识别模块420可以被配置为识别目标区域。目标区域可以包括一个或以上对象(例如,可用服务提供者、待处理服务请求、要分配的服务请求)。
在一些实施例中,识别模块420可以从至少两个子区域识别目标区域。例如,在接收到服务请求之后,识别模块420可以确定服务请求的开始位置,并且识别从开始位置起特定半径(例如,诸如500米、1千米的默认值)内的圆形区域。此外,识别模块420可以将与圆形区域相对应的子区域识别为目标区域。又例如,识别模块420可以基于来自按需服务系统100或来自用户的指令,将子区域识别为目标区域。
读写模块430可以被配置为基于四叉树确定(也称为“读取”)和/或更新(也称为“写入”)与目标区域中的对象相关联的信息。例如,读写模块430可以通过读取与四叉树相关联的至少两个链表,确定目标区域中的可用服务提供者的数量。又例如,读写模块430可以通过写入与四叉树相关联的至少两个链表,更新目标区域中的待处理服务请求的数量。
处理引擎112中的模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属电缆、光缆、混合电缆等,或其任意组合。无线连接可以包括局域网络(LAN)、广域网路(WAN)、蓝牙、ZigBee网络、近场通讯(NFC)等,或其任意组合。两个或以上模块可以被组合为单个模块,并且模块中的任一个模块可以被分成两个或以上单元。例如,确定模块410和识别模块420可以组合为单个模块,其既可以确定与区域相关联的四叉树又可以识别目标区域。又例如,处理引擎112可以包括存储模块(未示出),其用于存储区域、至少两个子区域、四叉树、目标区域、与目标区域中的对象相关联的信息等的数据和/或信息。
图5是根据本申请的一些实施例所示的用于执行空间索引的示例性过程的流程图。过程500可以由按需服务系统100执行。例如,过程500可以被实现为存储在存储器ROM230或RAM 240中的一组指令(例如,应用程序)。处理器220可以执行所述一组指令,并且当执行指令时,可以将其配置为执行过程500。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程500在实现时可以添加一个或以上未描述的额外操作和/或删减一个或以上此处所描述的操作。另外,如图5所示和下面描述的过程操作的顺序不是限制性的。
在510中,处理引擎112的接口电路可以访问存储介质(例如,ROM230、RAM 240),以加载用于确定与区域相关联的四叉树的一组指令的结构化数据。处理引擎112(例如,处理引擎112的处理电路)(例如,确定模块410)可以通过执行所述一组指令确定与区域(例如,具有预定边长的方形区域)相关联的四叉树。
处理引擎112可以基于几何库(例如,Google S2库)确定四叉树。例如,基于几何库(例如,Google S2库),处理引擎112可以将区域划分为至少两个子区域,并且对至少两个子区域进行编码。四叉树可以包括至少两(例如,30)层,包括根层、至少两个中间层和叶层。根层可以包括对应于区域的根节点。至少两个中间层中的每一层可以包括至少两个中间节点,并且至少两个中间节点中的每一个节点对应于区域的子区域。
在一些实施例中,处理引擎112可以进一步确定对应于四叉树的至少两个节点的至少两个链表。如这里所使用的,链表可以包括一个或以上位置,每个位置可以表示子区域中与链表相对应的对象。
在520中,处理引擎112(例如,处理引擎112的处理电路)(例如,识别模块420)可以识别包括一个或以上对象的目标区域。处理引擎112可以从区域的至少两个子区域识别目标。
如这里所使用的,对象可以指可用车辆(或可用服务提供者)、待处理服务请求、要分配的服务请求等。可用服务提供者可以指可以在当前提供服务的服务提供者。
在一些实施例中,对象可以表示为目标区域中的位置点。处理引擎112可以根据请求者终端130或提供者终端140中集成的GPS确定位置点。例如,处理引擎112可以经由网络120从提供者终端140获得GPS信息,并且进一步确定与提供者终端140相对应的GPS点。
在530中,处理引擎112(例如,处理引擎112的处理电路)(例如,读写模块430)可以基于四叉树确定和/或更新与一个或以上对象相关联的信息。
在一些实施例中,与一个或以上对象相关联的信息可以包括一个或以上对象的数量(例如,目标区域中的可用服务提供者的数量)、一个或以上对象的位置信息(例如,经度和纬度信息)和一个或以上对象的详细信息(例如,可用车辆的类型、服务请求的起始位置和/或目的地)等。
在一些实施例中,处理引擎112可以通过读取和/或写入对应于目标区域的链表,来确定和/或更新与一个或以上对象相关联的信息。
例如,如果特定提供者进入目标区域,则处理引擎112可以将新位置添加到与目标区域相对应的链表,以将可用服务提供者的数量增加“1”。作为另一个例子,如果待处理的服务请求被终止,则处理引擎112可以确定服务请求已经完成并从对应于目标区域的链表中删除位置,以将待处理服务请求的数量减少“1”。作为另一个例子,如果请求者向按需服务系统100发送服务请求,处理引擎112可以接收服务请求并读取与目标区域对应的链表(例如,确定链表中的位置数)以确定目标区域中可用服务提供者的数量。
应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,根据本申请的教导可以做出多种变化和修改。然而,变化和修改不会背离本申请的范围。例如,可以在示例性过程500中的其他地方添加一个或以上其他可选步骤(例如,存储步骤)。在存储步骤中,处理引擎112可以在本申请的其他地方公开存储设备(例如,存储器150)中存储四叉树、至少两个链表、目标区域和/或与目标区域中的对象相关联的信息。
图6是根据本申请的一些实施例所示的示例性确定模块410的框图。确定模块410可以包括编码单元610、四叉树确定单元620和链表确定单元630。
编码单元610可以被配置为编码区域的数据和/或信息。编码单元610可以通过将区域划分为至少两个子区域(例如,参见图8及其描述)对区域进行编码。例如,编码单元610可以将区域划分为相等的四个子区域,并且每个子区域可以进一步划分为四个子区域,依此类推。至少两个子区域中的每一个区域可以由代码表示。例如,编码单元610可以基于几何库(例如,Google S2库)对区域进行编码,并且至少两个子区域中的每一个子区域可以由64位代码表示。
四叉树确定单元620可以被配置为基于编码区域确定四叉树。四叉树可以包括至少两层,包括根层、至少两个中间层和叶层。在一些实施例中,如果基于几何库对区域进行编码,则四叉树中的至少两层的数量可以是30。四叉树可以包括至少两个节点,其包括根节点和在不同层处的至少两个子节点。根节点可以对应于区域,并且至少两个子节点可以对应于至少两个子区域。
链表确定单元630可以被配置为确定对应于四叉树中的至少两个节点的至少两个链表。链表可以包括一个或以上位置,并且一个或以上位置中的每一个位置可以表示与链表相对应的子区域(或区域)中的对象。在一些实施例中,对应于节点的链表可以包括至少两个无效位置,并且对应于节点的子节点的链表可以经由至少两个无效位置附属于链表。
确定模块420中的单元可以通过有线连接或无线连接彼此连接或通信。有线连接可以包括金属电缆、光缆、混合电缆等,或其任意组合。无线连接可以包括局域网络(LAN)、广域网路(WAN)、蓝牙、ZigBee网络、近场通讯(NFC)等,或其任意组合。两个或以上的单元可以组合成单个单元,并且任何一个单元可以分为两个或以上子单元。
图7是根据本申请的一些实施例所示的用于确定空间四叉树索引的示例性过程的流程图。过程700可以由按需服务系统100执行。例如,过程700可以实现为存储在存储器ROM230或RAM 240中的一组指令(例如,应用程序)。处理器220可以执行所述一组指令,并且当执行指令时,可以将其配置为执行该过程700。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程700可以用未描述的一个或以上附加操作来完成和/或没有讨论的一个或以上操作完成。另外,如图7所示和下面描述的,过程操作的顺序不是限制性的。
在710中,处理引擎112(例如,处理引擎112的处理电路)(例如,编码单元610)可以编码区域。例如,处理引擎112可以基于几何库(例如,Google S2库)对区域进行编码。根据Google S2库,处理引擎112可以将区域划分为至少两个子区域,其中,至少两个子区域中的每一个可以由64位代码表示。
在720中,处理引擎112(例如,处理引擎112的处理电路)(例如,四叉树确定单元620)可以基于编码区域确定四叉树。
四叉树可包括至少两层,包括根层、至少两个中间层和叶层。如果区域是基于Google S2库编码的,则四叉树中至少两层的数量可以是30。四叉树可以包括在不同层处的至少两个节点。例如,根层(即,第一层)可以包括根节点,第二层(即,作为根层的子层的第一中间层)可以包括四个节点,依此类推,第i层可以包括4i-1个节点,其中1≤i≤30。这里,根节点可以对应于区域,并且至少两个子节点可以对应于至少两个子区域。
在730中,处理引擎112(例如,处理引擎112的处理电路)(例如,链表确定单元630)可以确定对应于四叉树中的至少两个节点的至少两个链表。链表可以包括一个或以上位置,并且一个或以上位置中的每一个位置可以表示与链表相对应的子区域(或区域)中的对象。在一些实施例中,对应于节点M的链表M可以附属于对应于节点N的链表N,节点N是节点M的父节点。在这种情况下,链表N可以包括至少两个无效位置。链表M可以通过链表N中的无效位置附属于链表N。例如,假设对应于节点M的子区域包括3个对象,因此,链表M包括表示3个对象的3个位置。链表M可以经由无效位置指向链表N,并且链表N中的无效位置下的3个位置可以表示3个对象。类似地,对应于节点N的其他子节点的链表可以通过链表N中的其他无效位置附属于链表N。
应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,根据本申请的教导可以做出多种变化和修改。然而,变化和修改不会背离本申请的范围。例如,如果对应于第i层的特定节点的子区域中的对象的数量仅为1,则可以隐藏特定节点的子节点,并且可以简化四叉树的分支。又例如,如果将新对象添加到子区域(例如,新的可用服务提供者进入到子区域),则子区域中的对象的数量可以增加。在这种情况下,可以不隐藏特定节点的子节点,并且可以重新生长分支。
图8是根据本申请的一些实施例所示的示例性空间四叉树索引的示意图。
如图8所示,区域800可以对应于四叉树的根层。区域800可以被划分为四个相等子区域,包括810、820、830和840,其分别对应于四叉树的第二层处的四个节点。此外,子区域810、820、830和840中的每一个子区域可以被划分为四个相等子区域。例如,子区域810可以被划分为四个子区域,包括811、812、813和814,其对应于四叉树的第三层处的四个节点。
在一些实施例中,子区域中的每一个可以由64位代码表示。子区域可以由64位代码中的两位来标识。例如,子区域810可以由“/01”标识。子区域810可以进一步划分为四个相等子区域811、812、813和814,其可以由“/01/01”、“/01/11”、“/01/00”和“/01/10”分别标识。
图9是根据本申请的一些实施例所示的示例性读写模块430的框图。如图9所示,读写模块430可以包括读取控制单元910、写入控制单元920和锁定状态确定单元930。
读取控制单元910可以被配置为读取对应于四叉树的节点的链表。如这里所使用的,“读取链表”可以指的是读取控制单元910可以搜索与对应于链表的子区域中的对象相关联的信息。例如,在从请求者终端130接收到服务请求之后,处理引擎112可以识别服务请求的开始位置,并确定距起始位置的特定半径内的圆形区域。处理引擎112还可以确定与圆形区域相对应的子区域,并且通过读取与该子区域相对应的链表(例如,确定链表中的位置的数量)确定子区域中的可用服务提供者的数量。
写入控制单元920可以被配置为写入对应于四叉树的节点的链表。如这里所使用的,“写入链表”可以指的是写入控制单元920可以更新与对应于链表的子区域中的对象相关联的信息。例如,在待处理的服务请求终止之后,处理引擎112可以通过修改(即,写入)与子区域相对应的链表确定服务已经完成,并更新特定子区域内的待处理服务请求的数量。例如,处理引擎112可以从链表中删除位置,在这种情况下,链表中的位置数量减少“1”。此外,如上所述,与节点相对应的链表通过无效位置附属于与四叉树的上层的节点的父节点相对应的链表。在这种情况下,在位置数量减少“1”之后,处理引擎112可以通过无效位置识别对应于父节点的链表,并且相应地更新链表。
又例如,在可用服务提供者进入子区域之后,处理引擎112可以通过修改(即,写入)与子区域相对应的链表更新子区域内的可用服务提供者的数量。例如,处理引擎112可以将新位置添加到链表中。因此,处理引擎112还可以通过无效位置识别与节点的父节点相对应的链表,并且相应地更新链表。
锁定状态确定单元930可以被配置为确定与节点相关联的读写锁状态。如这里所使用的,读写锁可以用于控制对应于四叉树的节点的链表的读取和/或写入。读写锁状态可以包括读取状态和写入状态。在一些实施例中,处理引擎112可以通过至少两个线程读取或写入对应于至少两个节点的链表。当链表的读写锁在读取状态下时,它可以指示任何至少两个线程当前都可以读取链表。当链表的读写锁在写入状态下时,它可以指示某个线程可能正在写入链表,而其他线程目前无法读取或写入链表。
在一些实施例中,处理引擎112可以为对应于四叉树中的至少两个节点的至少两个链表设置至少两个读写锁。例如,对于对应于根节点的链表,处理引擎112可以仅提供一个读写锁。又如例,处理引擎112可以为与第二层(即,第一中间层)的四个节点对应的四个链表提供四个读写锁。作为另一个例子,处理引擎112可以为对应于第i层的4i-1(i≥5)个节点的4i-1(i≥5)个链表提供1024个读写锁,并且1024个读写锁可以由第i层的4i-1个链表共享。
读写模块430中的单元可以通过有线连接或无线连接彼此连接或通信。有线连接可以包括金属电缆、光缆、混合电缆等,或其任意组合。无线连接可以包括局域网络(LAN)、广域网路(WAN)、蓝牙、ZigBee网络、近场通讯(NFC)等,或其任意组合。两个或以上的单元可以组合成单个单元,并且任何一个单元可以分为两个或以上子单元。
图10是根据本申请的一些实施例所示的用于写入空间索引的示例性过程的流程图。过程1000可以由按需服务系统100执行。例如,过程1000可以实现为存储在存储器ROM230或RAM 240中的一组指令(例如,应用程序)。处理器220可以执行所述一组指令,并且当执行指令时,可以将其配置为执行过程1000。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程1000在实现时可以添加一个或以上未描述的额外操作和/或没有讨论的一个或以上此处所描述的操作。另外,如图10所示和下面描述的,过程操作的顺序不是限制性的。
应当注意,当处理引擎112打算读取或写入特定链表(例如,确定或更新对应于特定链表的子区域中的可用服务提供者的数量)时,处理引擎112可以从根节点逐层爬行四叉树直到到达对应于特定链表的节点。在爬行过程期间,处理引擎112可以沿着四叉树中的分支逐层访问节点(例如,从节点A到节点B2并进一步到图11中所示的节点C2)。以下描述以书写过程为例,并不旨在限制本申请的范围。
在1010中,处理引擎112的线程(例如,处理引擎112的处理电路)(例如,写入控制单元920)可以访问与第一链表相对应的第i层的第一节点。
在1020中,线程(例如,锁定状态确定单元930)可以将第一链表的第一读写锁状态确定为写入状态。如这里所使用的,写入状态指示第一链表不能被其他线程读取或写入。
在1030中,线程(例如,写入控制单元920)可以访问与第二链表相对应的第j层的第二节点。如这里所使用的,第j层在第i层下面,第二节点是第一节点的子节点。
在1040中,线程(例如,锁定状态确定单元930)可以将第二链表的第二读写锁状态确定为写入状态。此处的写入状态表示第二链表不能被其他线程读取或写入。
在1050中,线程(例如,锁定状态确定单元930)可以将第一读写锁状态从写入状态改变为读取状态。如这里所使用的,由于线程已经爬过第一节点并到达第二节点,所以第一节点和第一节点的其他子节点现在可以被其他线程访问。
处理引擎112的每个线程可以在不同层动态地改变节点的读写锁状态,直到线程到达对应于线程打算写入的特定链表的节点。
应当注意以上描述的写入空间索引是为了说明的目的而提供的,并非旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出多种变化或修改。但是,那些变化与修改可能不会背离本申请的精神和范围。例如,可以同时执行步骤1010和步骤1020。又例如,步骤1040和1050可以同时执行。
图11是根据本申请的一些实施例所示的示例性四叉树的示意图。如图11所示,如果线程打算写入对应于节点C2的链表,则线程可以首先确定对应于节点A(即,根节点)的链表A的读写锁状态为写入状态。在这种情况下,链表A和对应于节点A的所有子节点的链表不能被其他线程读取或写入。
然后线程爬行到节点B2,线程可以将与节点B2相对应的链表B2的读写状态确定为写入状态,并且同时或连续地改变链表A的读写锁状态为读取状态。在这种情况下,链表B2和对应于节点B2的所有子节点的链表不能被其他线程读取或写入,并且对应于节点B1、B3和B4的链表可以由其他线程读取或写入。
此外,线程爬行到节点C2,线程可以将与节点C2相对应的链表C2的读写状态确定为写入状态,并且同时或连续地将链表B2读写锁状态改变为读取状态。在这种情况下,链表C2和对应于节点C2的所有子节点的链表不能被其他线程读取或写入,并且对应于节点C1、C3和C4的链表可以由其他线程读取或写入。
上文已对基本概念做了描述,显然,对于阅读此申请后的本领域的普通技术人员来说,上述发明披露仅作为示例,并不构成对本申请的限制。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍附属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。例如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特性。因此,应强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改良。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本申请的各方面可以采取体现在一个或以上计算机可读介质中的计算机程序产品的形式,其中计算机可读程序代码包含在其中。
计算机可读信号介质可能包含一个内含有计算机程序代码的传播数据信号,例如在基带上或作为载波的一部分。此类传播信号可以有多种形式,包括电磁形式、光形式等或任何合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通信、传播或传输供使用的程序。位于计算机可读信号介质上的程序代码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF等,或任何上述介质的组合。
本申请各方面操作所需的计算机程序码可以用一种或多种程序语言的任意组合编写,包括面向对象程序设计,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET,Python或类似的常规程序编程语言,如“C”编程语言、Visual Basic、Fortran1703、Perl、COBOL 1702、PHP、ABAP,动态编程语言如Python、Ruby和Groovy或其它编程语言。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网络(LAN)或广域网路(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

Claims (18)

1.一种系统,包括:
至少一个存储介质,包括用于确定与区域相关联的四叉树的一组指令;
与所述至少一个存储介质通信的至少一个处理器,其中,当执行所述一组指令时,所述至少一个处理器用于:
编码包括至少两个子区域的区域;
相对于编码区域生成四叉树,所述四叉树包括至少两层和至少两个节点,其中,
所述至少两个节点中的每一个节点对应于所述至少两个子区域中的至少一个区域;以及
确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每一个链表对应于所述至少两个节点中的一个节点,其中,
对应于第二节点的第二链表附属于对应于第一节点的第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
2.根据权利要求1所述的系统,其特征在于,为了编码包括至少两个子区域的区域,所述至少一个处理器用于:
基于几何库,编码所述至少两个子区域中的每一个区域。
3.根据权利要求1所述的系统,其特征在于,通过所述第一链表中包括的无效位置,对应于所述第二节点的所述第二链表附属于对应于所述第一节点的所述第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
4.根据权利要求1所述的系统,其特征在于,所述至少两层中的每一层包括至少两个读写锁,其可由所述至少两个链表共享。
5.根据权利要求4所述的系统,其特征在于,所述读写锁状态包括读取状态或写入状态。
6.根据权利要求1所述的系统,其特征在于,所述至少一个处理器进一步用于:
访问对应于所述第一链表的所述第一节点;
确定所述第一链表的第一读写锁状态为写入状态;
访问对应于所述第二链表的所述第二节点;
确定所述第二链表的第二读写锁状态为所述写入状态;以及
将所述第一链表的所述第一读写锁状态从所述写入状态改变为所述读取状态。
7.一种在具有至少一个处理器、至少一个存储介质和连接到网络的通信平台的计算设备上实现的方法,包括:
通过所述至少一个处理器,编码包括至少两个子区域的区域;
通过所述至少一个处理器,相对于编码区域生成四叉树,所述四叉树包括至少两层和至少两个节点,其中,
所述至少两个节点中的每一个节点对应于所述至少两个子区域中的至少一个区域;以及
通过所述至少一个处理器,确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每一个链表对应于所述至少两个节点中的一个,其中,
对应于第二节点的第二链表附属于对应于第一节点的第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
8.根据权利要求7所述的方法,其特征在于,进一步包括:
通过所述至少一个处理器,基于几何库,编码所述至少两个子区域中的每一个区域。
9.根据权利要求7所述的方法,其特征在于,通过所述第一链表中包括的无效位置,对应于所述第二节点的所述第二链表附属于对应于所述第一节点的所述第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
10.根据权利要求7所述的方法,其特征在于,所述至少两层中的每一层包括至少两个读写锁,其可由所述至少两个链表共享。
11.根据权利要求10所述的方法,其特征在于,所述读写锁状态包括读取状态或写入状态。
12.根据权利要求7所述的方法,其特征在于,进一步包括:
通过所述至少一个处理器,访问对应于所述第一链表的所述第一节点;
通过所述至少一个处理器,确定所述第一链表的第一读写锁状态为写入状态;
通过所述至少一个处理器,访问对应于所述第二链表的所述第二节点;
通过所述至少一个处理器,确定所述第二链表的第二读写锁状态为所述写入状态;以及
通过所述至少一个处理器,将所述第一链表的所述第一读写锁状态从所述写入状态改变为所述读取状态。
13.一种非暂时性计算机可读介质,包括用于确定与区域相关联的四叉树的一组指令,其中当由至少一个处理器执行时,所述一组指令指示所述至少一个处理器执行以下操作:
通过所述至少一个处理器,编码包括至少两个子区域的区域;
通过所述至少一个处理器,相对于编码区域生成四叉树,所述四叉树包括至少两层和至少两个节点,其中,
所述至少两个节点中的每一个节点对应于所述至少两个子区域中的至少一个区域;以及
通过所述至少一个处理器,确定与所述四叉树相关联的至少两个链表,所述至少两个链表中的每一个链表对应于所述至少两个节点中的一个,其中,
对应于第二节点的第二链表附属于对应于第一节点的第一链表,
所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
14.根据权利要求13所述的非暂时性计算机可读介质,其特征在于,所述指令集进一步指示所述至少一个处理器执行以下操作:
通过所述至少一个处理器,基于几何库,编码所述至少两个子区域中的每一个区域。
15.根据权利要求13所述的非暂时性计算机可读介质,其特征在于,通过所述第一链表中包括的无效位置,对应于所述第二节点的所述第二链表附属于对应于所述第一节点的所述第一链表,所述第一节点是在所述四叉树的上层的所述第二节点的父节点。
16.根据权利要求13所述的非暂时性计算机可读介质,其特征在于,所述至少两层中的每一层包括至少两个读写锁,其可由所述至少两个链表共享。
17.根据权利要求16所述的非暂时性计算机可读介质,其特征在于,所述读写锁状态包括读取状态或写入状态。
18.根据权利要求13所述的非暂时性计算机可读介质,其特征在于,所述一组指令还指示所述至少一个处理器执行以下操作:
通过所述至少一个处理器,访问对应于所述第一链表的所述第一节点;
通过所述至少一个处理器,确定所述第一链表的第一读写锁状态为写入状态;
通过所述至少一个处理器,访问对应于所述第二链表的所述第二节点;
通过所述至少一个处理器,确定所述第二链表的第二读写锁状态为所述写入状态;以及
通过所述至少一个处理器,将所述第一链表的所述第一读写锁状态从所述写入状态改变为所述读取状态。
CN201780092639.9A 2017-07-17 2017-07-17 用于空间索引的系统和方法 Pending CN110799968A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/093146 WO2019014808A1 (en) 2017-07-17 2017-07-17 SYSTEMS AND METHODS FOR SPATIAL INDEX

Publications (1)

Publication Number Publication Date
CN110799968A true CN110799968A (zh) 2020-02-14

Family

ID=65014924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780092639.9A Pending CN110799968A (zh) 2017-07-17 2017-07-17 用于空间索引的系统和方法

Country Status (3)

Country Link
US (1) US20200142876A1 (zh)
CN (1) CN110799968A (zh)
WO (1) WO2019014808A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289466A (zh) * 2011-07-21 2011-12-21 东北大学 一种基于区域覆盖的k近邻查询方法
CN102662907A (zh) * 2012-03-02 2012-09-12 北京百度网讯科技有限公司 多处理器环境下的tcp连接的指标获取方法及装置
US20130185271A1 (en) * 2012-01-17 2013-07-18 Apple Inc. Optimized b-tree
CN103677971A (zh) * 2012-09-21 2014-03-26 上海斐讯数据通信技术有限公司 多线程处理系统及方法
US20150324481A1 (en) * 2014-05-06 2015-11-12 International Business Machines Corporation Building Entity Relationship Networks from n-ary Relative Neighborhood Trees

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2339481A1 (en) * 2009-12-03 2011-06-29 National Digital Research Centre Enablement of three-dimensional hosting, indexing, analysing and querying structure for spatial systems
CN105138560A (zh) * 2015-07-23 2015-12-09 北京天耀宏图科技有限公司 基于多级空间索引技术的分布式空间矢量数据管理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289466A (zh) * 2011-07-21 2011-12-21 东北大学 一种基于区域覆盖的k近邻查询方法
US20130185271A1 (en) * 2012-01-17 2013-07-18 Apple Inc. Optimized b-tree
CN102662907A (zh) * 2012-03-02 2012-09-12 北京百度网讯科技有限公司 多处理器环境下的tcp连接的指标获取方法及装置
CN103677971A (zh) * 2012-09-21 2014-03-26 上海斐讯数据通信技术有限公司 多线程处理系统及方法
US20150324481A1 (en) * 2014-05-06 2015-11-12 International Business Machines Corporation Building Entity Relationship Networks from n-ary Relative Neighborhood Trees

Also Published As

Publication number Publication date
US20200142876A1 (en) 2020-05-07
WO2019014808A1 (en) 2019-01-24

Similar Documents

Publication Publication Date Title
US10969239B2 (en) Systems and methods for determining a point of interest
US10883842B2 (en) Systems and methods for route searching
US20200151640A1 (en) Systems and methods for service request allocation
US11546729B2 (en) System and method for destination predicting
CN108701279B (zh) 用于确定未来运输服务时间点的预测分布的系统和方法
US11017662B2 (en) Systems and methods for determining a path of a moving device
CN110537212B (zh) 确定预估到达时间的系统与方法
JP6632723B2 (ja) サービスの順序列を更新するためのシステム及び方法
CN110999331B (zh) 一种命名接载位置的方法和系统
CN109313036B (zh) 路线规划的系统及方法
CN109791731B (zh) 一种预估到达时间的方法和系统
CN111507732B (zh) 用于识别相似轨迹的系统和方法
CN112154473A (zh) 用于推荐上车点的系统和方法
CN110785627B (zh) 一种用于路径确定的系统和方法
CN111860926B (zh) 用于预测服务需求信息的系统和方法
CN110799968A (zh) 用于空间索引的系统和方法
CN110832811B (zh) 用于发送空间数据的系统和方法
CN111386542A (zh) 用于分配按需服务请求的系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination