U.S. patent application number 14/818102 was filed with the patent office on 2015-11-26 for geotagging structured data.
The applicant listed for this patent is Palantir Technologies, Inc.. Invention is credited to John Antonio Carrino, Daniel P. Cervelli.
Application Number | 20150338233 14/818102 |
Document ID | / |
Family ID | 53763260 |
Filed Date | 2015-11-26 |
United States Patent
Application |
20150338233 |
Kind Code |
A1 |
Cervelli; Daniel P. ; et
al. |
November 26, 2015 |
Geotagging Structured Data
Abstract
A mapping system comprising processes for creating and
displaying structured geotagged data using interactive digital
geographic imagery is disclosed. In one embodiment, a mapping
system comprises processes and logic for creating a geo tag for
structured data. A user creates a geo tag for a property of an
object by selecting a geographic location on an interactive digital
map and selecting the property of the object from a dialog
presented to the user in response to selecting the geographic
location. In this way, the user can more quickly and easily create
structured geotagged data than can be accomplished using typical
approaches requiring the user to manually enter geographic
coordinates to associate a geographic location with structured
data.
Inventors: |
Cervelli; Daniel P.;
(Mountain View, CA) ; Carrino; John Antonio; (Palo
Alto, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Palantir Technologies, Inc. |
Palo Alto |
CA |
US |
|
|
Family ID: |
53763260 |
Appl. No.: |
14/818102 |
Filed: |
August 4, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12840673 |
Jul 21, 2010 |
9104695 |
|
|
14818102 |
|
|
|
|
61228935 |
Jul 27, 2009 |
|
|
|
Current U.S.
Class: |
701/532 |
Current CPC
Class: |
G06F 16/29 20190101;
G06F 16/50 20190101; G01C 21/3664 20130101 |
International
Class: |
G01C 21/36 20060101
G01C021/36 |
Claims
1. A method for displaying geotagged data comprising: using
digitally programmed logic of an application server, causing
display on a client computing device of a user interface comprising
a map corresponding to a particular window of time, including
causing display of icons on said map corresponding to events that
occurred within the particular window of time, each of the icons
representing a location of one of the events, and without changing
the particular window of time: in response to receiving input from
the client computing device that selects a particular sub-time
window of said particular window of time, using digitally
programmed logic of the application server, updating display of the
map; wherein updating display of the map includes causing one or
more of the events that occurred within the particular sub-time
window to be visually distinguishable from one or more of the
events that did not occur within the particular sub-time window; in
response to receiving input from the client computing device that
drags at least one temporal boundary of the particular sub-time
window from a first point to a second point: using digitally
programmed logic of the application server, continuously
generating, as the at least one temporal boundary is being dragged
from the first point to the second point, an expanding,
contracting, or sliding sub-time window of said particular window
of time, based on the particular sub-time window; using digitally
programmed logic of the application server, continuously updating
display of the map, as the at least one temporal boundary is being
dragged from the first point to the second point; wherein
continuously updating the display of the map includes causing one
or more of the events that occurred within the expanding,
contracting, or sliding sub-time window to be visually
distinguishable from one or more of the events that did not occur
within the expanding, contracting, or sliding sub-time window;
wherein the method is performed by one or more processors.
2. The method according to claim 1, wherein said user interface
comprises controls for filtering display of events by event type,
the method further comprising: in response to receiving, from the
client computing device, input through said controls that specifies
a particular event type, using digitally programmed logic of the
application server, updating display of the map so that one or more
icons, corresponding to one or more of the events of the particular
event type, are highlighted.
3. The method according to claim 1, wherein said user interface
further comprises an event histogram corresponding to the
particular window of time, the method further comprising: using
digitally programmed logic of the application server, causing the
event histogram to display a distribution of the events over the
particular window of time.
4. The method according to claim 3, wherein said user interface
comprises controls for filtering display of events by event type,
the method further comprising: in response to receiving, from the
client computing device, input through said controls that specifies
a particular event type, using digitally programmed logic of the
application server, updating display of the event histogram to
visually highlight a distribution of one or more of the events, of
the particular event type, over the particular window of time.
5. The method according to claim 1, wherein continuously updating
the display of the map so that one or more of the events that
occurred within the particular sub-time window are visually
distinguishable from one or more of the events that did not occur
within the particular sub-time window includes updating the display
of the map so that only icons corresponding to events that occurred
within the particular sub-time window are displayed and so that
icons corresponding events that did not occur within particular
sub-time window are not displayed.
6. The method according to claim 1, wherein: in response to
receiving the input from the client computing device that drags the
at least one boundary of the particular sub-time window from the
first point to the second point, using digitally programmed logic
of the application server, continuously generating, as the at least
one boundary is being dragged from the first point to the second
point, an expanding sub-time window of said particular window of
time, based on the particular sub-time window, and using digitally
programmed logic of the application server, continuously updating
display of the map, as the at least one boundary is being dragged
from the first point to the second point, so that one or more of
the events that occurred within the expanding sub-time window are
visually distinguishable from one or more of the events that did
not occur within the expanding sub-time window.
7. The method according to claim 1, wherein: in response to
receiving the input from the client computing device that drags the
at least one boundary of the particular sub-time window from the
first point to the second point, using digitally programmed logic
of the application server, continuously generating, as the at least
one boundary is being dragged from the first point to the second
point, an contracting sub-time window of said particular window of
time, based on the particular sub-time window, and using digitally
programmed logic of the application server, continuously updating
display of the map, as the at least one boundary is being dragged
from the first point to the second point, so that one or more of
the events that occurred within the contracting sub-time window are
visually distinguishable from one or more of the events that did
not occur within the contracting sub-time window.
8. The method according to claim 1, wherein: in response to
receiving the input from the client computing device that drags the
at least one boundary of the particular sub-time window from the
first point to the second point, using digitally programmed logic
of the application server, continuously generating, as the at least
one boundary is being dragged from the first point to the second
point, a sliding sub-time window of said particular window of time,
based on the particular sub-time window, and using digitally
programmed logic of the application server, continuously updating
display of the map, as the at least one boundary is being dragged
from the first point to the second point, so that one or more of
the events that occurred within the sliding sub-time window are
visually distinguishable from one or more of the events that did
not occur within the sliding sub-time window.
9. One or more non-transitory computer-readable media storing
instructions which, when executed by one or more processors, cause
performance of: causing display of a user interface on a client
computing device comprising a map corresponding to a particular
window of time including causing display of icons on said map
corresponding to events that occurred within the particular window
of time, each of the icons representing a location of one of the
events, and without changing the particular window of time: in
response to receiving input from the client computing device that
selects a particular sub-time window of said particular window of
time, updating display of the map; wherein updating display of the
map includes causing one or more of the events that occurred within
the particular sub-time window to be visually distinguishable from
one or more of the events that did not occur within the particular
sub-time window; and in response to receiving input from the client
computing device that drags at least one temporal boundary of the
particular sub-time window from a first point to a second point:
continuously generating, as the at least one temporal boundary is
being dragged from the first point to the second point, an
expanding, contracting, or sliding sub-time window of said
particular window of time, based on the particular sub-time window,
and continuously updating display of the map, as the at least one
temporal boundary is being dragged from the first point to the
second point; wherein continuously updating the display of the map
includes causing one or more of the events that occurred within the
expanding, contracting, or sliding sub-time window to be visually
distinguishable from one or more of the events that did not occur
within the expanding, contracting, or sliding sub-time window.
10. The one or more non-transitory computer-readable media of claim
9, wherein said user interface comprises controls for filtering
display of events by event type, wherein the instructions, when
executed by the one or more processors, further cause performance
of: in response to receiving, from the client computing device,
input through said controls that specifies a particular event type,
updating display of the map so that one or more icons,
corresponding to one or more of the events of the particular event
type, are highlighted.
11. The one or more non-transitory computer-readable media of claim
9, wherein said user interface further comprises an event histogram
corresponding to the particular window of time, wherein the
instructions, when executed by the one or more processors, further
cause performance of: causing the event histogram to display a
distribution of the events over the particular window of time.
12. The one or more non-transitory computer-readable media of claim
11, wherein said user interface comprises controls for filtering
display of events by event type, wherein the instructions, when
executed by the one or more processors, further cause performance
of: in response to receiving, from the client computing device,
input through said controls that specifies a particular event type,
updating display of the event histogram to visually highlight a
distribution of one or more of the events, of the particular event
type, over the particular window of time.
13. The one or more non-transitory computer-readable media of claim
9, wherein continuously updating the display of the map so that one
or more of the events that occurred within the particular sub-time
window are visually distinguishable from one or more of the events
that did not occur within the particular sub-time window includes
updating the display of the map so that only icons corresponding to
events that occurred within the particular sub-time window are
displayed and so that icons corresponding events that did not occur
within particular sub-time window are not displayed.
14. The one or more non-transitory computer-readable media of claim
9, wherein: in response to the receiving input, from the client
computing device, that drags the at least one boundary of the
particular sub-time window from the first point to the second
point, continuously generating, as the at least one boundary is
being dragged from the first point to the second point, an
expanding sub-time window of said particular window of time, based
on the particular sub-time window, and continuously updating the
display of the map, as the at least one boundary is being dragged
from the first point to the second point, so that one or more of
the events that occurred within the expanding sub-time window are
visually distinguishable from one or more of the events that did
not occur within the expanding sub-time window.
15. The one or more non-transitory computer-readable media of claim
9, wherein: in response to the receiving input, from the client
computing device, that drags the at least one boundary of the
particular sub-time window from the first point to the second
point, continuously generating, as the at least one boundary is
being dragged from the first point to the second point, an
contracting sub-time window of said particular window of time,
based on the particular sub-time window, and continuously updating
display of the map, as the at least one boundary is being dragged
from the first point to the second point, so that one or more of
the events that occurred within the contracting sub-time window are
visually distinguishable from one or more of the events that did
not occur within the contracting sub-time window.
16. The one or more non-transitory computer-readable media of claim
9, wherein: in response to the receiving input, from the client
computing device, that drags the at least one boundary of the
particular sub-time window from the first point to the second
point, continuously generating, as the at least one boundary is
being dragged from the first point to the second point, a sliding
sub-time window of said particular window of time, based on the
particular sub-time window, and continuously updating display of
the map, as the at least one boundary is being dragged from the
first point to the second point, so that one or more of the events
that occurred within the sliding sub-time window are visually
distinguishable from one or more of the events that did not occur
within the sliding sub-time window.
Description
BENEFIT CLAIM
[0001] This application claims the benefit under 35 U.S.C.
.sctn.120 as a Continuation of application Ser. No. 12/840,673,
filed Jul. 21, 2010, which claims the benefit under 35 U.S.C
.sctn.119(e) of provisional application 61/228,935, filed Jul. 27,
2009, the entire contents of which are hereby incorporated by
reference for all purposes as if fully set forth herein. The
applicant(s) hereby rescind any disclaimer of claim scope in the
parent application(s) or the prosecution history thereof and advise
the USPTO that the claims in this application may be broader than
any claim in the parent application(s).
COPYRIGHT NOTICE
[0002] A portion of the disclosure of this patent document contains
material which is subject to copyright protection. The copyright
owner has no objection to the facsimile reproduction by anyone of
the patent document or the patent disclosure, as it appears in the
Patent and Trademark Office patent file or records, but otherwise
reserves all copyright rights whatsoever. Copyright .COPYRGT.
2009-2010 Palantir Technologies, Inc.
TECHNICAL FIELD
[0003] The invention is related to creating and displaying data
with the use of digital maps, and more particularly to computer
processes and logic for creating and displaying structured
geotagged data with the use of interactive digital geographic
imagery.
BACKGROUND
[0004] Mapping computer systems ("mapping systems") display digital
geographic imagery of the Earth at varying perspectives including
providing users an oblique view (e.g. bird's eye-view) of objects
on the surface of the Earth such as houses, buildings, roads,
lakes, mountains, and the like. Such geographic imagery may
comprise satellite imagery, aerial photography, and the like. Since
the Earth is a curved generally spherical object, the geographic
images are rectified by the mapping systems so that the mapping
systems can project the images onto a two-dimensional (2-D) plane
such as a computer display screen. Mapping systems may use a
coordinate system to identify a point on the surface of the Earth.
One common coordinate system is geographic coordinates
(latitude/longitude) on the World Geodetic System of 1984 (WGS84)
datum. Latitude is an angular measurement in degrees ranging from 0
degrees at the Earth's equator to 90 degrees at the poles.
Longitude is also an angular measurement but measured East or West
instead of North or South. For example, the location of White House
in Washington D.C. on the surface of the Earth as identified by a
geographic coordinate is 38.898748 degrees latitude and -77.037684
degrees longitude.
[0005] It is often desirable to associate a geographic location
with a piece of data and then display the data as a superimposition
on digital geographic imagery. For example, it may be desirable to
associate a geographic location with a street address such that
when a map image of the street is displayed the address can be
visually indicated by superimposing the text of the address, a
symbol or other indicator on the map at the geographic location.
The process of associating a geographic location with a piece of
data, typically in the form of geographic coordinates (e.g.,
latitude/longitude), is known as geotagging. One approach for
geotagging typically involves a user identifying the geographic
coordinates of a particular location using a mapping system and
then manually entering the coordinates into a database containing
the one piece of data that is to be geotagged. However, this manual
approach is awkward and inconvenient for the user and is a serious
drawback for organizations that require geotagging of many
thousands or many millions of pieces of data.
[0006] The approaches described in this section are approaches that
could be pursued, but not necessarily approaches that have been
previously conceived or pursued. Therefore, unless otherwise
indicated, it should not be assumed that any of the approaches
described in this section qualify as prior art merely by virtue of
their inclusion in this section.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The patent or application file contains at least one drawing
executed in color. Copies of this patent or patent application
publication with color drawing(s) will be provided by the Office
upon request and payment of the necessary fee.
[0008] In the drawings:
[0009] FIG. 1A illustrates an example mapping system.
[0010] FIG. 1B illustrates an example mapping system in greater
detail.
[0011] FIG. 2 is a screenshot of a graphical user interface for
creating a geo tag for structured data.
[0012] FIG. 3 is a screenshot of a graphical user interface for
creating a geo tag for structured data.
[0013] FIG. 4 is a screenshot of a graphical user interface for
sourcing a geo tagged property.
[0014] FIG. 5 is a screenshot of a graphical user interface for
creating a geo tag for structured data using a gazetteer
system.
[0015] FIG. 6 is a screenshot of a graphical user interface for
displaying structured geotagged data.
[0016] FIG. 7 is a color screenshot of a graphical user interface
for displaying filtered structured geotagged data.
[0017] FIG. 8 is a screenshot of a graphical user interface for
displaying filtered structured geotagged data.
[0018] FIG. 9A and FIG. 9B are color screenshots of a graphical
user interface for displaying filtered structured geotagged
data.
[0019] FIG. 10 illustrates a computer system with which an
embodiment may be implemented.
DETAILED DESCRIPTION
[0020] Computer mapping processes for creating and displaying
structured geotagged data using interactive digital geographic
imagery are disclosed. In the following description, for the
purposes of explanation, numerous specific details are set forth in
order to provide a thorough understanding of the present invention.
It will be apparent, however, that the present invention may be
practiced without these specific details. In other instances,
well-known structures and devices are shown in block diagram form
in order to avoid unnecessarily obscuring the present
invention.
Functional Overview
[0021] The present disclosure is directed to processes and logic
for creating and displaying structured geotagged data using
interactive digital geographic imagery ("digital maps").
[0022] In one embodiment, a mapping system comprises processes and
logic for creating a geo tag for existing structured data.
According to one embodiment, a user creates a geo tag for a
property of an existing object by selecting a geographic location
on an interactive digital map and selecting the property of the
existing object from a dialog presented to the user in response to
selecting the geographic location. A property value is input. The
object and a property may be selected from among objects and
properties that have been defined in an extensible object ontology
that is coupled to the processes or logic. Multiple objects may be
associated with the same geographic location. Multiple instances of
the same object having different property values may be associated
with the same geographic location. In this way, the user can more
quickly and easily create structured geotagged data than can be
accomplished using typical approaches requiring the user to
manually enter geographic coordinates to associate a geographic
location with structured data.
[0023] In another embodiment, the mapping system comprises
processes and logic for creating a geo tag for new structured data.
According to an embodiment, a user creates a geo tag for a property
of a new object by selecting a geographic location on an
interactive digital map and entering a label name for the new
object in a dialog presented to the user in response to selecting
the geographic location. In this way, the mapping system allows a
user to simultaneously create a geo tag and the structured data to
which the tag will be associated. Further, the geo tag and the
structured data can be created through a single graphical user
interface dialog.
[0024] In another embodiment, the mapping system comprises
processes and logic for sourcing a geo tag. According to one
embodiment, the mapping system allows the user to associate a geo
tag with a source of information about the geo tag such as a
document, media file, hyperlink, and the like. Multiple sources may
be associated with the same geographic location.
[0025] In another embodiment, the mapping system comprises
processes and logic for creating a geo tag for structured data from
a geographic location that is determined by submitting a query
string to a gazetteer system. According to one embodiment, the
mapping system allows the user to enter a query string related to a
geographic location which the mapping system in turn submits to a
gazetteer system. The gazetteer system returns geographic
coordinates corresponding to the entered query string and the
mapping system presents to the user an interactive digital map
image of the Earth that corresponds to the returned geographic
coordinates. The user can then geo tag structured data by selecting
a geographic location on the interactive digital map and either
selecting a property of an existing object from a dialog presented
to the user in response to selecting the geographic location or
entering a label name for the new object in a dialog.
[0026] In another embodiment, the mapping system comprises a
process and logic for concurrent display of structured geotagged
data superimposed on a digital map image and a histogram displaying
properties of the structured geotagged data as a function of
time.
[0027] In another embodiment, the mapping system comprises a
process and logic for concurrent display of filtered structured
geotagged data superimposed on a digital map image and a histogram
displaying properties of the filtered structured geotagged data as
a function of time.
[0028] In another embodiment, the mapping system comprises
processes and logic for concurrent display of structured geotagged
data superimposed on a digital map image. The displayed structured
geotagged data fall into one or more user-selected time windows
selected by interacting with a concurrently displayed
histogram.
[0029] In another embodiment, the mapping system comprises
processes and logic for dynamic and updated display of structured
geotagged data superimposed on a digital map image. The displayed
structured geotagged data fall into a user selected time window on
a concurrently displayed histogram. The display of the geotagged
data superimposed on the image is dynamically updated as the user
adjusts the selected time window.
Example Mapping System
[0030] FIG. 1A illustrates an example mapping system comprising
processes for creating and displaying structured geotagged data
using interactive digital geographic imagery. Mapping system 100
comprises application server 102 and one or more clients, such as
client 120. The client 120 of FIG. 1 broadly represents any host
computer of an intelligence analyst, database administrator, or
other user who interacts with data repository 114 through mapping
logic 104. Users can access mapping logic 104 through GUI logic 122
to obtain information from data repository 114 and to obtain
services of mapping logic 104. Client 120 may comprise a personal
computer, workstation, or other data processing system.
[0031] In the embodiment illustrated in FIG. 1A, client 120, which
may be implemented by one or more first physical computing devices,
is communicatively connected to application server 102, which may
be implemented by one or more second physical computing devices,
over one or more networks, network links, or inter-networks. In
some embodiments, each such physical computing device may be
implemented as a separate computer system as show in FIG. 10. For
example, client 120 may be implemented in a computer system as a
set of program instructions recorded on a machine-readable storage
medium, while application server 102 may be implemented in a
different computer system.
[0032] Client 120 comprises graphical user interface (GUI) logic
122, GUI logic 122 may be a set of program instructions which, when
executed by one or more processors of the computer system, is
operable to receive user input and display one or more graphic
constructs related to creating and displaying structured geotagged
data using the approaches herein. GUI logic 122 may be operable to
receive user input from, and display the graphic constructs to, a
graphical user interface that is provided on display 124 by the
computer system on which client 120 executes.
[0033] Client 120 may also interact with application server 102 to
provide input, definition, editing instructions, expressions
related to one or more objects or constructs as described herein
using a programmatic interface. Application server 102 may use,
process, log, store, or otherwise interact with the received input
according to application server logic.
[0034] Application server 102 may be implemented as a computer
system having the logical elements show in FIG. 1. In an
embodiment, the logical elements may comprise program instructions
recorded on one or more computer-readable storage media.
Alternatively, the logic elements may be implemented in hardware,
firmware, or a combination of hardware and software.
[0035] When executed by one or more processors of the computer
system, logic in application server 102 is operable to create and
display or otherwise use structured geotagged data using digital
maps according to the techniques described herein. In one
embodiment, application server 102 may be implemented in a Java
Virtual Machine (JVM) that is executing in a distributed or
non-distributed computer system. In other embodiments, application
server 102 may be implemented as a combination of programming
instructions written in any programming language (e.g., C++ or
Visual Basic) and hardware components (e.g., memory, CPU time) that
have been allocated for executing the program instructions.
[0036] In an embodiment, application server 102 comprises
repository access logic 112 and mapping logic 104. Repository data
access logic 112 may comprise a set of program instructions which,
when executed by one or more processors, are operable to access and
retrieve data including digital map data, structured data, and
structured geotagged data from data repository 114. For example,
repository access logic 112 may be database client or a Java
Database Connectivity (JBDC) client that supports calls to a
database server that manages data repository 114. Data repository
114 may be any type of structured storage for storing data
including, but not limited to, relational or object-oriented
databases, data warehouses, directories, data files, and any other
structured data storage.
[0037] In the embodiment illustrated in FIG. 1A, mapping logic 104
comprises logic to create, read, update, and delete digital map
data, structured data, and structured geotagged data in response to
input from client 120. Mapping logic 104 also comprises logic for
processing input from client 120 and for providing data to be
rendered by GUI logic 122 on display 124 in response to client
input. In one embodiment, mapping logic 104 is object-oriented
logic developed using an object-oriented programming language such
as the Java programming language. Further, for purposes of
illustrating a clear example, certain embodiments are described
with mapping logic 104 receiving input from and providing output to
client 120 under control of a user. Alternatively, mapping logic
104 may define an application programming interface (API) and may
receive input in the form of calls or programmatic requests from
other logic, systems or software elements and may provide output in
the form of responses to the calls. Thus, all description herein of
user interaction with mapping logic 104 broadly encompasses
programmatic interaction with mapping logic without direct user
involvement.
[0038] Application server 102 may be connected to a gazetteer
system 130. Gazetteer system 130 is a computer system that
functions as a geographical index. In one embodiment, gazetteer
system 130 receives as input a search or query string and returns a
list of geographic coordinates that correspond to the inputted
query string. Gazetteer system 130 may maintain a database for
associating text with geographical coordinates. Gazetteer system
130 may provide an online network accessible interface that can be
accessed by another computer system such as application server 102
using known or standardized network protocols such as the HyperText
Transfer Protocol (HTTP). Alternatively, gazetteer system 130 may
be a component of application server 102.
[0039] FIG. 1B illustrates the example mapping system of FIG. 1 in
greater detail. As shown in FIG. 1B, mapping logic 104 comprises
geo-tagging logic 105, data sourcing logic 106, gazetteer logic
107, histogram logic 108, event windowing logic 109, filtering
logic 110, and geo-temporal filtering logic 111 each of which
comprise logic for processing input from client 120 and for
providing data to be rendered by GUI logic 122 on display 124 in
response to client input.
[0040] In one embodiment, geo-tagging logic 105 implements the
functions described herein for creating a geo-tag for structured
data. Data sourcing logic 106 implements the functions described
herein for associating data sources with structured geotagged data.
Gazetteer logic 107 is configured to interact with gazetteer system
130 by submitting search queries to gazetteer system 130 and
receiving in response a set of search results in the form of one or
more geographic coordinates that correspond or match the given
query. Gazetteer logic 107 may interoperate with geo-tagging logic
105 to implement the functions described herein for creating a
geo-tag for structured data using a gazetteer system. Histogram
logic 108 implements the functions described herein for concurrent
display of structured geotagged data superimposed on a digital map
image and a histogram displaying properties of the structured
geotagged data as a function of time. Event windowing logic 109
implements the functions described herein for displaying filtered
structured geotagged data according to user-selected time windows.
Filtering logic 110 implements the functionality described herein
for generating and displaying views of filtered structured
geotagged data. Geo-temporal filtering logic 111 implements the
functions described herein for generating geo-temporal displays of
filtered structured geotagged data.
[0041] In an embodiment, logics 105-111 may be implemented in a
single computer program or module or implemented in a fewer number
of computer programs or modules than is shown in FIG. 1B. Further,
portions of logic 105-111 may be implemented by computer systems
other than application server 102 such as, for example, by GUI
logic 122 of client 102. Thus, the structural separation of
functional modules as shown in FIG. 1B is not required and the same
functions described herein for such functional modules may be
implemented structurally in any other convenient manner.
[0042] As shown in FIG. 1B, data repository 114 may comprise
structured data 115, structured geotagged data 116, map data 117,
and data sources 118. Structured data 115 and structured geotagged
data 116 is described in greater detail below. Map data 117 refers
data for rendering geographic images on the display 124 of client
120. Map data 117 may comprise a library of digital images
comprising satellite and aerial images of the surface of the Earth.
In addition, map data 117 comprises image metadata for mapping a
given image coordinate from an image of the Earth to a
corresponding geospatial coordinate. Data sources 118 refers
broadly to any data that serves as a data source for structured
data 115 or structured geotagged data 116. Non-limiting examples of
data sources 118 include electronic documents, e-mails, electronic
images or other media files, a reference or link such as a Uniform
Resource Locator (URL) to a document available from another
computer system, and the like.
Structured Data
[0043] Structured data is any data that adheres to a conceptual
data model. In one embodiment, the mapping system works with
structured data that adheres to a conceptual data model comprising
objects and properties that are organized according to an object
ontology. An object represents a real-world entity such as a
person, place or thing. An object can also represent a real-world
event such as a "phone call" or a "meeting". Each object may have
one or more properties for describing various aspects of the
object. For example, a "person" object may have an "address"
property and a "phone number" property. Instances of objects may be
labeled for identification. For example, an instance of a "person"
object may be labeled with the person's name.
[0044] The structured data may be stored in a database managed by a
computer-based database management system, such as a relational
database management system (RDBMS), according to a fixed or dynamic
structure of data containers (e.g., tables) and relationships. The
database structure may be described using an ontology, embodied in
a database schema, comprising a data model that is used to
represent the structure and reason about objects and properties in
the structure. In an embodiment, the ontology is provided as
described in PCT international patent publication PCT/US2008/064207
A2.
[0045] In one embodiment, the mapping system works with objects and
properties according to a user-specified ontology specified in
terms of object types and property types. Non-limiting examples of
object types include a "person" object type, a "location" object
type, and an "event" object type. Non-limiting examples of property
types include an "address" property type, a "phone number" property
type, and a "location name" property type. Objects may have any
number of properties. Objects stored as structured data in the
database may be instantiated based on user-defined object types.
Each property of an object stored as structured data may be
instantiated based on user-defined property types. Further, object
types and property types may be instantiated based on a base type.
For example, a base type for a "home" object type may be a
"location" object type. The object ontology may be dynamically
extended during use of the mapping system described herein by
entering new names of objects or new property names, causing the
system to create entries for the objects or properties in the
ontology.
Structured Geotagged Data
[0046] Structured geotagged data is structured data that is
associated with a geo tag. A geo tag is geospatial metadata that
represents a point on the surface of the Earth according to a
geospatial coordinate. A geo tag may be stored in a database and
associated with structured data according to a database data model
such as, for example, a relational database model.
[0047] In one embodiment, a geo tag comprises an identifier of a
location, and an optional date range, and may be associated with a
property of an object. For example, a geo tag may be stored in a
database and associated with an "address" property of a "person"
object. In one embodiment, the location of a geo tag represents a
point of the surface of the Earth and is stored as a
latitude/longitude geospatial coordinate pair according to the
World Geodetic System (WGS). However, embodiments are not limited
to any particular type or format of geospatial coordinates or any
particular geodetic system and a geospatial location of a geo tag
may be represented using virtually any geographic coordinate system
such as a the Universal Transverse Mercator (UTM) coordinate system
or the Military Grid Reference System (MGRS).
[0048] The optional date range may be used to specify a time period
during which the location identified by a geo tag is applicable to
or valid for the property associated with the geo tag. Thus the
optional date range is useful for capturing a temporal aspect of a
geospatial attribute of a property of an object. For example,
consider an object representing a face-to-face meeting between two
persons, the object having a location property whose value is the
postal address of the location of the meeting. In this example, a
geo tag may be stored and associated with the "location" property
of the "meeting" object. In addition, the geotag may specify a date
range which indicates the duration of the meeting at the location
indicated by the geo tag.
Creating a Geo Tag for Structured Data
[0049] FIG. 2 is a screenshot of a graphical user interface for
creating a geo tag for structured data. The interface may be
displayed to a user on the display of a computer system such as
display 124 of client 120. The interface comprises map image window
202, map image 204, and geo tag dialog 224.
[0050] Map image 204 is a digital photograph of a particular area
of the surface of the Earth at a particular altitude. The image may
be captured by a satellite or aerial photography and imported into
a mapping system such as mapping system 100. The interface may
allow the user to select a particular map data source or map tile
source from among a plurality of different map data sources all of
which provide different sets of data that map the Earth or parts of
the Earth. The interface may provide other interface tools (not
shown) that allow a user to locate a map image for a particular
surface area of the Earth at a particular altitude. For example,
the initial map image presented to the user may be of the entire
North American continent. The user may then use a pointing device
such as a mouse or other input mechanism such as keyboard to zoom
toward a particular surface region. For example, the user may zoom
from an image of the North American continent to an image of the
Western United States and then to an image of Northern California,
to an image of Palo Alto, Calif., and finally to an image of the
100 block of Hamilton Avenue in Palo Alto, Calif.
[0051] Once the user has located the desired map image, the user
may wish to associate a particular geographic location depicted by
the image with an existing property of an existing object stored as
structured data in a database. In one embodiment, to geo tag a
property of an object, the user uses a pointing device such as
mouse or other suitable input device to identify and select a
geographic location on map image 204. For example, the user may
direct, using an input device, a graphical pointer to a particular
point on map image 204 and then select the point by clicking a
mouse button. Alternatively, the user may select the geographic
location by depressing a geo tag hot key while the graphical
pointer is hovering over the desired geographic location on map
image 204. In one embodiment, the hot key is the lowercase `t` key
on a standard QWERTY keyboard. As shown in FIG. 2, the particular
geographic point selected is within the area of crosshairs 216
overlaid on map image 204. The crosshairs 216 represent merely one
example of how the system may indicate the selected location to a
user. The area within the crosshairs 216 is arbitrary and may have
any size or shape. Other forms of indication may be used such as
various polygons, icons, pointers, or other user interface
widgets.
[0052] In response to selecting a geographic location, geo tag
dialog 224 is displayed. Dialog 224 may be used to select an object
and a property of an object to associate with the selected
geographic location. To select the desired object, dialog 224
provides object label control 226 and object type control 228,
property type control 240, and property value control 242. Controls
226 and 228 may be used to select an existing object stored as
structured data in a database based on an existing ontology, or to
create a new object to be stored as structured data in the database
and in the ontology.
[0053] Object label control 226 allows the user to search for an
existing object based on a text label. Text inputted by the user
into control 226 may be used by the mapping system to query objects
within structured data that have labels that match or contain the
inputted text. The results of the query on the structured data may
be presented to the user on the interface allowing the user to
select one of the results as the desired object. For example, FIG.
3 shows drop-down results panel 330 showing search results 332
resulting from a query against structured data for objects having a
label matching the inputted text "John Carrino". In the example
depicted by FIG. 3, no such objects were found as indicated by the
"No Results" message at the bottom of panel 330. Panel 330 also
contains a list of recently used objects 334 that may be selected
by the user as the desired object. In one embodiment, panel 330 is
presented to the user automatically as search results are
available. In another embodiment, panel 330 is presented on-demand
in response to user input such as, for example, in response to the
user selecting the drop-down icon 336 in object label control
326.
[0054] In one embodiment, the mapping system is configured to
perform an incremental search as the user inputs text in object
label control 226. As the user types text into object label control
226, possible matches are presented to the user, for example, on
panel 330 of FIG. 3. The immediate feedback of search results
allows the user to select a desired object without having to type
or input the entire label name into control 226.
[0055] In one embodiment, if no object matching the inputted label
text is found, the user may create a new object with a label name
equaling the inputted text. For example, control 338 on panel 330
of FIG. 3 allows the user to create a new object with the label
name "John Carrino".
[0056] Returning to FIG. 2, object type control 228 indicates the
current type, if any, of the object selected in object label
control 226. Object type control 228 also allows the user to
specify a new type for the object selected in object label control
226. In an embodiment, the types available for selection in object
type control 228 are from an ontology such as the ontology
described in PCT international patent publication PCT/US2008/064207
A2.
[0057] Once an object is selected or a new object is created, the
user may select a property of the current object to be associated
with the selected geographic location 216. To select a property of
the current object the user may search for the property by value
using property value control 242. As with object label control 226,
the mapping system may employ an incremental search as text is
entered into control 242. If the desired property value is
currently not a property of the current object, then the user may
create a new property of the current object by entering a new value
in property value control 242. Property type control 240 may be
used to select the property type of a new property value entered
into control 242 or to select a new property type for an existing
property value found using the search feature of control 242.
[0058] Dialog 224 also comprises location information 246 and date
range information 248. Location information 246 and date range 248
comprise the geospatial data of a geo tag that is to be associated
with the selected object property.
[0059] In the embodiment depicted by FIG. 2, location information
246 indicates the geospatial coordinates of the selected geographic
location 216 in terms of latitude and longitude. However, location
information 246 may indicate geospatial coordinates using other
geospatial coordinate systems such as the Universal Transverse
Mercator (UTM) coordinate system or the Military Grid Reference
System (MGRS). The user may use the drop-down select box labeled
"Format:" to select the desired geospatial coordinate system used
to represent the geospatial location of location 216. When
presenting dialog 224 to the user, mapping system automatically
determines the geographic coordinate (e.g., latitude and longitude)
of the selected location 216. Thus, the user does not need to enter
the geospatial coordinates (e.g., latitude and longitude) of a
desired geographic location in order to identify that location to
the mapping system. Instead, the user may simply select or click on
the desired location on the map image 204 to identify geographic
location 216. Alternatively, the user may use the hot key approach
for identifying a location on a map image as described previously.
To automatically determine a geospatial coordinate from a user
selected location on a map image, the mapping system may employ
logic, such as mapping logic 104, for translating an image
coordinate to a geospatial coordinate.
[0060] Date range information 248 may be specified by the user to
indicate a timeframe during which the specified location 216 is
applicable to the selected object property. For example, a date
range could be applied to a geo tag of an "address" property of a
"person" object to indicate that the person had the address of the
specified location during the specified timeframe. As another
example, a date range could be applied to a geo tag of an "address"
of a "meeting event" object to indicate that that a meeting took
place at the specified location for the specified timeframe.
[0061] Once an object and a property of the object have been
selected, the user can geo tag the selected object property by
clicking the "Tag" button 244 on dialog 224. Clicking button 244
causes the mapping system to store data in a database such as data
repository 114 associating the indicated geospatial data 246 and
248 with the selected object property.
Sourcing Geo Tagged Properties
[0062] In an embodiment, the mapping system allows the user to
source a geo tagged property. Sourcing refers to associating in a
database structured data with one or more data sources. Data
sources may include manually entered data, electronic documents,
e-mails, electronic images or other media files, other computer
systems, and the like.
[0063] FIG. 4 is a screenshot of a graphical user interface for
sourcing a geo tagged property. The interface may be displayed to a
user on the display of a computer system such as display 124 of
client 120. The interface comprises map image window 402, map image
404, geo tag dialog 424, and data sources dialog 452.
[0064] In an embodiment, data sources dialog 452 is displayed in
response to the user selecting an active data source link 450 on
geo tag dialog 424. With data sources dialog 452, the user can
associate one or more data sources with a new geotagged property.
To associate one or more data source with a new geotagged property,
data source dialog 452 provides available data sources panel 454
and selected data sources panel 456. With available data sources
panel 454 the user may enter text to search for existing data
sources. In one embodiment, a list of recently used data sources
appears in available data sources panel 454.
[0065] Selected data sources panel 456 lists the data sources to be
associated with the new geotagged property. The user can add data
sources to the selected data sources list 456 by selecting one or
more data sources listed in the available data sources panel 454
and then selecting arrow 462. The user can remove data sources from
the selected data sources list 456 by selecting one more data
sources listed in the selected data sources panel 456 and then
selecting arrow 464. The user has the operation to create a new
data source by selecting button 460 if the desired data source has
not yet been entered into the mapping system.
[0066] Data source preview pane 458 provides the user with a
preview of the currently selected data source in available data
sources panel 454.
[0067] Once the user has selected the desired data sources to
associate with the new geotagged property, the user selects the
save button 466. Clicking button 466 causes the mapping system to
store data in a database such as data repository 114 associating
selected data sources 456 with the selected object property as
indicated by controls 426, 428, 440, and 442 on dialog 424. The
user may repeat the foregoing process any number of times for any
number of data sources.
[0068] Associating data sources with a geo tagged property provides
numerous benefits in comparison to prior approaches. For example,
in a government application, a user could associate multiple
intelligence reports about a particular individual with a location
that the individual is known to reside, have a place of business,
or have another form of association. In a geneology application, a
user could associate multiple images of historical documents with a
present or historical location associated with a historical person.
In a municipal building and planning application, a user could
associate construction permit documents, construction plans,
correspondence, and other images or documents with a map location
indicating a residence or other building. Consequently, with the
techniques herein a map becomes a sophisticated data analysis tool
that may be richly associated with a diverse universe of documents,
media files, or other data.
Gazetteer
[0069] FIG. 5 is a screenshot of a graphical user interface for
creating a geo tag for structured data using a gazetteer system. A
gazetteer system is a computer system that functions as a
geographical index. In one embodiment, the gazetteer system
receives as input a search or query string and returns a list of
geographic coordinates that correspond to the inputted query
string. The gazetteer system may maintain a database for
associating text with geographical coordinates. The gazetteer
system may provide an online network accessible interface that can
be accessed by another computer system such as the mapping system
of the present disclosure using known or standardized network
protocols such as the HyperText Transfer Protocol (HTTP).
Alternatively, the gazetteer system may be a component of the
mapping system itself.
[0070] The interface of FIG. 5 comprises map image window 502, map
image 504, geo tag dialog 524, search field 568, and search button
570. The interface may be displayed to a user on the display of a
computer system such as display 124 of client 120.
[0071] A process for creating a geo tag for structured data using a
gazetteer system proceeds generally as follows. Initially, the user
enters one or more keywords into search field 568. The one or more
keywords may be textual description of the geographic location the
user desires to geo tag. For example, in the example embodiment
depicted in FIG. 5, the user is interested in geo tagging the
location of the "Eiffel Tower".
[0072] After entering one or more keywords in to search field 568
and upon selecting the search button 570, mapping system submits
the search keyword(s) to a gazetteer system. The gazetteer system
returns to the mapping system one or more geographic coordinates
that correspond to the given search keyword(s). In one embodiment,
upon receiving the geographic coordinate(s) from the gazetteer
system, mapping system displays to the user a map image 504 showing
all the geographic locations that match the given search
keyword(s). In another embodiment, depending on the number of
matches and the geographical distance between the matches, the
mapping system displays a map image 504 showing only a subset of
all the geographic locations that match the given search
keyword(s). Each geographic coordinate returned from the gazetteer
system that is displayed in the map image 504 is flagged with a
location identifier flag 572.
[0073] To create a geo tag for structured data for the location
identified by flag 572, the user may select a flag 572, for
example, by double-clicking with a pointing device on the graphical
area of flag 572. Selecting a flag 572 causes geo tag dialog 524 to
appear. The user may then use dialog 524 to select an object
property to associate with the location 516. In one embodiment, the
default property value presented in property value control 542 is a
string value returned from the gazetteer system in response to
submitting the inputted search keywords to the gazetteer
system.
Event Histogram
[0074] FIG. 6 is a screenshot of a graphical user interface 600 for
displaying structured geotagged data. The interface may be
displayed to a user on the display of a computer system such as
display 124 of client 120. Interface 600 comprises map image window
602, map image 604, and histogram 606.
[0075] According to one embodiment, interface 600 allows a user to
view the locations of geo tagged events that occurred during a
period time. The location of each event is indicated on interface
600 as a superimposed dot 608 on map image 604. Interface 600 also
provides a histogram 606 showing the distribution of the occurrence
of the events shown on map image 604 over the period of time.
Histogram 606 allows the user to quickly determine when the events
shown on map image 604 occurred. For example, a user viewing the
example interface 600 depicted in FIG. 6 could easily determine
that most of the events plotted on map image 604 occurred in the
spring of 2008 and the early fall of 2004.
Filtering Events
[0076] FIG. 7 is a screenshot of a graphical user interface 700 for
displaying filtered structured geotagged data. The interface may be
displayed to a user on the display of a computer system such as
display 124 of client 120. Interface 700 comprises map image window
702, map image 704, histogram 706, and event type filtering panel
710.
[0077] According to one embodiment, interface 700 allows a user to
filter geo tagged events displayed to the user based on the type of
event. In one embodiment, the type of event may be selected from
event type filtering panel 710. In the example embodiment depicted
in FIG. 7, the "Indirect Attack" event type is selected in panel
710.
[0078] In one embodiment, selecting an event filtering type in
panel 710 causes the mapping system to indicate on map image 704
the locations of the geo tagged events that correspond to the
selected event type. For example, in the example embodiment
depicted in FIG. 7, selecting the "Indirect Attack" event type on
panel 710 causes the superimposed dots 708 on map image 704 that
correspond to locations of "Indirect Attack" events to appear as
yellow dots. All other events appear as white dots so that the
locations of the selected event type can be visually distinguished
from all other event types.
[0079] In another embodiment, instead of showing both the locations
of selected event types and non-selected event types as
superimposed dots 708 on map image 704, selecting an event type in
panel 710 causes the mapping system to indicate on map image 704
only the locations of the geo tagged events that correspond to the
selected event type. For example, instead of showing both the
locations of the "Indirect Attack" event type (yellow dots) and the
locations of all other event types (white dots), selecting the
"Indirect Attack" event type in panel 710 causes the mapping system
to superimpose a dot 708 on map image 704 only for the locations of
"Indirect Attack" events.
[0080] Interface 700 also provides a histogram 706 showing the
distribution of the occurrence of the events shown on map image 704
over a period of time. The bars of the histogram may be color coded
to visually indicate the number of events of a particular type that
occurred during a particular time. For example, in the example
embodiment depicted by FIG. 7, the color of the bars on histogram
706 indicate that all "Indirect Attack" events occurred during 2004
while virtually all other events occurred in early 2008.
Event Time Windows
[0081] FIG. 8 is a screenshot of a graphical user interface 800 for
displaying filtered structured geotagged data. The interface may be
displayed to a user on the display of a computer system such as
display 124 of client 120. Interface 800 comprises map image window
802, map image 804, histogram 806.
[0082] According to one embodiment, the user can select one or more
time windows on the histogram 806. By selecting one or more time
windows the user can command the mapping system to show on map
image 804 the locations of only those events that occurred during
the selected time window(s). In one embodiment, to select a time
window, the user uses a pointing device to select a first time
boundary on the histogram timeline, drags the pointing device to a
second point on the histogram timeline, and then releases the
pointing device to select a second time boundary. The area between
the selected first time boundary and the second time boundary
represents the selected time window. In one embodiment, the time
window is shaded to give a visual indication with respect to a
histogram timeline of the start date, end date, and duration of the
time window.
[0083] In one embodiment, a user can make multiple discontinuous
time window selections. To do so the user may depress a designated
keyboard key while making second and any subsequent time window
selections so as to preserve the existing time window selections.
In one embodiment, the designated keyboard key is the "Alt" key or
the "Ctrl".
[0084] In one embodiment, as time windows are selected by the user
on the histogram 806, the mapping system updates the display of map
image 804. In particular, the mapping system updates the display of
map image 804 to show the locations of only those events that fall
within the selected time window. For example, in the example
embodiment depicted in FIG. 8, only the locations of the events
that fall within time windows 812A and 812B are designated with
superimposed dots 808 on map image 804.
Geo-Temporal Views of Events
[0085] FIGS. 9A and 9B are screenshots of a graphical user
interface 900 for displaying filtered structured geotagged data.
The interface may be displayed to a user on the display of a
computer system such as display 124 of client 120. Interface 900
comprises map image window 902, map image 904, and histogram
906.
[0086] According to one embodiment, the user can select an initial
time window on the histogram 906 and then drag a boundary of the
initial time window using a pointing device to expand or contract
the time window. As the user expands or contracts the time window
by dragging a boundary of the time window, the mapping system
continuously updates the map image 904 to show the locations of the
events that fall within the time window as the time window is
expanded and contracted. In this way, the user can create a
geo-temporal view of events that give the user a sense of the
progression of the location of events over a period of time.
[0087] In the example embodiment depicted in FIG. 9A, initial time
window 912 has a start time boundary 914 and an end time boundary
916. The duration of the time window 912 is visually indicated as a
grayed rectangular portion of histogram 906 between boundary 914
and boundary 916. As shown in FIG. 9A, the locations of events that
fall within time window 912 are shown on map image 904 as a heat
map. The colors of the heat map indicate the relative density of
events that occurred at a particular location during time window
912. Cooler colors (e.g., blue) indicate a relatively few number of
events at a particular location and hotter colors (e.g., red)
indicate a relatively larger number of events at a particular
location.
[0088] FIG. 9B shows time window 912 after the user has dragged the
rightmost boundary of the time window 912 from boundary position
916 to boundary position 918. Map image 904 is updated to indicate
the locations of the events that occurred within time window 912 as
defined by the new boundaries 914 and 918. Further, according to an
embodiment, as the user drags the rightmost boundary of time window
912 from boundary 916 to boundary 918 the mapping system
continuously updates map image 904 to indicate the locations of the
events that occurred within the time window.
[0089] In another embodiment, instead of creating a geo-temporal
view of events based on an expanding or contracting time window,
the user can create a geo-temporal view of events based on a
sliding time window in which as the user drags time window such
that both the left most boundary and the right most boundary slide
along with the window. As the user drags the sliding time window,
the mapping system continuously updates map image 904 to indicate
the location of events that occurred within the boundaries of the
sliding time window.
Hardware Overview
[0090] According to one embodiment, the techniques described herein
are implemented by one or more special-purpose computing devices.
The special-purpose computing devices may be hard-wired to perform
the techniques, or may include digital electronic devices such as
one or more application-specific integrated circuits (ASICs) or
field programmable gate arrays (FPGAs) that are persistently
programmed to perform the techniques, or may include one or more
general purpose hardware processors programmed to perform the
techniques pursuant to program instructions in firmware, memory,
other storage, or a combination. Such special-purpose computing
devices may also combine custom hard-wired logic, ASICs, or FPGAs
with custom programming to accomplish the techniques. The
special-purpose computing devices may be desktop computer systems,
portable computer systems, handheld devices, networking devices or
any other device that incorporates hard-wired and/or program logic
to implement the techniques.
[0091] For example, FIG. 10 is a block diagram that illustrates a
computer system 1000 upon which an embodiment of the invention may
be implemented. Computer system 1000 includes a bus 1002 or other
communication mechanism for communicating information, and a
hardware processor 1004 coupled with bus 1002 for processing
information. Hardware processor 1004 may be, for example, a general
purpose microprocessor.
[0092] Computer system 1000 also includes a main memory 1006, such
as a random access memory (RAM) or other dynamic storage device,
coupled to bus 1002 for storing information and instructions to be
executed by processor 1004. Main memory 1006 also may be used for
storing temporary variables or other intermediate information
during execution of instructions to be executed by processor 1004.
Such instructions, when stored in storage media accessible to
processor 1004, render computer system 1000 into a special-purpose
machine that is customized to perform the operations specified in
the instructions.
[0093] Computer system 1000 further includes a read only memory
(ROM) 1008 or other static storage device coupled to bus 1002 for
storing static information and instructions for processor 1004. A
storage device 1010, such as a magnetic disk or optical disk, is
provided and coupled to bus 1002 for storing information and
instructions.
[0094] Computer system 1000 may be coupled via bus 1002 to a
display 1012, such as a cathode ray tube (CRT), for displaying
information to a computer user. An input device 1014, including
alphanumeric and other keys, is coupled to bus 1002 for
communicating information and command selections to processor 1004.
Another type of user input device is cursor control 1016, such as a
mouse, a trackball, or cursor direction keys for communicating
direction information and command selections to processor 1004 and
for controlling cursor movement on display 1012. This input device
typically has two degrees of freedom in two axes, a first axis
(e.g., x) and a second axis (e.g., y), that allows the device to
specify positions in a plane.
[0095] Computer system 1000 may implement the techniques described
herein using customized hard-wired logic, one or more ASICs or
FPGAs, firmware and/or program logic which in combination with the
computer system causes or programs computer system 1000 to be a
special-purpose machine. According to one embodiment, the
techniques herein are performed by computer system 1000 in response
to processor 1004 executing one or more sequences of one or more
instructions contained in main memory 1006. Such instructions may
be read into main memory 1006 from another storage medium, such as
storage device 1010. Execution of the sequences of instructions
contained in main memory 1006 causes processor 1004 to perform the
process steps described herein. In alternative embodiments,
hard-wired circuitry may be used in place of or in combination with
software instructions.
[0096] The term "storage media" as used herein refers to any media
that store data and/or instructions that cause a machine to
operation in a specific fashion. Such storage media may comprise
non-volatile media and/or volatile media. Non-volatile media
includes, for example, optical or magnetic disks, such as storage
device 1010. Volatile media includes dynamic memory, such as main
memory 1006. Common forms of storage media include, for example, a
floppy disk, a flexible disk, hard disk, solid state drive,
magnetic tape, or any other magnetic data storage medium, a CD-ROM,
any other optical data storage medium, any physical medium with
patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM,
any other memory chip or cartridge.
[0097] Storage media is distinct from but may be used in
conjunction with transmission media. Transmission media
participates in transferring information between storage media. For
example, transmission media includes coaxial cables, copper wire
and fiber optics, including the wires that comprise bus 1002.
Transmission media can also take the form of acoustic or light
waves, such as those generated during radio-wave and infra-red data
communications.
[0098] Various forms of media may be involved in carrying one or
more sequences of one or more instructions to processor 1004 for
execution. For example, the instructions may initially be carried
on a magnetic disk or solid state drive of a remote computer. The
remote computer can load the instructions into its dynamic memory
and send the instructions over a telephone line using a modem. A
modem local to computer system 1000 can receive the data on the
telephone line and use an infra-red transmitter to convert the data
to an infra-red signal. An infra-red detector can receive the data
carried in the infra-red signal and appropriate circuitry can place
the data on bus 1002. Bus 1002 carries the data to main memory
1006, from which processor 1004 retrieves and executes the
instructions. The instructions received by main memory 1006 may
optionally be stored on storage device 1010 either before or after
execution by processor 1004.
[0099] Computer system 1000 also includes a communication interface
1018 coupled to bus 1002. Communication interface 1018 provides a
two-way data communication coupling to a network link 1020 that is
connected to a local network 1022. For example, communication
interface 1018 may be an integrated services digital network (ISDN)
card, cable modem, satellite modem, or a modem to provide a data
communication connection to a corresponding type of telephone line.
As another example, communication interface 1018 may be a local
area network (LAN) card to provide a data communication connection
to a compatible LAN. Wireless links may also be implemented. In any
such implementation, communication interface 1018 sends and
receives electrical, electromagnetic or optical signals that carry
digital data streams representing various types of information.
[0100] Network link 1020 typically provides data communication
through one or more networks to other data devices. For example,
network link 1020 may provide a connection through local network
1022 to a host computer 1024 or to data equipment operated by an
Internet Service Provider (ISP) 1026. ISP 1026 in turn provides
data communication services through the world wide packet data
communication network now commonly referred to as the "Internet"
1028. Local network 1022 and Internet 1028 both use electrical,
electromagnetic or optical signals that carry digital data streams.
The signals through the various networks and the signals on network
link 1020 and through communication interface 1018, which carry the
digital data to and from computer system 1000, are example forms of
transmission media.
[0101] Computer system 1000 can send messages and receive data,
including program code, through the network(s), network link 1020
and communication interface 1018. In the Internet example, a server
1030 might transmit a requested code for an application program
through Internet 1028, ISP 1026, local network 1022 and
communication interface 1018.
[0102] The received code may be executed by processor 1004 as it is
received, and/or stored in storage device 1010, or other
non-volatile storage for later execution.
Extensions and Alternatives
[0103] In the foregoing specification, embodiments of the invention
have been described with reference to numerous specific details
that may vary from implementation to implementation. For example,
certain embodiments have been described with respect to geo tagging
locations on the Earth, but other embodiments may be applied to geo
tagging other kinds of locations or other planetary bodies. Thus,
the sole and exclusive indicator of what is the invention, and is
intended by the applicants to be the invention, is the set of
claims that issue from this application, in the specific form in
which such claims issue, including any subsequent correction. Any
definitions expressly set forth herein for terms contained in such
claims shall govern the meaning of such terms as used in the
claims. Hence, no limitation, element, property, feature, advantage
or attribute that is not expressly recited in a claim should limit
the scope of such claim in any way. The specification and drawings
are, accordingly, to be regarded in an illustrative rather than a
restrictive sense.
* * * * *