U.S. patent application number 12/437718 was filed with the patent office on 2010-11-11 for refining location estimates and reverse geocoding based on a user profile.
This patent application is currently assigned to GOOGLE INC.. Invention is credited to Michael Chu, Chris Lambert, Rohan Seth.
Application Number | 20100287178 12/437718 |
Document ID | / |
Family ID | 43050467 |
Filed Date | 2010-11-11 |
United States Patent
Application |
20100287178 |
Kind Code |
A1 |
Lambert; Chris ; et
al. |
November 11, 2010 |
REFINING LOCATION ESTIMATES AND REVERSE GEOCODING BASED ON A USER
PROFILE
Abstract
The present invention pertains to enhancement or refinement of
estimated locations based upon user-specific information. Upon user
authorization, geographical information is extracted from a number
of user-related sources, including the web browser history, search
history, maps history, address book, e-mail archives and calendar
entries. Such information is used to build a spatial index of
specific physical locations for a geocoded result set. From this,
heat maps identifying particular locations from the user-related
sources are created for different periods of time. The heat maps
may be used to refine an initial location estimate of the user.
This may be done by determining whether one or more positions in a
given heat map provide a more accurate position of the user than
the initial estimate. If so, a best position is selected. This can
be used to provide enhanced driving directions to the user.
Inventors: |
Lambert; Chris; (San
Francisco, CA) ; Chu; Michael; (Los Altos Hills,
CA) ; Seth; Rohan; (San Francisco, CA) |
Correspondence
Address: |
GOOGLE;Lerner, David, Littenberg, Krumholz & Mentlik, LLP
600 South Avenue West
Westfield
NJ
07090
US
|
Assignee: |
GOOGLE INC.
Mountain View
CA
|
Family ID: |
43050467 |
Appl. No.: |
12/437718 |
Filed: |
May 8, 2009 |
Current U.S.
Class: |
707/765 ;
707/830 |
Current CPC
Class: |
G06F 16/23 20190101;
G01C 21/3682 20130101; G06F 16/29 20190101; G06Q 30/02 20130101;
G01S 5/021 20130101; G06F 16/2228 20190101; G06F 16/9537 20190101;
H04W 4/18 20130101; H04L 67/306 20130101; H04W 4/029 20180201; H04L
67/18 20130101; G06F 16/955 20190101; G01S 5/0257 20130101; H04W
4/02 20130101; G01S 5/02 20130101 |
Class at
Publication: |
707/765 ;
707/830 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A method for refining physical location information for a place
of interest, comprising: analyzing at least one electronic database
containing information about a selected user to determine whether
the at least one electronic database includes geographical
information; extracting a result set from the at least one
electronic database, the result set including the geographical
information; performing geopoint extraction on the result set to
obtain specific physical locations for each item of geographical
information in the result set; constructing a spatial index
containing the specific physical locations and time information for
one or more of the specific physical locations; and creating at
least one heat map containing selected ones of the specific
physical locations based upon the time information.
2. The method of claim 1, further comprising ranking results in the
spatial index to indicate a confidence in the specific physical
locations.
3. The method of claim 2, wherein the confidence is determined by
accuracy of the geopoint extraction.
4. The method of claim 2, wherein the time information indicates at
least one of a time an event occurred and a time that selected
information about the event expired.
5. The method of claim 4, wherein different heat maps display
different ones of the selected specific physical locations based
upon the ranked results in the spatial index and the method further
comprises presenting at least one of the heat maps on a display
device.
6. A processing system for processing geographical information,
comprising: at least one processor; a geolocation module associated
with the at least one processor; and memory for storing data, the
memory electrically coupled to the at least one processor; wherein
the geolocation module is configured to analyze at least one
electronic database containing information about a selected user to
determine whether the at least one electronic database includes
geographical information, to extract a result set from the at least
one electronic database, the result set including the geographical
information, to perform geopoint extraction on the result set to
obtain specific physical locations for each item of geographical
information in the result set, to construct a spatial index
containing the specific physical locations and time information for
one or more of the specific physical locations, to store the
spatial index in the memory of the processing system, and to create
at least one heat map containing selected ones of the specific
physical locations based upon the time information.
7. The processing system of claim 6, wherein the geolocation module
is further configured to transmit the at least one heat map to an
authorized user for presentation on a display of a user device.
8. The processing system of claim 6, wherein the geolocation module
includes a protected data fetcher for communicating with the at
least one electronic database, the protected data fetcher being
configured to search the at least one electronic database for
geographical data contained in web pages and search histories.
9. The processing system of claim 6, wherein the specific physical
locations maintained in the spatial index correspond to latitude
and longitude coordinates of physical addresses.
10. The processing system of claim 6, wherein each heat map
presents the selected ones of the specific physical locations
displays as ranked points of interest based upon the time
information.
11. A method for refining a location estimate of a user's physical
location, comprising: estimating a current location of the user;
comparing the estimated current location with one or more heat maps
identifying specific physical locations in a predetermined
geographical area, the one or more heat maps containing time
information associated with one or more of the specific physical
locations associated with the user, each heat map being derived
from at least one electronic database containing information about
the user; determining a set of relevant matching addresses from a
selected one of the heat maps; analyzing the set of relevant
matching addresses of the selected heat map that are within a
preset distance of the estimated current location; determining
whether a given one of the relevant matching addresses provides a
more accurate location than the estimated current location; and if
the given one of the relevant matching addresses provides a more
accurate location than the estimated current location, selecting
the given address as a refined position of the user.
12. The method of claim 11, wherein the user's current location is
estimated from historical user information stored in the at least
one electronic database.
13. The method of claim 11, wherein at least one of the relevant
matching addresses is selected based upon a frequency ranking
representing how often the at least one relevant matching address
appears in the at least one electronic database.
14. The method of claim 11, wherein at least one of the relevant
matching addresses is selected based upon a timeliness ranking
representing how often the at least one relevant matching address
appears in the at least one electronic database at a given point in
time.
15. A location estimation system, comprising: a processor; a
geolocation module associated with the at least one processor for
executing operations; and memory for storing data, the memory
electrically coupled to the processor; wherein the geolocation
module is configured to estimate a current location of the user;
compare the estimated current location with one or more heat maps
identifying specific physical locations in a predetermined
geographical area, the one or more heat maps containing time
information associated with one or more of the specific physical
locations associated with the user, each heat map being derived
from at least one electronic database containing information about
the user; determine a set of relevant matching addresses from a
selected one of the heat maps; analyze the set of relevant matching
addresses of the selected heat map that are within a preset
distance of the estimated current location; determine whether a
given one of the relevant matching addresses provides a more
accurate location than the estimated current location; and if the
given one of the relevant matching addresses provides a more
accurate location than the estimated current location, select the
given address as a refined position of the user.
16. The location estimation system of claim 15, wherein the
processor is configured to prefetch data associated with the user's
estimated current location from a remote database and to store the
prefetched data in the memory.
17. The location estimation system of claim 16, wherein the
processor is operable to present the refined position in the
selected heat map on a display device.
18. The location estimation system of claim 15, wherein at least
one of the relevant matching addresses is selected based upon a
frequency ranking representing how often the at least one relevant
matching address appears in the at least one electronic
database.
19. The location estimation system of claim 15, wherein at least
one of the relevant matching addresses is selected based upon a
timeliness ranking representing how often the at least one relevant
matching address appears in the at least one electronic database at
a given point in time.
Description
BACKGROUND OF THE INVENTION
[0001] 1. Field of the Invention
[0002] The present invention relates generally to location-based
services and applications for mobile and desktop users. More
particularly, the present invention relates to refining locations
or positions in view of user-specific information.
[0003] 2. Description of Related Art
[0004] Location-based services and applications are becoming more
and more popular as the number and types of portable electronic
devices increases. Devices such as mobile telephones, PDAs and
laptop/palmtop computers may be used indoors and outdoors in one
location or while on the go. The approximate location of the user's
device or a place of interest may be found with a number of
different technologies. One such technology is satellite-based
location using the Global Positioning System ("GPS"). Another
location technology employs triangulation among multiple cell
towers to estimate the device's position. A further location
technology is IP geocoding. In this technique, a device's IP
address may be mapped to a physical location.
[0005] Unfortunately, existing location technologies have limited
accuracies. For instance, cell tower triangulation and IP geocoding
may provide a very coarse location estimate. Depending upon signal
strength, tower placement, interference and other factors,
triangulation errors may be on the order of hundreds of feet or
even miles. IP geocoding may be even more unreliable, with errors
of hundreds of miles possible. Even GPS, which may be accurate to
10-20 feet or better, may be unusable in indoor environments such
as shopping plazas, office building, subways and the like.
[0006] Aspects of the present invention address these and other
problems to provide refined or enhanced positioning information
based upon user-specific information.
BRIEF SUMMARY OF THE INVENTION
[0007] In accordance with one embodiment, a method for refining
physical location information for a place of interest comprises
analyzing at least one electronic database containing information
about a selected user to determine whether the at least one
electronic database includes geographical information; extracting a
result set from the at least one electronic database, the result
set including the geographical information; performing geopoint
extraction on the result set to obtain specific physical locations
for each item of geographical information in the result set;
constructing a spatial index containing the specific physical
locations and time information for one or more of the specific
physical locations; creating at least one heat map containing
selected ones of the specific physical locations based upon the
time information.
[0008] In one example, the method further comprises ranking results
in the spatial index to indicate a confidence in the specific
physical locations. In this case, the confidence may be determined
by accuracy of the geopoint extraction. Alternatively, the time
information may indicate at least one of a time an event occurred
and a time that selected information about the event expired. Here,
different heat maps may display different ones of the selected
specific physical locations based upon the ranked results in the
spatial index and the method may further comprise presenting at
least one of the heat maps on a display device.
[0009] In another embodiment, a processing system for processing
geographical information comprises at least one processor, a
geolocation module associated with the at least one processor, and
memory for storing data. The memory is electrically coupled to the
at least one processor. The geolocation module is configured to
analyze at least one electronic database containing information
about a selected user to determine whether the at least one
electronic database includes geographical information, to extract a
result set from the at least one electronic database (the result
set including the geographical information) to perform geopoint
extraction on the result set to obtain specific physical locations
for each item of geographical information in the result set, to
construct a spatial index containing the specific physical
locations and time information for one or more of the specific
physical locations, to store the spatial index in the memory of the
processing system, and to create at least one heat map containing
selected ones of the specific physical locations based upon the
time information.
[0010] In one example, the geolocation module is further configured
to transmit the at least one heat map to an authorized user for
presentation on a display of a user device. In another example, the
geolocation module includes a protected data fetcher for
communicating with the at least one electronic database. The
protected data fetcher is configured to search the at least one
electronic database for geographical data contained in web pages
and search histories.
[0011] In a further example, the specific physical locations
maintained in the spatial index correspond to latitude and
longitude coordinates of physical addresses. And in yet another
example, each heat map presents the selected ones of the specific
physical locations displays as ranked points of interest based upon
the time information.
[0012] In accordance with another embodiment, a method for refining
a location estimate of a user's physical location comprises
estimating a current location of the user; comparing the estimated
current location with one or more heat maps identifying specific
physical locations in a predetermined geographical area, the one or
more heat maps containing time information associated with one or
more of the specific physical locations associated with the user,
each heat map being derived from at least one electronic database
containing information about the user; determining a set of
relevant matching addresses from a selected one of the heat maps;
analyzing the set of relevant matching addresses of the selected
heat map that are within a preset distance of the estimated current
location; determining whether a given one of the relevant matching
addresses provides a more accurate location than the estimated
current location; and if the given one of the relevant matching
addresses provides a more accurate location than the estimated
current location, selecting the given address as a refined position
of the user.
[0013] In one example, the user's current location is estimated
from historical user information stored in the at least one
electronic database. In another example, at least one of the
relevant matching addresses is selected based upon a frequency
ranking representing how often the at least one relevant matching
address appears in the at least one electronic database. In another
example, at least one of the relevant matching addresses is
selected based upon a timeliness ranking representing how often the
at least one relevant matching address appears in the at least one
electronic database at a given point in time.
[0014] In yet another embodiment, a location estimation system
comprises a processor; a geolocation module associated with the at
least one processor for executing operations; and memory for
storing data, with the memory electrically coupled to the
processor. The geolocation module is configured to estimate a
current location of the user; compare the estimated current
location with one or more heat maps identifying specific physical
locations in a predetermined geographical area, the one or more
heat maps containing time information associated with one or more
of the specific physical locations associated with the user, each
heat map being derived from at least one electronic database
containing information about the user; determine a set of relevant
matching addresses from a selected one of the heat maps; analyze
the set of relevant matching addresses of the selected heat map
that are within a preset distance of the estimated current
location; determine whether a given one of the relevant matching
addresses provides a more accurate location than the estimated
current location; and if the given one of the relevant matching
addresses provides a more accurate location than the estimated
current location, select the given address as a refined position of
the user.
[0015] In one example, the processor is configured to prefetch data
associated with the user's estimated current location from a remote
database and to store the prefetched data in the memory. In this
case, the processor may be operable to present the refined position
in the selected heat map on a display device. In yet another
example, at least one of the relevant matching addresses is
selected based upon a frequency ranking representing how often the
at least one relevant matching address appears in the at least one
electronic database. And in a further example, at least one of the
relevant matching addresses is selected based upon a timeliness
ranking representing how often the at least one relevant matching
address appears in the at least one electronic database at a given
point in time.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] FIGS. 1A-B illustrate a computer network architecture in
accordance with aspects of the present invention.
[0017] FIG. 2 illustrates a user device architecture in accordance
with aspects of the present invention.
[0018] FIG. 3 is a flow diagram of a location augmentation
application in accordance with aspects of the present
invention.
[0019] FIG. 4 illustrates operation of a geolocation module in
accordance with aspects of the present invention.
[0020] FIG. 5 is a flow diagram of a location refinement
application in accordance with aspects of the present
invention.
[0021] FIG. 6 illustrates additional operation of a geolocation
module in accordance with aspects of the present invention.
DETAILED DESCRIPTION
[0022] The aspects, features and advantages of the present
invention will be appreciated when considered with reference to the
following description of preferred embodiments and accompanying
figures. The same reference numbers in different drawings may
identify the same or similar elements. Furthermore, the following
description does not limit the present invention; rather, the scope
of the invention is defined by the appended claims and
equivalents.
[0023] In accordance with aspects of the present invention,
location information is coupled/linked to a precise street address
or other specific location. As will be explained in more detail
below, geographical information may be extracted from a number of
sources associated with a user. These include the user's web
browser's history, search history, address book, etc. Such
information may be used in a number of ways to enhance location
accuracy.
[0024] Systems and methods are used to create a time sensitive heat
map of physical locations of interest to a given user. In one
embodiment, physical locations are used to more accurately estimate
the user's location. For instance, a coarse cell tower
triangulation is refined in view of the user's home address. In
another embodiment, user-associated geographic information is
employed to provide enhanced detail during a reverse geocoding
process.
[0025] Turning to FIG. 1, this illustration presents a schematic
diagram of a computer system depicting various computing devices
that can be used alone or in a networked configuration in
accordance with aspects of the present invention. For example, this
figure illustrates a computer network 100 having a plurality of
computers 102, 104, 106 and 108 as well as other types of devices
such as portable electronic devices such as a mobile phone 110 and
a PDA 112. Various elements in the computer network 100 may be
interconnected via a local or direct connection 114 and/or may be
coupled via a communications network 116 such as a local area
network ("LAN") such as a WiFi network, a wide area network
("WAN"), the Internet, etc. and which may be wired or wireless.
[0026] Each computer apparatus can include, for example, one or
more computing devices having user inputs such as a keyboard 118
and mouse 120 and/or various other types of input devices such as
pen-inputs, joysticks, buttons, touch screens, etc., as well as a
display 122, which could include, for instance, a CRT, LCD, plasma
screen monitor, TV, projector, etc. Each computer 102, 104, 106 and
108 may be a personal computer, server, etc. By way of example
only, computers 102 and 106 may be personal computers while
computer 104 may be a server and computer 108 may be a
laptop/palmtop. As shown in FIG. 1B each computer such as computers
102 and 104 contains a processor 124, memory 126 and other
components typically present in a computer.
[0027] Memory 126 stores information accessible by processor 124,
including instructions 128 that may be executed by the processor
124 and data 130 that may be retrieved, manipulated or stored by
the processor. The memory may be of any type capable of storing
information accessible by the processor, such as a hard-drive, ROM,
RAM, CD-ROM, flash memories, write-capable or read-only memories.
The processor 324 may comprise any number of well known processors,
such as processors from Intel Corporation. Alternatively, the
processor may be a dedicated controller for executing operations,
such as an ASIC.
[0028] The instructions 128 may comprise any set of instructions to
be executed directly (such as machine code) or indirectly (such as
scripts) by the processor. In that regard, the terms
"instructions," "steps" and "programs" may be used interchangeably
herein. The instructions may be stored in any computer language or
format, such as in object code or modules of source code. The
functions, methods and routines of instructions in accordance with
the present invention are explained in more detail below.
[0029] Data 130 may be retrieved, stored or modified by processor
124 in accordance with the instructions 128. The data may be stored
as a collection of data. For instance, although the invention is
not limited by any particular data structure, the data may be
stored in computer registers, in a relational database as a table
having a plurality of different fields and records, XML documents,
or flat files. Map-type image data may be stored in flat files such
as keyhole flat files ("KFF").
[0030] The data may also be formatted in any computer readable
format such as, but not limited to, binary values, ASCII etc.
Similarly, the data may include images stored in a variety of
formats such as vector-based images or bitmap images using lossless
(e.g., BMP) or lossy (e.g., JPEG) encoding. Moreover, the data may
include any information sufficient to identify the relevant
information, such as descriptive text, proprietary codes, pointers,
references to data stored in other memories (including other
network locations) or information which is used by a function to
calculate the relevant data.
[0031] Although the processor 124 and memory 126 are functionally
illustrated in FIG. 1B as being within the same block, it will be
understood that the processor and memory may actually comprise
multiple processors and memories that may or may not be stored
within the same physical housing or location. For example, some or
all of the instructions and data may be stored on a removable
CD-ROM or DVD.
[0032] Alternatively, such information may be stored within a
read-only computer chip. Some or all of the instructions and data
may be stored in a location physically remote from, yet still
accessible by, the processor. Similarly, the processor may actually
comprise a collection of processors which may or may not operate in
parallel. Data may be distributed and stored across multiple
memories 126 such as hard drives, server farms or the like.
[0033] In one aspect, server 104 communicates with one or more
client computers 102, 106 and/or 108, as well as devices such as
mobile phone 110 and PDA 112. Each client computer or other client
device may be configured similarly to the server 104, with a
processor, memory and instructions, as well as one or more user
input devices 118, 120 and a user output device, such as display
122. Each client computer may be a general purpose computer,
intended for use by a person, having all the components normally
found in a personal computer such as a central processing unit
("CPU"), display, CD-ROM or DVD drive, hard-drive, mouse, keyboard,
touch-sensitive screen, speakers, microphone, modem and/or router
(telephone, cable or otherwise) and all of the components used for
connecting these elements to one another.
[0034] The server 104 and client computers and other devices are
capable of direct and indirect communication with other computers,
such as over network 116. Although only a few computing devices are
depicted in FIGS. 1A and 1B, it should be appreciated that a
typical system can include a large number of connected servers and
clients, with each different computer being at a different node of
the network. The network 116, and intervening nodes, may comprise
various configurations and protocols including the Internet,
intranets, virtual private networks, wide area networks, local
networks, private networks using communication protocols
proprietary to one or more companies, Ethernet, WiFi, Bluetooth and
HTTP.
[0035] Communication across the network, including any intervening
nodes, may be facilitated by any device capable of transmitting
data to and from other computers, such as modems (e.g., dial-up or
cable), network interfaces and wireless interfaces. Server 104 may
be a web server. Although certain advantages are obtained when
information is transmitted or received as noted above, other
aspects of the invention are not limited to any particular manner
of transmission of information. For example, in some aspects, the
information may be sent via a medium such as a disk, tape, CD-ROM,
DVD, or directly between two computer systems via a dial-up modem.
In other aspects, the information may be transmitted in a
non-electronic format and manually entered into the system.
[0036] Moreover, computers and client devices in accordance with
the systems and methods described herein may comprise any device
capable of processing instructions and transmitting data to and
from humans and other computers, including network computers
lacking local storage capability, PDA's with modems such as PDA 112
and Internet-capable wireless phones such as mobile phone 110.
[0037] As shown in FIG. 1A, the network 100 also includes a
database 132. The database 132 may be directly or indirectly
coupled to server 104. In an alternative, the database 132 may be
part of or otherwise logically associated with the server 104. The
database 132 may include different sets or types of data. By way of
example only, the database 132 may maintain location and/or
map-related data, which may be stored in one or more KFFs. The
database 132 may store data 130 in one or more KFFs. Assets and
other information, including satellite data, aerial photographs,
digital maps, elevation data, GPS coordinates, etc. may be obtained
from one or more sources (not shown). The database 132 may
alternatively maintain information concerning one or more
users/customers, as will be explained in detail below.
[0038] User devices such as laptop/palmtop 108, PDA 112 and mobile
phone 110 may also include or store information in a database 134.
Such information may include, for instance, a web browsing history,
a website searching history, map data, the user's address book,
e-mail archives and/or calendar entries. Given the sensitive nature
of this information, the database 134 should securely store the
data to prevent unauthorized access. Thus, the data may be
encrypted for storage. In one example, the database 134 is
maintained on network 100 separate from the user devices. In
another example, the database 134 may be locally stored on one or
more of the user devices, for example in memory 126 thereof. In a
further example, the database 134 comprises multiple databases as
shown in FIG. 2.
[0039] The database 134 may be part of the user device's
architecture 200, which includes a processor module 202, a user
interface/display module 204, a communication module 206, a power
module 208 and a memory module 210. The processor module 202 may
include a processor such as processor 124 or a controller and its
attendant circuitry (e.g., local memory, floating point and/or
integer processing elements, DMA unit). The user interface/display
module 204 includes user inputs and outputs such as inputs 118 and
120 and display 122 of FIGS. 1A and 1B. The communication module
206 contains a protocol stack and attendant circuitry for
communicating across a network such as network 116 or for direct
device to device communication. The power module 208 provides power
to the various modules of the architecture 200, and may include a
rechargeable battery and/or power cable.
[0040] The memory module 210 desirably includes the database 134.
In one example, the memory module 210 comprises a plurality of
sub-databases focusing on different applications and/or user
attributes. For instance, as shown in FIG. 2, the memory module 210
may include a web browsing history database 212, a search history
database 214, a maps history database 216, an address book database
218, an e-mail archive database 220, and a calendar entries
database 222. Other information, such as credit card transaction
information, may be stored in other sub-databases.
[0041] The information stored in each of these sub-databases may be
associated with specific programs or types of applications, or with
the user's overall operation of the device. For instance, the web
browsing history and search history databases may be associated
with one or more web browsers such as the Internet Explorer,
Safari, Firefox or Chrome web browsers. The maps history database
may also be associated with the web browsers or other applications
such as Google Earth. The address book and e-mail archive databases
may be linked to the user's messaging application, such as Google's
Gmail or Microsoft Outlook. The calendar entries database may
similarly be linked to the messaging application or other
application such as Google Calendar. While a number of different
sub-databases have been identified above, other sub-databases which
may contain location-related information may also be employed, such
as the database associated with Google Latitude, a tool which lets
users share their current location with friends.
[0042] In one scenario, location-related information may be
mined/extracted from the sub-databases on a regular basis or in
response to a request. FIG. 3 illustrates one such scenario. In
particular, FIG. 3 provides a flow diagram of an opt-in location
augmentation application 300. Initially, at block 302, a user signs
up for location augmentation. This may include the user providing
authorization to use one or more of the sub-databases in memory
module 210 of his/her user device. According to one example, the
user may select specific sub-databases to which the application is
granted access. For instance, the user may grant access to the
address book database 218 but not to the e-mail archives database
220.
[0043] As shown in block 304, upon authorization a user profile is
added to a user database, such as database 132 of FIG. 1A. The user
database may include an index where each extracted location signal
may be associated with a set of information including some or all
of geographical tags or "geotags" (which could be items such as "my
home" or a search term such as "coffee shop"), temporal information
(e.g., time an event occurred, optional time that certain
information may expire, and/or a degradation factor), and a score
to suggest the confidence in that location. For example, a
latitude/longitude location may have a higher confidence than a
location that is extracted from an email message. In a spatial
index, a single location may have aggregate information from
multiple databases. In this case, the system may compute an
aggregate confidence and score for that location.
[0044] Then, per block 306, a geolocation module builds a spatial
index which may provide location corrections and reverse geocoding.
With regard to the former application, the geolocation module may
gain access to the various sub-databases previously authorized by
the user and use certain information to create one or more "heat
maps" of specific physical locations at different times for a given
user, as shown in block 308. And as shown in block 310, the heat
maps may be presented on the user device's display.
[0045] FIG. 4 illustrates an example of how the geolocation module
may perform a location correction process or augmentation. The
module may include an application operating on server 104 of FIG.
1A. Or, alternatively, the geolocation module may be part of the
user device architecture 200. The geolocation module may operate
locally, on the server-side, or as a distributed module both
locally and on the server. A server-only implementation may be more
efficient and accurate because it would be able to use the entire
corpus of data available in the databases 132 and 134. As shown in
FIG. 1, a geolocation module 136 may be associated with or
otherwise incorporated into the server 104. Alternatively, a local
implementation may involve prefetching of data which is most
applicable to the user's current location and applying the same
inference algorithm locally. FIG. 2 illustrates a geolocation
module 224 as part of the user device's architecture 200.
[0046] A cache could be incorporated on the user's device which
mirrors the most relevant server-side profile. In this case, there
would be little difference between the server-side and local
implementations, just the amount of input data available. For a
local implementation, a secure central server gateway may be
employed to fetch the data from relevant sub-databases, and
transfer the data to the client. In other words, the client device
would not need to directly make fetch requests to different
server-side databases.
[0047] The geolocation module includes a protected data fetcher 400
that is configured to communicate with the sub-databases. The
protected data fetcher 400 extracts a result set 402 from the
sub-databases. It may require authentication of the user or
authorization by the sub-databases. In one example, the protected
data fetcher 400 searches for any geographical information
associated with the sub-databases. For instance, it may search web
pages and search histories for geographical data.
[0048] Each result may correspond to a given physical location,
person, activity and/or time. Thus, in one example mining of the
web browsing history database 212 may result in a location ("City
Hall, New York") and a time (t1). Mining of the search history
database 214 may also result in a location ("Lorie's Cafe") and a
time (t2). And mining of the maps history database 216 may result
in a location ("79 Ninth Ave 100 .mu.l") and a time (t3).
Examination of the address book database 218 may result in a name
("Michael Bloomberg"), while examination of the e-mail archives
database 220 may result in an activity ("Movie ticket receipts")
and a time (t5). And examination of the calendar entries database
222 may result in an activity ("Work lunch with Mike") and a time
(t6).
[0049] As shown in block 404, the geolocation module performs a
geopoint extraction process on the result set 402, creating a
geocoded result set 404. In one example, the geocoded result set
404 contains references to specific physical locations in
latitude/longitude format. A forward geocoder may be used to
convert an address into the latitude/longitude format. As discussed
above with regard to block 306, a spatial index is constructed
which contains the latitudes and longitudes. The spatial index may
contain a properly formatted version of a physical address, such as
a street address, corresponding to the latitude and longitude. The
spatial index may also include time information, such as the time a
web page was accessed or a search query was performed. Similar
timing information may be collected for the other sub-databases, In
another example, any information in the sub-databases which
corresponds to geographical information, such as locations of known
friends that a user travels with or is scheduled to meet, may be
processed by the geolocation module.
[0050] The spatial index may include image tiles and associated
data which are stored in a "quadtree" structure. The nodes of a
quadtree data structure are referred to herein as "quadnodes." A
quadnode plus one or more levels of descendents are referred to
herein a "quadset." Data pertaining to quadtrees, quadnodes and
quadsets may be stored in a database such as a KFF database, which
may be maintained as database 132 of FIG. 1A.
[0051] The KFF or other database containing the spatial index is
used to generate heat maps of particular physical locations as
shown in FIG. 4. In particular, one or more heat maps of a region
of interest are created using the geocoded result set 404. This may
be done in conjunction with other data from result set 402, such as
names of people, actions or events, and times. As shown, three heat
maps 406a, 406b and 406c are generated for different times (e.g.,
times t1, t2 and t3). Some or all of these heat maps may be
presented on the display of the user device according to input from
the user, such as via the user interface/display module 204 of FIG.
3. In this example, the different pushpins (e.g., A-J) may
represent a ranked list of points of interest for each heat map.
Thus, as the time changes, the points of interest may change, and
also different points of interest may be more or less relevant at
different times. Thus, as shown, the pushpins A-J change across the
various heat maps.
[0052] FIG. 5 illustrates another embodiment of the present
invention. In particular, FIG. 5 presents a flow diagram 500 for
refining a position location estimate. In one example, a user
requests directions between two locations from a mapping
application, such as Google Maps, as shown in block 502. In this
case, the user may not know his/her specific position, and the
request is for directions from a current location.
[0053] As shown in block 504, an estimate of the current location
is then determined, and may be presented to the user on the
device's display. The current location of the user may be estimated
through a number of techniques. Depending on the particular type of
user device and network, GPS, cell tower triangulation, WiFi
triangulation, IP geocoding or other techniques may be employed.
The current location may also be inferred from historical
information as well. For example, if the user is known to be a
certain location at time X every day, then there is a strong chance
they'd be in the same location on a given day in the future. This
may be determined by calendar or address book entries, e-mail
archives, GPS results from prior usage of the user's device, or
from other information.
[0054] The initial estimate may include a position in
latitude/longitude coordinates, and may also include an estimate of
accuracy. The accuracy may depend on a number of factors. For
instance, if the user's device is a GPS enabled mobile phone, the
accuracy of the GPS position is affected by the number of GPS
satellites observed by the mobile phone. In the case of a WiFi
network or cellular system, triangulation or other location
technique may depend on terrain conditions (e.g., hilly or lots of
nearby buildings), signal strength, weather conditions and time of
year. The accuracy may be determined by the user's device itself,
by the network, or both.
[0055] Next, as shown in block 506, the estimated latitude and
longitude are looked up in or otherwise compared to a heat map
associated with the user. There may be multiple heat maps which
have been generated for or otherwise associated with the user. Such
heat maps may be for various places and times in the past, present
and future. The geolocation module desirably uses a heat map for
the current time when performing the lookup. Based upon the lookup,
the geolocation module determines a set of relevant matching
address(es) for the selected heat map, as shown in block 508. This
may include one or more addresses.
[0056] The matching addresses may include frequency and timeliness
scores or rankings. Frequency is determined by how often the same
location appears in the same databases or across different
databases. Timeliness is the frequency of occurrence at a
particular time. So location X may appear at time t1 (e.g., Monday
at 1 pm) more often that location Y, and location Y may occur more
often at time t2 (eg., Monday at 11 pm). In this case, based on the
current time of the user, either location X or Y may be used.
[0057] Scores may be determined by simply adding up the
frequencies, or using a metric that assigns a weighted score based
on the confidence of the sub-database. Thus, a maps search may be
weighted higher than e-mail. A current location from
latitude/longitude may be assigned the highest score because the
user has been known to be physically present at that location.
Another score signal would be how recent the data is. Here, if the
data is too old ("stale"), it may receive a lower score or
weighting, thereby introducing a degradation factor for time.
[0058] Next, as shown in block 510, it is determined whether a more
likely location than the initial estimate is available. If there is
a more likely location, a refined position ("best feature") is
determined, as shown in block 512. In one example, the geolocation
module analyzes all entries in a spatial index associated with the
selected heat map that are within a certain distance of the initial
latitude and longitude. This distance may be based on the initial
accuracy or the density of the spatial index. From this, the
geolocation module determines whether an entry in the spatial index
is sufficiently close (e.g., a latitude/longitude pair within x
meters of the initial estimate), sufficiently frequent and/or
sufficiently recent (e.g., within y days from the date of the
request). Preferably, the selection process is optimized for
quality. If no suitable entries are found in the spatial index, the
original location estimate is returned, as shown in block 514.
Next, as shown in block 516, routing directions are generated based
on the refined or original location and are provided to the
user.
[0059] This process is shown graphically in FIG. 6. Here, block 600
includes the user request to get directions from "Current Location"
to Mountain View, Calif. As shown in block 602, an estimate of the
user's current position is determined. A latitude/longitude
estimate may be presented on the user device's display. The
accuracy of the estimate may be illustrated by the circular region
as shown.
[0060] Also shown in this block, the geolocation module looks up
the latitude/longitude estimate in a heat map for the current time.
The geolocation module returns the matching address(es) or returns
a "no confidence" result as discussed above. If multiple matching
addresses are provided, the geolocation module determines the best
feature, i.e., the feature most likely to correspond with the
user's present location. Then, as shown in block 604, routing
directions are provided to the user based on the best feature. If
no feature is returned, then block 606 shows that routing
directions are provided to the user based on the original location
estimate.
[0061] If the system is unable to narrow down the results to a
single place, a list of the highest confidence results may be
provided to the user so that the user may select between them
instead of relying on the original location estimate. Also, apart
from the example of providing enhanced driving directions to the
user, other usage scenarios include seeking a more accurate
location when searching around the user's location for businesses,
people etc., for more accurately broadcasting the user's location
to his/her friends, and for accurately geocoding any photographs a
user has taken with his/her cellular phone.
[0062] Although the invention herein has been described with
reference to particular embodiments, it is to be understood that
these embodiments are merely illustrative of the principles and
applications of the present invention. It is therefore to be
understood that numerous modifications may be made to the
illustrative embodiments and that other arrangements may be devised
without departing from the spirit and scope of the present
invention as defined by the appended claims. Furthermore, while
particular processes are shown in a specific order in the appended
drawings, such processes are not limited to any particular order
unless such order is expressly set forth herein.
* * * * *