IP Library Granted Patent US 9,418,077
Granted Patent B2
US 9,418,077 · App. 14/796,329 · Granted Aug 16, 2016

System and method for geo-location data type searching in an on demand environment

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 9,418,077
App. No.
14/796,329
Granted
Aug 16, 2016
Kind
B2
Abstract

Methods and systems are provided for retrieving, from a database containing a list of records, a subset of the list of records located within a user defined distance from a target point, each record in the list of records having a compound geo-location data type including a first data field and a second data field. The method involves generating a circle around the target point; identifying records having a geo-location within the circle; including the identified records in a result set; and presenting the result set to a user on a display screen. The method further includes treating the first data field and the second data field as a single data element.

Claims (57)

1. A method of retrieving, from a database containing a list of records, a result set of the list of records located within a user defined distance from a target point, each record in the list of records having a compound geo-location data type including a latitude field and a longitude field, the method comprising:

generating, with a processor, a circle around the target point with a radius corresponding to the user defined distance;

identifying, with the processor, a result set of records having a geo-location within the circle,

wherein identifying comprises treating the first data field and the second data field as a single data element;

filtering out any records outside of the circle using regular indexes on the latitude and longitude fields of the records to form a first subset of the list of records;

computing distance values for each of the first subset of the list of records using one of:

the haversine formula;

the spherical law of cosines; and

the Euclidian distance theorem;

filtering out any records from the first subset of the list of records with a respective distance value greater than the radius corresponding to the user defined distance to form the result set from any remaining records; and

presenting the result set to a user on a display screen.

2. The method of claim 1 , wherein the target point is one of the user's past, present, and future location.

3. The method of claim 1 , wherein filtering out any records outside of the circle comprises:

determining the coordinates of a first square comprising the smallest dimensions which contain the circle;

identifying the records outside the first square; and

filtering out any records outside the first square.

4. The method of claim 3 , wherein identifying the result set further comprises, prior to computing distance values:

determining the coordinates of a second square comprising the largest dimensions included within the circle;

identifying the records within the second square; and

including in the result set any records within the second square.

5. The method of claim 4 , wherein the identifying the records within the second square comprises using the regular indexes on the latitude and longitude fields of the records.

6. The method of claim 4 , wherein computing distance values comprises computing distances only for those records having geo-locations falling between the first square and the second square.

7. The method of claim 1 , wherein the database comprises a multi-tenant database.

8. In a multi-tenant computing environment of the type including a multi-tenant database, a method of searching for a subset of records based on distance from a user defined target location, the method comprising:

formatting each record in the list of records with a compound geo-location data type including a first data field and a second data field;

constructing a query including search criteria and a distance value;

identifying, with a processor, a first set of data for a particular tenant within the multi-tenant database which satisfies the search criteria;

defining, with the processor, a target point and a radius R;

generating, with the processor, a circle having a radius R around the target point;

identifying, with the processor, a second set of data records having a geo-location within the circle, wherein the second set of data is a subset of the first set of data;

including, with the processor, the identified records in a result set; and

presenting the result set to a user on a display screen.

9. The method of claim 8 , wherein identifying the second set of data records comprises treating the first data field and the second data field as a single data element.

10. The method of claim 9 , wherein the first and second data fields comprise latitude and longitude.

11. The method of claim 10 , wherein identifying the second set of data records further comprises:

determining the coordinates of a first square comprising the smallest dimensions which contain the circle;

identifying the records outside the first square; and

filtering out any records outside the first square from the result set.

12. The method of claim 11 , wherein filtering out comprises filtering out using regular indexes on the latitude and longitude fields of the records.

13. The method of claim 12 , wherein identifying the second set of data records further comprises:

determining the coordinates of a second square comprising the largest dimensions included within the circle;

identifying the records within the second square; and

including in the result set all records within the second square.

14. The method of claim 13 , wherein the identifying the records within the second square comprises using regular indexes on the latitude and longitude fields of the records.

15. The method of claim 14 , wherein identifying records having a geo-location within the circle comprises computing distances for those records having geo-locations falling between the first square and the second square.

16. The method of claim 15 , wherein the actual distance for the records lying between the first and second squares is computed, and the actual distance for those records not lying between the first and second squares is not computed.

17. A computer application for retrieving, from a database containing a list of records, a result set of the list of records located within a user defined distance from a target point, each record in the list of records having a compound geo-location data type including a latitude field and a longitude field, the computer application embodied in a non-transitory medium for operation by a computer processor for performing the steps of:

generating a circle around the target point with a radius corresponding to the user defined distance;

identifying records having a geo-location within the circle,

wherein identifying comprises treating the first data field and the second data field as a single data element;

filtering out any records outside of the circle using regular indexes on the latitude and longitude fields of the records to form a first subset of the list of records;

computing distance values for each of the first subset of the list of records using one of:

the haversine formula;

the spherical law of cosines; and

the Euclidian distance theorem;

filtering out any records from the first subset of the list of records with a respective distance value greater than the radius corresponding to the user defined distance to form the result set from any remaining records; and

presenting the result set to a user on a display screen.

Assignments (2)
CHANGE OF NAME Recorded Nov 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069430/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2015
From: HERSANS, ALEXANDRE; WONG, SIMON Y.; WOLVERTON, SHAWNA; SEKIGUCHI, JUNICHIRO
To: SALESFORCE.COM, INC.
Reel/Frame 036058/0751 →