IP Library Granted Patent US 10,327,094
Granted Patent B2
US 10,327,094 · App. 15/435,185 · Granted Jun 18, 2019

Systems and methods to track locations visited by mobile devices and determine neighbors of and distances among locations

Inventors: Paolo D'Alberto (San Jose, CA); Veronica Milenkiy (Burlingame, CA); Ahmad Fairiz Azizi (Santa Clara, CA)
Assignee: NINTHDECIMAL, INC.
H04W4/02H04W64/003
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,327,094
App. No.
15/435,185
Granted
Jun 18, 2019
Kind
B2
Abstract

Systems and methods including mobile devices determining their locations using a location determination system, such as a global positioning system. A set of locations, including locations of one or more mobile devices, are identified by their coordinates on the surface of the Earth. The set of locations are efficiently organized into a graph of locations connecting to neighboring locations with edges representing distances to their neighboring locations. For each respective location, a computing device combines coordinates of the respective location into an identifier of a cell that contains the respective location without floating point computations, and stores cell-location data associating respective cells with respective locations. For each respective location, the computing device identifies neighboring cells of the cell that contains the respective location, looks up locations associated with the identifiers of the cell and its neighboring cells, as neighboring locations or candidates for neighboring locations.

Claims (65)

1. A computing device, comprising:

at least one microprocessor; and

memory storing instructions configured to instruct the at least one microprocessor to:

store, in the computing device, coordinates of a plurality of locations on a surface of the Earth, wherein the surface of the Earth is covered by a plurality of cells;

for each respective location in the plurality of locations,

combine, by the computing device, coordinates of the respective location into an identifier of a cell among the plurality of cells, wherein the cell contains the respective location on the surface of the Earth; and

store, in the computing device, data associating the identifier of the cell and the respective location to facilitate a look up of the respective location using the identifier of the cell; and

for the respective location in the plurality of locations,

identify, by the computing device, a plurality of neighboring cells of the cell that contains the respective location on the surface of the Earth;

look up, by the computing device, a subset of locations by using the identifier of the cell and the identifiers of the neighboring cells in stored cell-location data that associates identifiers of respective cells and locations contained within the respective cells;

compute, by the computing device, distances between the respective location and locations in the subset;

generate, by the computing device, graph data linking the respective location to locations in the subset with edges representing the distances, wherein when a distance between locations is less than a threshold distance the locations are linked via an edge in the graph data;

store, in the computing device, the generated graph data linking the respective location to locations in the subset with the edges representing the distances that are each less than the threshold distance, wherein the plurality of locations are represented as nodes in the graph data;

store, in the computing device, a set of keywords in association with the respective location; and

propagate, by the computing device, the set of keywords via the edges to locations in the subset, wherein the propagating is caused by updating a profile of a given location in the subset based on a weighted average of a likelihood of a keyword in the profile of the given location and likelihoods of the keyword in respective profiles of locations identified in the generated graph data as neighboring the given location.

2. The computing device of claim 1 , wherein the coordinates of the respective location are combined to provide the identifier of the cell according to a predetermined function of the coordinates of the respective location, without using additional data stored in the computing device, and without using a floating point number computation.

3. The computing device of claim 2 , wherein the coordinates of the respective location are combined via:

generating two integers from longitude and latitude coordinates of the respective location according to a precision level; and

combining the two integers to provide the identifier of the cell.

4. The computing device of claim 1 , wherein the coordinates of the respective location are combined via:

selecting digits from the longitude and the latitude of the location in accordance with a cell resolution level; and

combining the digits selected from the longitude and the latitude of the location into an integer representing the identifier of the cell.

5. The computing device of claim 1 , wherein the plurality of neighboring cells are identified via computing identifiers of the neighboring cells from the identifier of the cell or the coordinates of the respective location; and the computing of the identifiers of the neighboring cells is based on predetermined functions of the identifier of the cell, without using additional data stored in the computing device and without a floating point number computation.

6. A method implemented in a computing device, the method comprising:

storing, in the computing device, coordinates of a plurality of locations on a surface of the Earth, wherein the surface of the Earth is covered by a plurality of cells;

for each respective location in the plurality of locations,

combining, by the computing device, coordinates of the respective location into an identifier of a cell among the plurality of cells, wherein the cell contains the respective location on the surface of the Earth; and

storing, in the computing device, data associating the identifier of the cell and the respective location to facilitate a look up of the respective location using the identifier of the cell; and

for the respective location in the plurality of locations,

identifying, by the computing device, a plurality of neighboring cells of the cell that contains the respective location on the surface of the Earth;

looking up, by the computing device, a subset of locations by using the identifier of the cell and the identifiers of the neighboring cells in stored cell-location data that associates identifiers of respective cells and locations contained within the respective cells;

computing, by the computing device, distances between the respective location and locations in the subset;

generating, by the computing device, graph data linking the respective location to locations in the subset with edges representing the distances, wherein when a distance between locations is less than a threshold distance the locations are linked via an edge in the graph data;

storing, in the computing device, the generated graph data linking the respective location to locations in the subset with the edges representing the distances that are each less than the threshold distance, wherein the plurality of locations are represented as nodes in the graph data;

storing, in the computing device, a set of keywords in association with the respective location; and

propagating, by the computing device, the set of keywords via the edges to locations in the subset, wherein the propagating is caused by updating a profile of a given location in the subset based on a weighted average of a likelihood of a keyword in the profile of the given location and likelihoods of the keyword in respective profiles of locations identified in the generated graph data as neighboring the given location.

7. The method of claim 6 , wherein the coordinates of the respective location are combined to provide the identifier of the cell without using additional data stored in the computing device.

8. The method of claim 6 , wherein the coordinates of the respective location are combined to provide the identifier of the cell according to a predetermined function of the coordinates of the respective location.

9. The method of claim 6 , wherein the combining of the coordinates of the respective location comprises:

generating two integers from longitude and latitude coordinates of the respective location according to a precision level; and

combining the two integers to provide the identifier of the cell.

10. The method of claim 9 , wherein the two integers are combined to form the identifier of the cell without using a floating point number computation.

11. The method of claim 10 , wherein the cell is a rectangle area in a longitude latitude representation of the surface of the Earth.

12. The method of claim 6 , wherein the combining of the coordinates of the respective location comprises:

selecting digits from the longitude and the latitude of the location in accordance with a cell resolution level; and

combining the digits selected from the longitude and the latitude of the location into an integer representing the identifier of the cell.

13. The method of claim 6 , wherein the identifying of the plurality of neighboring cells comprises computing identifiers of the neighboring cells from the identifier of the cell.

14. The method of claim 13 , wherein the computing of the identifiers of the neighboring cells is based on the identifier of the cell without using additional data stored in the computing device.

15. The method of claim 13 , wherein the computing of the identifiers of the neighboring cells is based on predetermined functions of the identifier of the cell.

16. The method of claim 13 , wherein the computing of the identifiers of the neighboring cells is based on the identifier of the cell without a floating point number computation.

17. The method of claim 6 , wherein the identifying of the plurality of neighboring cells comprises computing identifiers of the neighboring cells from the coordinates of the respective location.

18. The method of claim 6 , wherein the propagating is based on weights computed based on distances represented by the edges in the graph data.

19. A non-transitory computer storage medium storing instructions configured to instruct a computing device to perform a method, the method comprising:

storing, in the computing device, coordinates of a plurality of locations on a surface of the Earth, wherein the surface of the Earth is covered by a plurality of cells;

for each respective location in the plurality of locations,

combining, by the computing device, coordinates of the respective location into an identifier of a cell among the plurality of cells, wherein the cell contains the respective location on the surface of the Earth; and

storing, in the computing device, data associating the identifier of the cell and the respective location to facilitate a look up of the respective location using the identifier of the cell; and

for the respective location in the plurality of locations,

identifying, by the computing device, a plurality of neighboring cells of the cell that contains the respective location on the surface of the Earth;

looking up, by the computing device, a subset of locations by using the identifier of the cell and the identifiers of the neighboring cells in stored cell-location data that associates identifiers of respective cells and locations contained within the respective cells;

computing, by the computing device, distances between the respective location and locations in the subset;

generating, by the computing device, graph data linking the respective location to locations in the subset with edges representing the distances, wherein when a distance between locations is less than a threshold distance the locations are linked via an edge in the graph data;

storing, in the computing device, the generated graph data linking the respective location to locations in the subset with the edges representing the distances that are each less than the threshold distance, wherein the plurality of locations are represented as nodes in the graph data;

storing, in the computing device, a set of keywords in association with the respective location; and

propagating, by the computing device, the set of keywords via the edges to locations in the subset, wherein the propagating is caused by updating a profile of a given location in the subset based on a weighted average of a likelihood of a keyword in the profile of the given location and likelihoods of the keyword in respective profiles of locations identified in the generated graph data as neighboring the given location.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Nov 27, 2023
From: MULTIPLIER CAPITAL II, LP
To: INMARKET MEDIA, LLC
Reel/Frame 065677/0537 →
SECURITY INTEREST Recorded Oct 27, 2023
From: INMARKET MEDIA, LLC
To: CITIBANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 065367/0537 →
SECURITY INTEREST Recorded Sep 1, 2022
From: INMARKET MEDIA, LLC
To: MULTIPLIER GROWTH PARTNERS, LP
Reel/Frame 060963/0081 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2021
From: NINTHDECIMAL, INC.
To: INMARKET MEDIA, LLC
Reel/Frame 055183/0951 →
SECURITY INTEREST Recorded Sep 9, 2020
From: INMARKET MEDIA, LLC
To: MULTIPLIER CAPITAL II, LP
Reel/Frame 053719/0908 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2019
From: D'ALBERTO, PAOLO; MILENKIY, VERONICA; AZIZI, AHMAD FAIRIZ
To: NINTHDECIMAL, INC.
Reel/Frame 049023/0623 →
SECURITY INTEREST Recorded Mar 13, 2019
From: NINTHDECIMAL, INC.
To: MULTIPLIER CAPITAL II, LP
Reel/Frame 048589/0199 →
Continuity (3)
Provisional Application 62377256 · Aug 19, 2016
Provisional Application 62346689 · Jun 7, 2016
Related Publication 20170353825A1 · Dec 7, 2017