EP1700133A1 - Technique for collecting and using information about the geographic position of a mobile object on the earth's surface - Google Patents

Technique for collecting and using information about the geographic position of a mobile object on the earth's surface

Info

Publication number
EP1700133A1
EP1700133A1 EP04804121A EP04804121A EP1700133A1 EP 1700133 A1 EP1700133 A1 EP 1700133A1 EP 04804121 A EP04804121 A EP 04804121A EP 04804121 A EP04804121 A EP 04804121A EP 1700133 A1 EP1700133 A1 EP 1700133A1
Authority
EP
European Patent Office
Prior art keywords
position data
positions
request
mobile object
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP04804121A
Other languages
German (de)
French (fr)
Inventor
Jonathan Lee Orwant
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
France Telecom SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/751,058 external-priority patent/US20050143909A1/en
Application filed by France Telecom SA filed Critical France Telecom SA
Priority to EP04804121A priority Critical patent/EP1700133A1/en
Publication of EP1700133A1 publication Critical patent/EP1700133A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S5/00Position-fixing by co-ordinating two or more direction or position line determinations; Position-fixing by co-ordinating two or more distance determinations
    • G01S5/0009Transmission of position information to remote stations
    • G01S5/0018Transmission from mobile station to base station
    • G01S5/0027Transmission from mobile station to base station of actual mobile position, i.e. position determined on mobile

Definitions

  • the present invention relates generally to a method and apparatus for taking, transmitting, storing, processing, distributing and using data indicative of the position of a mobile object on the Earth's surface. More specifically, it relates to a technique for taking, or obtaining, the cu ⁇ ent latitude, longitude and altitude of a mobile object and periodically transmitting that data and ancillary information to a central base station for persistent storage of the data in a server, where an Application Programmers' Interface makes information available on past and present positions of the object for use by various computer applications.
  • GPS global positioning system
  • mobile telephones that are part of a cellular telecommunications network.
  • GPS uses transmitters carried by orbiting satellites.
  • a receiver mounted on the object being tracked polls the signals transmitted by the satellite to calculate its distance from that satellite.
  • the receiver applies triangulation by detecting signals from three or more GPS satellites to determine its latitude and longitude on the Earth's surface, or from four or more GPS satellites to determine its latitude, longitude and altitude.
  • the entire service area covered by the network is divided into a plurality of coverage areas called "cells".
  • the approximate position of a mobile telephone is known because the "cell” in which it is located is known.
  • various techniques have been developed to obtain a more precise measurement by determining the object's position within the cell.
  • a feature common to these known tracking techniques is that the information of interest is the object's cu ⁇ ent position. After the current position is determined and immediate use is made of that information, further need for it no longer exists. Consequently, the position data is not stored for a substantial period of time (i.e. no persistent storage of the data). Also, the position of the object is of interest at one particular time, but the next time that the object's position may be needed is typically quite a while later. Thus, data on where the object is located is not collected at closely spaced time intervals, nor is such sequentially collected position data stored.
  • One aim of the present invention is to obtain data about the position of a mobile object on the Earth's surface and to store such position data for a substantial period of time (i.e. persistent storage of the position data).
  • Another aim of the present invention is to automatically obtain, at closely spaced time intervals, a history of position data for where the object has been, and to store all such position data.
  • a further aim of the present invention is to process such position data taken at closely spaced time intervals in order to facilitate the task of using the stored data to provide requested information.
  • One other aim of the present invention is to provide a new method and apparatus for obtaining, transmitting, storing, processing, distributing and using the position data.
  • Still another aim of the present invention is to enable a faster, more reliable, more extensible, and more secure method of providing information about an object's whereabouts and motion history.
  • Another aspect of the present invention is directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface.
  • Position data related to each of the plurality of positions is collected in a persistent database.
  • information is provided about movement of the mobile object co ⁇ esponding to the specified time and/or position by accessing the position data for the plurality of positions stored in the persistent database.
  • Yet another aspect of the present invention is directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface by obtaining position data related to each of the plurality of positions.
  • the position data for the plurality of positions is partitioned into a plurality of clusters of related positions that are accessible to provide information in response to a request.
  • Still another aspect of the present invention is directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface by obtaining position data related to each of the plurality of positions and deriving, based on the position data, an individual map for each of a plurality of the positions. Animating the movement of the mobile object is achieved by combining a plurality of said individual maps.
  • FIG. 1 shows a schematic block diagram of components a ⁇ anged for implementing the invention.
  • Fig. 2 depicts a flowchart illustrating operations performed by the server in accordance with the present invention.
  • Fig. 3 provides details of the LOGIN operation shown in Fig. 2.
  • Fig. 4 provides details of the LOGOUT operation shown in Fig. 2.
  • Figs. 5 A - 5C provide details of the LOCATION operation shown in Fig. 2.
  • Fig. 6 provides details of the DISTANCE operation shown in Fig. 2.
  • Figs. 7A - 7C provide details of the HISTORY operation shown in Fig. 2.
  • Figs. 8 A - 8B provide details of the MAP operation shown in Fig. 2.
  • Fig. 9 provides details of the ANIMATION operation shown in Fig. 2.
  • Fig. 10 provides details of the PROXIMITY operation shown in Fig. 2.
  • Fig. 11 A provides details of the OBSERVATION operation shown in Fig. 2.
  • Fig. 1 IB shows a convex hull and a bounding box.
  • Figs. 12A and 12B show Tables 1 to 3B of information stored in the server and derived from location data related to motion of a mobile object on the Earth's surface.
  • Position A three-dimensional geographic spot relative to the Earth's surface having a co ⁇ esponding datapoint, which is a set of latitude/longitude/altitude data. Observations: a sequential numbering of the positions obtained for a particular portable device attached to an object.
  • Location a region of positions (which might be a single position, a cluster, a street address, a city, a convex hull, etc.)
  • the present invention is organized in a server-client configuration.
  • Clients can be either hardware or software, and can provide data about an object's location, request information about an object's location, or both.
  • the server stores the location data for multiple objects simultaneously, and processes that data into information readily usable by computer applications from clients that request information from the server.
  • Fig. 1 shows one implementation of the invention using GPS technology. It should be understood that the invention is not restricted to GPS technology, and this particular arrangement is merely illustrative.
  • the server 3 is a ⁇ anged to operate with one type of client, namely portable device 1 on Object A and portable device 2 on ObjectB, as well as with another type of client, namely computer applications APP1 and APP2.
  • the first type of client provides data to server 3 via API 5 about an object's position, as explained below.
  • the second type of client requests information about the object's position from server 3 through API 5, as also explained below.
  • the portable device (refe ⁇ ed to below as “device") can be placed, for example, inside a car or piece of luggage, or attached to a bicycle, or carried on one's person.
  • the device includes well known circuitry (not shown) to poll signals from a plurality of GPS satellites 7 and to determine therefrom the position of the device on the Earth's surface (which, of course, includes multi-story buildings, tall tress, and the like) and, by inference, the object's position as well.
  • the position data generated by the device identifies the object's specific position (i.e., by latitude, longitude and altitude) at a particular instant of time.
  • the time data used in the invention (as detailed below) is generated by the device based on time information which is continuously transmitted by GPS satellites (and cell towers).
  • the device also includes control circuitry (not shown) to automatically trigger at a preselected time interval the sequence of steps for detecting the GPS signals and for determining the object's position.
  • Such preselected time interval is also a matter of design choice which trades off the resolution of the object's position as a function of time against the required data storage and battery life.
  • the control circuitry can be designed to transmit the position data immediately to the server 3, or to store the position data for a predetermined number of positions and then to transmit the data for all such positions as part of a batch transmission.
  • the device transmits a batch message over the air at periodic intervals to the server 3 which is equipped with a suitable database 9.
  • the message is a digital encoding of a series of positions.
  • the portable device is a Nextel i88s or i95s mobile phone in which the above-mentioned control circuit runs a software program implemented in the J2ME programming environment.
  • This program polls the GPS satellites to determine the cu ⁇ ent position data by calculating the cu ⁇ ent latitude, longitude and altitude of the object, and stores the position data locally (i.e. in the phone's memory).
  • the device periodically relays the position data and the device's globally unique identifier ("GUID”), which was pre-stored therein, to a remote server via a communications network 6.
  • GUID globally unique identifier
  • the locally stored position data is deleted, and these steps are repeated. In addition, it determines the value of several other parameters, including the accuracy of the position calculation, the speed and heading of the object, and the number of GPS satellites "in view" at the time of the poll.
  • a list of the stored parameters is as follows:
  • GUID latitude longitude time of cu ⁇ ent observation latitude/longitude accuracy last observation time last latitude last longitude cell latitude cell longitude speed speed uncertainty heading altitude altitude uncertainty number of satellites whether assisted GPS was used.
  • the program stores the cu ⁇ ent position data in the phone's memory, and periodically compresses (using a run-length-encoding algorithm) and then transmits the data to the server via communications network 6 using GPRS (Generalized Packet Radio Service - details of which are available at http://www.Rsmworld.com).
  • GPRS Generalized Packet Radio Service - details of which are available at http://www.Rsmworld.com.
  • the J2ME program provides menus that allow the user (i.e. the owner of the device) to control the frequency of GPS polls and how often they are relayed to the server, and whether the protocol is UDP or TCP.
  • the server 3 is a computer running the Linux operating system and a MySQL database engine 9 (available for free at http://www.mvsql.com) which records in a persistent storage the attributes of each position, including the GUID, the time, the latitude, the longitude, and the altitude.
  • This position data for a plurality of positions is raw data which represents the object's movements, and such raw data is preferably permanently stored in an appropriate persistent storage medium 9 such as magnetic disks, optical disks, or non- volatile RAM.
  • the raw data is transformed in accordance with the invention, as explained below, into more readily usable information accessible via API 5.
  • API 5 is the interface allowing access to the position data stored in the server to external computer applications.
  • the interface handles requests from such external computer applications via the XML- RPC protocol.
  • the server handles requests using the Perl RPC::XML::Server module.
  • Client applications may use any XML-RPC implementation, such as the Perl RPC : :XML: : Client module.
  • ADDRESS :: STREET_ADDRESS [URBANIZATION] CITY STATE
  • NONZERO_DIGIT :: ( “1”
  • BOOLEAN :: ( “0”
  • Fig. 2 is a flowchart which is useful to explain the operations performed by the server 3 in accordance with the present invention.
  • Each of the clients transmits a request which is received by the server via API 5, per step 10.
  • the server proceeds to determine which request has been received, and to respond appropriately.
  • the initial mention of an operation will specify within brackets the parameters that it utilizes.
  • Optional parameters are within square brackets.
  • a LOGIN request 12 ⁇ [LOGIN (GUID, PASSPHRASE)] ⁇ is processed.
  • This operation handles application requests based on the client's GULD and a pre-assigned PASSPHRASE.
  • the server receives, per 14, an encrypted PASSPHRASE entered by the user.
  • a PASSPHRASE which has been pre-stored in the server for that GUID is retrieved, per 16, and is compared with the received PASSPHRASE, per 18. If they do not match, then a suitable e ⁇ or message is returned (i.e. transmitted) to the device, per 20.
  • the server If they do match, then the server generates a code, called a SESSION ID, which is unique to the cu ⁇ ent session, per 22.
  • the SESSION ID is stored in the server and also returned to the client, per 24, so that it becomes known to the client for later entry, as and when subsequently needed for authenticating other client requests, as explained below.
  • OBSERVATION request 26 Another request that the server can handle is OBSERVATION request 26, the details of which are shown in Fig. 11 A.
  • the response to an OBSERVATION request processes the raw position data received from the device. It begins with authenticating the user, per 26, based on whether the SESSION ID received from the device matches the SESSION ID stored in the server. If the authentication is successful, then the server receives and stores the raw data, per 28. If it is determined, per 30, that the TCP protocol is being used for the transmission from the device, then the server returns an acknowledgement to the device, per 32. If another protocol is being used, such as UDP, then no acknowledgement is needed. Of course, if authentication 26 fails, then an appropriate e ⁇ or message is returned to the device, per 34.
  • the raw position data is stored per step 28 so that each datapoint of raw position data identifies a specific position (i.e. by its latitude, longitude and altitude at a particular instant of time), but this data is not readily usable by computer applications without considerable processing.
  • the position data is converted to location information specifying a three- dimensional region of the Earth's surface (e.g., a street intersection or a city). As will be explained below in greater detail, some position data is converted into a full street address specified by, for example, street name, house number, city, state and so on.
  • a sample entry from the table of raw position data stored in server 3 is shown in Table No. 1 of Figure 12A.
  • Hexadecimal notation base 16
  • the GUID 87F3 uniquely identifies the client which, in one example, can be device 1 carried by Object A.
  • the data entered in the "time" field is the number of seconds counted from Jan.l, 1970. Of course, other time indicators can be used as well.
  • the latitude, longitude and altitude are self-explanatory. Table 1 shows two observations for the object to which GUID 87F3 was assigned and three for the object to which GUID 5EA5 was assigned.
  • Step 36 of Fig. 11 A converts the raw position data stored in step 28 to location information, such as street addresses.
  • This process is known as reverse geocoding.
  • a prefe ⁇ ed software product to perform reverse geocoding is called SpatialFX, available from ObjectFX Corp.
  • SpatialFX available from ObjectFX Corp.
  • Several web services also perform reverse geocoding.
  • a sample entry of stored data is shown in Tables 2 A and 2B of Figure 12 A. ( Table 2 has been separated into tables 2 A and 2B of Figure 12A due to space restrictions on the typewritten page.
  • Table 2B is shown to include a repetition of fields "GUID" and "observation” only to show its link to the data in Table 2A).
  • the "observations" field is an identifier indicating the sequence of the observations.
  • Step 38 converts the addresses obtained per 36 to several inverted indices.
  • one inverted index converts a full street address to all the observed positions which step 36 had converted into such address. This is done for every address.
  • the server would need to process through all the stored position data in database 9. Similar reverse indices are made for city, postal code, state and country.
  • An address is derived by step 36 for each observed position. Likewise, an entry in the inverted index is created for each address from step 36. However, entries co ⁇ esponding only to an observation is preferably deleted after an hour.
  • Step 40 converts each street address obtained per step 36 to a street map which shows the vicinity of the street address. This is accomplished using a product such as MapPoint, from Microsoft, Inc. Street maps for all key locations (e.g. those assigned a Location LD by the server, as explained below) are kept permanently. Street maps for non-key locations are preferably deleted after an hour to conserve space in the memory. This information is stored in the "streetmap" field of Table 2B in Figure 12A. It constitutes a path to where such map is stored in the database, which enables computer applications to efficiently generate a street map of an object's location.
  • MapPoint MapPoint
  • Such a street map can have numerous uses. For example, a user may attach device 1 to his dog. If the user wishes to know where his dog is, the invention can generate (as explained below) a street map showing where to find the dog. For another example, if the device 1 is attached to the user, he can give someone else directions to wherever he cu ⁇ ently is located by using the invention to generate a street map that the user can then send electronically to the other person.
  • Step 40 also converts the raw position data stored per step 28 to satellite maps. This is accomplished using a product such as EarthViewer, from Keyhole, Inc. This information is stored in the "satmap" field of Table 2B in Figure 12A. It constitutes a path to where such map is stored, which enables computer applications to efficiently generate a satellite map of an object's location. For example, if the user wants to get a "bird's eye” sense of what the area of interest looks like, the invention could be used to generate a satellite map. Street maps can provide two-dimensional assistance on where to turn left and right, but satellite maps are three-dimensional and show far more detail on, for example, what the area of interest looks like, and what the buildings around it look like, and how wide the streets are.
  • Street maps can provide two-dimensional assistance on where to turn left and right, but satellite maps are three-dimensional and show far more detail on, for example, what the area of interest looks like, and what the buildings around it look like, and how wide the streets are.
  • the invention can also generate an "animated" street map, te ⁇ ain map and/or satellite map, which is a video that shows motion of the object by superimposing the object's motion on, respectively, a street, te ⁇ ain and/or satellite, map.
  • Step 40 also converts the raw position data stored per step 28 to te ⁇ ain maps. This is accomplished using a product such as MapServer, from Maptech, Inc. This information is stored in the "te ⁇ ainmap" field of Table 2B in Figure 12 A. It constitutes a path to where such map is stored, which enables computer applications to efficiently generate a te ⁇ ain map of an object's location.
  • Step 42 converts the raw position data stored in step 28 to clustered positions. Because every location technology has some inherent inaccuracy, including GPS, position measurements will often fluctuate around the object's true position. Furthermore, a meaningful location (such as a street address) is often not a sharply defined boundary. To remedy these problems, and to determine important areas, nearby positions are grouped together and treated, respectively, as a single geographic location.
  • clustering The technique of identifying positions that deserve to be grouped together is called clustering, and the present invention accomplishes this using an ISODATA clustering algorithm.
  • This algorithm is disclosed in Therrien, C.W. "Decision, Estimation and Classification", John Wiley & Sons, 1999, and the explanation of this algorithm which is contained therein is hereby incorporated by reference.
  • the result is a table (discussed in detail below) in the database that enables applications to efficiently determine the frequently- visited locations of an object.
  • Table No. 3 of Figure 12B A sample entry obtained by clustering is shown in Table No. 3 of Figure 12B. (Table No. 3 has been separated into tables 3 A and 3B of Figure 12B due to space restrictions on the typewritten page.
  • Table 3B is shown to include a repetition of the fields "GUID” and "Location ID” only to show its link to the data in Table 3A).
  • a Location ID is assigned by the server to the following regions: cluster, street address, city, postal code, state, country, and any position specifically designated by a client (along with an assigned radius).
  • Pre-processing and post-processing steps for ISODATA are required to take into account the fact that the Earth is approximately spherical. Every degree of latitude is the same distance, but not so for longitude. The geographic distance of one degree of longitude is greater at the equator than at the poles. For instance, at the North Pole, one can move through 360° of longitude just by pivoting, while at the equator one must travel around the circumference of the Earth to cover 360° of longitude. Without the pre- and post-processing steps, the results would be far less accurate, especially if motion of the object covered large north-south distances.
  • the pre-processing step is applied to "warp" latitude and longitude to the Universal Transverse Mercator coordinate system (which doesn't suffer from this nonlinearity caused by longitude) and use that as input to ISODATA.
  • the post-processing step is to uiiwarp, i.e. to convert the Universal Transverse Mercator positions back into latitude and longitude.
  • the conversions between lat/long and Universal Transverse Mercator are straightforward. Information on how to do this is available at ht ://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM, which has printed references at the end of the page.
  • ISODATA processes the position data for a (potentially large) number of positions, and partitions them into clusters. The result is a set of points (from which a convex hull is computed as explained below) and a centroid. As is evident from Fig. 11 A, clustering is performed for each new datapoint. However, if this creates a high processing load, then the clustering algorithm is performed only at selected time intervals, such as every hour. As has just been explained, clustering step 42 determines the positions grouped into a cluster. The convex hull algorithm 44 then determines the minimum number of points to define the location of that cluster.
  • step 44 determines a boundary from the raw position data stored in step 28 for the positions partitioned into one cluster, so that all of the positions are within or on the boundary.
  • An intuitive explanation of a convex hull algorithm can be provided as follows. If a large number of nails were hammered into a board at random, and then a rubber band were stretched around all of the nails, some nails will be inside the rubber band, and others will be touching the rubber band.
  • convex hull is a minimal convex subset containing a set of objects.
  • Fig. 11B shows the convex hull as black circles, and the white circles indicate positions inside the convex hull.
  • a convex hull is preferably generated with the Perl subroutine described in Orwant et al., "Mastering Algorithms with Perl", O'Reilly & Associates, 1999, p. 454, which is hereby incorporated by reference, with the modification that once a convex hull has been stored for an object, it can be iteratively expanded or contracted as each new datapoint arrives. As is evident from Fig. 11 A, convex hull is performed for every new datapoint. However, if this creates a high processing load, then the convex hull algorithm is performed only at selected time intervals, such as every hour.
  • the datapoints defining the convex hull are stored as ordered pairs (i.e. latitude and longitude) in the "points" field in Table No. 3 A depicted in Figure 12B. If, for example, the cluster identified by the hexadecimal CB018 in the Location ID field has a convex hull which requires 15 "nails” to define the shape of the "rubber band", the "#points" field would have the number 15 in it, and the "points” field would have 15 ordered pairs corresponding, respectively, to these "nails”. As a specific illustrative example, Table 3 A lists the hexadecimal CB018 as the Location ID for an object having 87F3 as its GULD.
  • This cluster's centroid is determined to be at a latitude of 42.44680396, longitude of -71.22544954, and altitude of 14.10348.
  • the convex hull algorithm has determined that this cluster's shape is a circle (which is evident from the entry of "1" in the "#points” field indicating that only one point, namely the centroid, plus the mean-radius of 5.1066, are required to defineits shape), hi contrast, Location LD CB9A4 needs 3 positions (or points) to specify the shape of its convex hull, and the ordered pairs for these are found in the "points" field.
  • Convex hulls are specifically designed for this purpose. Of course, it is also possible to represent a cluster as a region enclosed/defined by an imaginary line that might not co ⁇ espond to actual locations visited by the object.
  • LOGOUT request 46 ⁇ logout(SESSION) ⁇ . This is a request to terminate a session. As shown in Fig. 4, after authentication step 48 is successful, the stored SESSION ID is deleted from database 9, per 50, and a suitable success message is returned to the device, per 52. When the server receives a LOGOUT request for a session, it invalidates the client's SESSION LD, prohibiting other invocations thereof until the client logs in again.
  • Server 3 can also handle a LOCATION request 54 ⁇ location(SESSION, OBJECT, LOCATION_TYPE, [TIME], [INTERPOLATION]) ⁇ .
  • This operation handles application requests to determine the location of an object via the "location" method.
  • the client provides a SESSION JD for authentication, specifies the object to be located, and designates a location type to specify a desired output format. Additionally, the client may also specify a desired time of the location observation, and a Boolean interpolation bit indicating whether the system should estimate the location of the object in an attempt to match the time as precisely as possible.
  • step 58 checks whether the user is requesting the location at a specified time.
  • step 60 checks whether the position data has the exact time. If so, then step 62 is performed (see below). If not, then step 64 checks whether interpolation is permitted. Ifso, then step 66 calculates the position interpolated between the two stored times in the database. If interpolation is OFF, then step 68 selects whichever the position data for whichever time is stored that is closest to the specified time.
  • step 70 retrieves the position data for the last known position. If interpolation is ON, per 72, then step 74 extrapolates the position to the current time. If interpolation is OFF, per 72, then the last known position data is simply used as is.
  • step 62 will determine whether the user wants this information in the form of raw position data. If so, that data is provided by step 76, and the flow then returns to the initial stage of request determination, as shown in Fig. 2. If not, then step 78 determines whether the location type is a street address. If so, then step 80 determines whether that street address is in the inverse index of street addresses obtained per step 38. Ifso, then step 82 provides that address to the user. If not, then the reverse geocoding process is run, per 84, the information is stored in the index for future availability, per 86, and returned to the user, per 82.
  • co ⁇ espondence applies to 98, 100, 102, 104, 106 for city, 108, 110, 112, 114, 116 for state, and 118, 120, 122, 124 and 126 for country.
  • step 130 determines whether the specified position is in an existing cluster. If so, the convex hull is returned, per 132. If not, then clustering is performed per 134, the convex hull algorithm is performed, per 136, and the result returned to the client, per 132.
  • Another request handled by the server is DISTANCE request 140 ⁇ distance(SESSION, OBJECT, OBJECT) ⁇ .
  • the server handles application requests to determine the distance between two objects.
  • the client provides a SESSION ID and two objects. The result is calculated by determining the decimal latitude and longitude of each object using the appropriate steps, and then computing the spherical distance (i.e. approximately the distance along the surface of the Earth) between the centroids of those locations.
  • steps 142 and 144 retrieve from the database the respective GUIDs for the specified objects.
  • Step 146 determines the last known position of the first object, and step 148 does likewise for the second object.
  • Step 150 then computes the spherical distance therebetween. The result of the computation is transmitted to the client, per 152.
  • HISTORY request 154 history(SESSION, OBJECT, LOCATION YPE, [TLME_STEP], [INTERPOLATION],
  • the server handles HISTORY requests to determine the movement history of an object.
  • the client provides a SESSION LD, an object, a location type and, optionally, a time step, an interpolation bit, a start time, and an end time.
  • the server returns observations with a fixed period, e.g., locations on the hour. If the interpolation bit is set, estimates are used to determine the position at the given times. Otherwise, the closest actual observation is used. The result is returned as a series of timestamped observations. The observations begin at the start time if provided, and the first observation if not. The observations end at the end time if provided, and the last observation if not.
  • step 156 determines the object's GUTD. Then step 160 (see FIG. 7B) checks whether the client request specifies a start time. If not, then step 162 uses the first observation recorded for that object. Either way, step 164 then checks whether an end time has been provided. If not, then step 166 uses the last observation recorded for that object. So, at the end of steps 160-166, the start and end times needed for processing this HISTORY operation are known.
  • step 170 checks whether the client request specifies a time step. If so, and if interpolation is ON, per step 172 (i.e. an interpolation bit has been provided), then step 174 interpolates between times that bracket time step. For example, if the time step is 5 minutes. However, if no position was detected at a 5 minute interval, but there is one at 4 mins. 32 sees, and another at 7 mins. 15 sees., step 174 will provide interpolated position data for the 5 min. interval using the data for such two positions. On the other hand, if interpolation is OFF, step 176 will select the position data obtained at 4 mins. 32 sees. Because that is closest to the time of the 5 min. interval.
  • Function 158 shown in FIG. 7A represents all the steps shown in FIG. 7B. Likewise, all the steps shown in FIG. 7C are represented by function 168 of FIG. 7B. At the conclusion of functions 158 and 168, a datapoint for a particular position is known from step 174 or 176, and is available for further processing in accordance with the HISTORY operation.
  • step 62 that known portion is inputted to step 62 in FIG. 5 A. So, if the client request is for the movement to be provided as street addresses, that address will be determined by step 78, and the street address co ⁇ esponding to the above- mentioned known position (i.e. from step 174 or 176) will be returned to the client by step 82.
  • MAP request 178 Another request handled by server 3 is MAP request 178 ⁇ map(SESSION, OBJECT, MAP_TYPE, PLOT TYPE, [START_TIME], [END_TLME],
  • the server handles this request by generating a map of an object's location.
  • the client provides a SESSION ID, an object, a map type, a plot type and, optionally, a start time, an end time, and an interpolation bit.
  • the server retrieves a map from the database if available from Table 2B, and otherwise generates one.
  • the map type may be any one of "street”, “te ⁇ ain”, or “satellite” types.
  • the plot type is any one of "point”, “trail”, or “vector”, and it sets how the object's path is plotted in the generated map. If a start time is provided, locations of the object are used beginning at that time and, otherwise, the first observation recorded by the system. If an end time is provided, locations of the object are used ending at that time and, otherwise, the last observation recorded by the system. If the interpolation bit is set, the system fills in data between actual observations using a conventional interpolation algorithm. The map image is then returned to the client.
  • the steps of above-described function 158 determine the start time and end time, as explained above. Then, the steps of above-described function 168 determine an observed position to process, as explained above.
  • map services such as the above-mentioned MapPoint
  • MapPoint MapPoint
  • the present invention computes the bounding box from the convex hull of a location by looping through all of the points in the hull, and calculating the minimum latitude, maximum latitude, minimum longitude, and maximum longitude.
  • the bounding box is then a rectangle with its upper left corner at a point with minimum latitude and minimum longitude, and its lower right corner at a point with maximum latitude and maximum longitude, hi FIG. 11B, the corner brackets indicate the bounding box relative to the convex hull.
  • Step 182 of FIG. 8 A computes the bounding box in accordance with the algorithm described above.
  • the MAP operation 178 proceeds to perform what is represented in FIG. 8A as function 184, the details of which are presented in FIG. 8B.
  • the server maintains three queues of URIs (Uniform Resource Identifiers) for mapping services (one for street maps, one for te ⁇ ain maps, and one for satellite maps). Each queue is a ⁇ anged in order of observed reliability over the lifetime of the system (i.e. empirically, from the success or failure of previous attempts to use the mapping services). These queues are maintained in the event that one or more mapping services are unavailable. Thus, if one mapping service fails to respond, the server accesses the queue to select the next mapping service.
  • URIs Uniform Resource Identifiers
  • Step 186 determines whether the map type specified in the client request is a te ⁇ ain map. If so, then step 188 proceeds to extract the first URI from the te ⁇ ain queue, and the map is retrieved, per 190. If the retrieval is successful, per 192, then the information is overlayed on the requested plot type. Which plot type is to be used is determined per steps 216, 220 and 224, and then the appropriate one from among steps 218, 222 and 226 performs the map overlay. If the map retrieval is not successful, per step 192, then step 194 moves to the next URI in the queue and loops once again through steps 190 and 192.
  • Steps 196, 198, 200, 202 and 204 are performed for a satellite map, and they respectively co ⁇ espond to above-described steps 186, 188, 190, 192 and 194.
  • steps 206, 208, 210, 212 and 214 for a street map respectively co ⁇ espond to above-described steps 186, 188, 190, 192 and 194.
  • URI extraction steps 188, 198 and 208 use a utility for extracting a map from the service named by the URI.
  • One such utility is the Perl WWW: Mechanize module, available from http://search.cpan.org.
  • the system uses the utility to retrieve a map with the bounding box computed in step 182, and the map is returned to the client per 185.
  • ANIMATION request 230 animation(SESSION, OBJECT, MAP TYPE, PLOT TYPE, DURATION, FRAME_RATE, [STREAM], [START_TLME], [END_TIME]) ⁇ .
  • This method handles application requests to generate an animation of the object's motion.
  • the client provides a SESSION ID, an object, a map type, a plot type, a duration, a frame rate, and optionally a stream bit, a start time, and an end time.
  • the first four parameters are as discussed in previous steps.
  • the duration is the length of time that animation should last.
  • the frame rate is the number of frames per second.
  • the stream bit is a Boolean indicating whether the client wants to download the entire animation or receive it frame by frame as it is generated.
  • the start time is the time of the first observation of the object.
  • the end time is the time of the last observation of the object.
  • the server determines a set of representative observations via bilinear interpolation, generates a map for each such observation, combines the sequence of maps into an animation, streaming the result to the client if the stream bit is set, and sending the entire animation otherwise.
  • Step 232 authentication and conversion to a GUID are first performed per step 232. Then, above-described function 158 is performed to detennine the start and end times. Step 234 determines whether a frame rate is included in the client request.
  • this parameter is set to 1 frame per second.
  • the frame rate from 234 (if one is specified) or 236 (if one is not specified) is inputted to step 238 which determines the times at which observations are required for a smooth animation. This is done by dividing the value of the specified frame rate parameter (or 1 if the frame rate parameter was not specified) into the value of the DURATION parameter (or, if
  • DURATION is omitted, the value of the end time parameter minus the value of the start time parameter, with end time defaulting to the last recorded observation, and start time default to the first recorded observation).
  • DURATION refers to the desired length of time for the animation sequence.
  • the result of this step is a sequence of equally-distributed times at which the position of the object should be appear in the animation.
  • Step 240 performs the necessary interpolation, and step 242 computes a bounding box for each pair of positions. Then, the derived information is used by above-described function 184 (see FIG. 8B) to create a map in the requested map type using the requested plot type.
  • Step 244 determines whether processing of the ANIMATION operation has reached the last pair of positions. If not, then processing of this operation repeatedly loops through function 184 until the last pair of positions is reached. It should be understood that at this stage, all the maps that were derived by looping through function 184 are individually stored locally at the server. Step 246 uses a utility to convert all those maps to a GIF image format.
  • One such utility is pbmplus, available at http ://www. acme, com/software/pbmplus/.
  • step 248 uses a utility to combine the resulting GIF images into an animated gif with the frame rate specified in the frame rate parameter.
  • a utility is MultiGIF, available from http://www.kfs.org/ ⁇ abw/code/multigif.html.
  • the result is the map animation, which is then transmitted back to the client.
  • the animation is returned to the client as files or a stream, based on steps 250, 252 and 254.
  • the streaming can be accomplished using any conventional Internet video streaming technology, such as that provided by Quicktime (Apple, h e; http://developer.apple.com/quicktime) or RealVideo (RealNetworks, Inc.; http://www.real.com).
  • the final request shown on FIG. 2 is PROXIMITY 256 request ⁇ proximity(SESSION, OBJECT, OBJECT, SORT_METHOD, [START_TLME], [END_TIME], [TLME_STEP], [INTERPOLATION]) ⁇ .
  • This method handles application requests to generate a listing of distances between two objects.
  • the client provides a SESSION LD, two objects, and an ordering of data which specifies distance or time, either forwards or backwards.
  • the client may provide an optional start time, end time, time step, or interpolation bit, interpreted as in previous steps.
  • the two objects are converted to their respective GUIDs by steps 270 and 272.
  • Function 158 determines the start time and end time.
  • Function 168a having the same functions as above-described function 168, provides positions for the first object. Similarly, function 168b provides positions for the other object. Each step for this operation will have one position for the first object and one position for the second object. Step 274 computes the spherical distance between those positions of the two objects. This is then done for each time step. If the two objects are stationary, then the distance between them obviously will remain the same. If one object is moving and the other is stationary, the distance between the objects depends only on the moving object's motion. If both objects are moving, then the distance will vary in accordance with their combined motion.
  • the distance between the objects can be shown as a function of time in chronological order, or in reverse chronological order. Also, the result can be shown in terms of magnitude of the distance between the objects, with the distance being shown in ascending order, or in descending order. If the client request does not co ⁇ espond to any of theses sort methods, then an e ⁇ or message is returned, per step 290.
  • Steps 276-279 determine which sort method has been included in the client request. Steps 280-283 respectively perform the requested sort method, and steps 284-287 return the requested information to the client.
  • the present invention may be implemented either in hardware or software, or a combination of both.
  • the ISODATA algorithm is one of several techniques for defining a location. Other techniques are possible, such as fuzzy clustering, hierarchical clustering, and Kohonen's self-organizing maps.
  • GPRS such as HSCSD and the 802.11 protocol family.
  • the maps in GIF format can be converted into a GIF89a animation by scripting a software product such as Ulead, available from http ://www.ulead. com.
  • GPS as a location technology, such as Cell ID, Bluetooth, or RFID.

Abstract

A method and apparatus for taking, transmitting, storing, processing, distributing and using data indicative of the position of a mobile object on the Earth’s surface. More specially, the latitude, longitude and altitude for the current position of a mobile object is measured, and the data for that position is periodically transmitted along with ancillary information to a central base station for persistant storage of the data in a server. Such stored data is thus available on past and current positions of the mobile object for use by various computer applications to derive information about the object’s movements.

Description

TECHNIQUE FOR COLLECTING AND USING INFORMATION ABOUT THE GEOGRAPHIC POSITION OF A MOBILE OBJECT ON THE EARTH'S SURFACE.
FIELD OF THE INVENTION
The present invention relates generally to a method and apparatus for taking, transmitting, storing, processing, distributing and using data indicative of the position of a mobile object on the Earth's surface. More specifically, it relates to a technique for taking, or obtaining, the cuπent latitude, longitude and altitude of a mobile object and periodically transmitting that data and ancillary information to a central base station for persistent storage of the data in a server, where an Application Programmers' Interface makes information available on past and present positions of the object for use by various computer applications.
BACKGROUND OF THE INVENTION
Tracking the position of a mobile object (e.g., people, cars, pets) on the Earth's surface at any given time is desirable for any one of numerous, well-known reasons. A number of techniques have been developed to satisfy this need. Perhaps two of the best known techniques involve the global positioning system (GPS) and mobile telephones that are part of a cellular telecommunications network. GPS uses transmitters carried by orbiting satellites. A receiver mounted on the object being tracked polls the signals transmitted by the satellite to calculate its distance from that satellite. The receiver applies triangulation by detecting signals from three or more GPS satellites to determine its latitude and longitude on the Earth's surface, or from four or more GPS satellites to determine its latitude, longitude and altitude. In a cellular telecommunications network, the entire service area covered by the network is divided into a plurality of coverage areas called "cells". The approximate position of a mobile telephone is known because the "cell" in which it is located is known. Moreover, various techniques have been developed to obtain a more precise measurement by determining the object's position within the cell.
A feature common to these known tracking techniques is that the information of interest is the object's cuπent position. After the current position is determined and immediate use is made of that information, further need for it no longer exists. Consequently, the position data is not stored for a substantial period of time (i.e. no persistent storage of the data). Also, the position of the object is of interest at one particular time, but the next time that the object's position may be needed is typically quite a while later. Thus, data on where the object is located is not collected at closely spaced time intervals, nor is such sequentially collected position data stored. Consequently, although tracking an object to determine its present position to serve some useful function is well known, the prior art approaches are of limited value when information is required which is based on a history of the object's positions over a substantial period of time. The prior art does not collect (i.e. take and store) such history of object position data collected at closely spaced time intervals nor does it process such position data in order to facilitate the use of the stored data by programmers for various computer applications.
SUMMARY OF THE INVENTION One aim of the present invention is to obtain data about the position of a mobile object on the Earth's surface and to store such position data for a substantial period of time (i.e. persistent storage of the position data).
Another aim of the present invention is to automatically obtain, at closely spaced time intervals, a history of position data for where the object has been, and to store all such position data.
A further aim of the present invention is to process such position data taken at closely spaced time intervals in order to facilitate the task of using the stored data to provide requested information.
One other aim of the present invention is to provide a new method and apparatus for obtaining, transmitting, storing, processing, distributing and using the position data.
Still another aim of the present invention is to enable a faster, more reliable, more extensible, and more secure method of providing information about an object's whereabouts and motion history. These and other aims are attained in accordance with one aspect of the present invention directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface. Position data related to each of the plurality of positions is obtained, and the position data for the plurality of positions is stored in a persistent database for selective retrieval therefrom upon request to provide information about movement of the mobile object.
Another aspect of the present invention is directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface. Position data related to each of the plurality of positions is collected in a persistent database. Responsive to a request related to a specified time and/or position, information is provided about movement of the mobile object coπesponding to the specified time and/or position by accessing the position data for the plurality of positions stored in the persistent database.
Yet another aspect of the present invention is directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface by obtaining position data related to each of the plurality of positions. The position data for the plurality of positions is partitioned into a plurality of clusters of related positions that are accessible to provide information in response to a request.
Still another aspect of the present invention is directed to a technique for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface by obtaining position data related to each of the plurality of positions and deriving, based on the position data, an individual map for each of a plurality of the positions. Animating the movement of the mobile object is achieved by combining a plurality of said individual maps.
BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 shows a schematic block diagram of components aπanged for implementing the invention. Fig. 2 depicts a flowchart illustrating operations performed by the server in accordance with the present invention.
Fig. 3 provides details of the LOGIN operation shown in Fig. 2.
Fig. 4 provides details of the LOGOUT operation shown in Fig. 2.
Figs. 5 A - 5C provide details of the LOCATION operation shown in Fig. 2.
Fig. 6 provides details of the DISTANCE operation shown in Fig. 2.
Figs. 7A - 7C provide details of the HISTORY operation shown in Fig. 2.
Figs. 8 A - 8B provide details of the MAP operation shown in Fig. 2.
Fig. 9 provides details of the ANIMATION operation shown in Fig. 2.
Fig. 10 provides details of the PROXIMITY operation shown in Fig. 2.
Fig. 11 A provides details of the OBSERVATION operation shown in Fig. 2.
Fig. 1 IB shows a convex hull and a bounding box.
Figs. 12A and 12B show Tables 1 to 3B of information stored in the server and derived from location data related to motion of a mobile object on the Earth's surface.
DETAILED DESCRIPTION OF THE DRAWINGS
Terms used in the explanation of the invention as presented herein are defined as follows:
Position: A three-dimensional geographic spot relative to the Earth's surface having a coπesponding datapoint, which is a set of latitude/longitude/altitude data. Observations: a sequential numbering of the positions obtained for a particular portable device attached to an object.
Location: a region of positions (which might be a single position, a cluster, a street address, a city, a convex hull, etc.)
The present invention is organized in a server-client configuration. Clients can be either hardware or software, and can provide data about an object's location, request information about an object's location, or both. The server stores the location data for multiple objects simultaneously, and processes that data into information readily usable by computer applications from clients that request information from the server.
Fig. 1 shows one implementation of the invention using GPS technology. It should be understood that the invention is not restricted to GPS technology, and this particular arrangement is merely illustrative. The server 3 is aπanged to operate with one type of client, namely portable device 1 on Object A and portable device 2 on ObjectB, as well as with another type of client, namely computer applications APP1 and APP2. The first type of client provides data to server 3 via API 5 about an object's position, as explained below. The second type of client requests information about the object's position from server 3 through API 5, as also explained below.
It should be understood that the number of clients, such as mobile objects, usable with this invention is a matter of design choice. The fact that just two objects are shown is done only for the sake of clarity in describing the invention while making the point that use of a plurality of objects is possible. In the ensuing description, only one object and its associated portable device will be discussed in detail, but it should be appreciated that such discussion applies to all objects and their associated portable devices. Likewise, it should be readily understood that the number of other types of clients, such as computer applications, usable with this invention is also a matter of design choice, and that only two are shown is done for the sake of clarity in describing the invention while making the point that a plurality of such applications is possible. Turning now to Fig. 1, it shows an object (including, but not limited to, people, cars, and pets) that carries or encloses a position-gathering portable device (the "client"). The portable device (refeπed to below as "device") can be placed, for example, inside a car or piece of luggage, or attached to a bicycle, or carried on one's person. The device includes well known circuitry (not shown) to poll signals from a plurality of GPS satellites 7 and to determine therefrom the position of the device on the Earth's surface (which, of course, includes multi-story buildings, tall tress, and the like) and, by inference, the object's position as well. The position data generated by the device identifies the object's specific position (i.e., by latitude, longitude and altitude) at a particular instant of time. The time data used in the invention (as detailed below) is generated by the device based on time information which is continuously transmitted by GPS satellites (and cell towers). The device also includes control circuitry (not shown) to automatically trigger at a preselected time interval the sequence of steps for detecting the GPS signals and for determining the object's position. Such preselected time interval is also a matter of design choice which trades off the resolution of the object's position as a function of time against the required data storage and battery life. The control circuitry can be designed to transmit the position data immediately to the server 3, or to store the position data for a predetermined number of positions and then to transmit the data for all such positions as part of a batch transmission. In the prefeπed embodiment, the device transmits a batch message over the air at periodic intervals to the server 3 which is equipped with a suitable database 9. The message is a digital encoding of a series of positions.
In a prefeπed embodiment, the portable device is a Nextel i88s or i95s mobile phone in which the above-mentioned control circuit runs a software program implemented in the J2ME programming environment. This program polls the GPS satellites to determine the cuπent position data by calculating the cuπent latitude, longitude and altitude of the object, and stores the position data locally (i.e. in the phone's memory). In accordance with the program, the device periodically relays the position data and the device's globally unique identifier ("GUID"), which was pre-stored therein, to a remote server via a communications network 6. After the position data has been sent (and if the TCP protocol is used, for example, after the server has acknowledged its receipt), the locally stored position data is deleted, and these steps are repeated. In addition, it determines the value of several other parameters, including the accuracy of the position calculation, the speed and heading of the object, and the number of GPS satellites "in view" at the time of the poll. A list of the stored parameters is as follows:
GUID latitude longitude time of cuπent observation latitude/longitude accuracy last observation time last latitude last longitude cell latitude cell longitude speed speed uncertainty heading altitude altitude uncertainty number of satellites whether assisted GPS was used.
For purposes of this invention, a discussion involving only use of the GULD, time, latitude, longitude and altitude parameters is necessary. Therefore, no details of the other parameters is deemed necessary.
The program stores the cuπent position data in the phone's memory, and periodically compresses (using a run-length-encoding algorithm) and then transmits the data to the server via communications network 6 using GPRS (Generalized Packet Radio Service - details of which are available at http://www.Rsmworld.com). The J2ME program provides menus that allow the user (i.e. the owner of the device) to control the frequency of GPS polls and how often they are relayed to the server, and whether the protocol is UDP or TCP.
The server 3 is a computer running the Linux operating system and a MySQL database engine 9 (available for free at http://www.mvsql.com) which records in a persistent storage the attributes of each position, including the GUID, the time, the latitude, the longitude, and the altitude. This position data for a plurality of positions is raw data which represents the object's movements, and such raw data is preferably permanently stored in an appropriate persistent storage medium 9 such as magnetic disks, optical disks, or non- volatile RAM. The raw data is transformed in accordance with the invention, as explained below, into more readily usable information accessible via API 5.
An explanation of API 5 will now be provided. The API is the interface allowing access to the position data stored in the server to external computer applications. The interface handles requests from such external computer applications via the XML- RPC protocol. The server handles requests using the Perl RPC::XML::Server module. Client applications may use any XML-RPC implementation, such as the Perl RPC : :XML: : Client module.
The parameters are defined using the following definitions, in extended Backus-Naur form which is described in the book "Compilers: Principles, Techniques, and Tools", by Alfred V. Alio, Ravi Sethi, and Jeffrey D. Ullman, Addison Wesley, 1986. Vertical bars separate alternatives, asterisks mean "zero or more times", and plus signs mean "one or more times".
OBJECT ::= ( GUTD | LOCATION | HULL )
LOCATION IYPE ::= ( "street address" | "street" | "postal code" | "city" | "state" | "country" | "cluster" | "mark" | "position" ) MAP_TYPE ::= ( "street" | "teπain" | "satellite" )
PLOT TYPE ::= ( "point" | "trail" | "stipple" | "vector" )
GULO ::= HEXDIGIT+
SESSION ::= HEXDIGIT+ LOCATION ::= ( COUNTRY | STATE | POSTAL_CODE | CITY | ADDRESS )
ADDRESS ::= STREET_ADDRESS [URBANIZATION] CITY STATE
[POSTAL_CODE] COUNTRY
STREET_ADDRESS : := NAME HULL : ~ POSITION+
POSITION ::- LATITUDE LONGITUDE ALTITUDE
LATITUDE ::= [ "-" ] NONZERO_DIGIT [DIGIT] [DIGIT] [ "." DIGIT* ]
LONGITUDE ::= [ "-" ] NONZERO_DIGIT [DIGIT] [DIGIT] [ "." DIGIT* ]
ALTITUDE ::= [ "-" ] DIGIT* [ "." DIGIT* ] INTERPOLATION : := BOOLEAN
STREAM ::= BOOLEAN
SORT_METHOD ::= ( "chronological" | "reverse_chronological" | "ascending" |
"descending" )
START TIME ::= TIME END_TLME ::= TIME
DURATION ::= TIME
TIME ::= NONZERO_DIGIT DIGIT*
TIME_STEP ::= NONZERO_DIGIT DIGIT*
FRAME_RATE ::= NONZERO_DIGIT DIGIT* COUNTRY :- NAME
STATE : - NAME
POSTAL_CODE ::= NAME
CITY ::= NAME
PASSPHRASE : := NAME NAME : := ( LETTER | DIGIT | " " )+
IDENTIFIER ::= ( LETTER | DIGIT )+
HEXDIGIT ::= ( DIGIT | "A" | "B" | "C" | "D" | "E" | "F" )
LETTER ::= ( "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" |
"N" I "O" I "P" I "Q" I "R" I "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" I "c" I "d" I "e" I "f ' | "g" | "h" | "i" | "j" | "k" | "1" | "m" | "n" | "o" | "p" | "q" | "r" | "s" |
"t" I "u" I "v" I "w" I "x" I "y" | "z" )
DIGIT ::= ( "0" | NONZERO_DIGIT )
NONZERO_DIGIT ::= ( "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ) BOOLEAN ::= ( "0" | "1" )
Fig. 2 is a flowchart which is useful to explain the operations performed by the server 3 in accordance with the present invention. Each of the clients transmits a request which is received by the server via API 5, per step 10. The server proceeds to determine which request has been received, and to respond appropriately. In the following discussion, the initial mention of an operation will specify within brackets the parameters that it utilizes. Optional parameters are within square brackets.
In order for a client to communicate with server 3, a LOGIN request 12 {[LOGIN (GUID, PASSPHRASE)] } is processed. This operation handles application requests based on the client's GULD and a pre-assigned PASSPHRASE. As shown in Fig. 3, the server receives, per 14, an encrypted PASSPHRASE entered by the user. A PASSPHRASE which has been pre-stored in the server for that GUID is retrieved, per 16, and is compared with the received PASSPHRASE, per 18. If they do not match, then a suitable eπor message is returned (i.e. transmitted) to the device, per 20. If they do match, then the server generates a code, called a SESSION ID, which is unique to the cuπent session, per 22. The SESSION ID is stored in the server and also returned to the client, per 24, so that it becomes known to the client for later entry, as and when subsequently needed for authenticating other client requests, as explained below.
Another request that the server can handle is OBSERVATION request 26, the details of which are shown in Fig. 11 A. The response to an OBSERVATION request processes the raw position data received from the device. It begins with authenticating the user, per 26, based on whether the SESSION ID received from the device matches the SESSION ID stored in the server. If the authentication is successful, then the server receives and stores the raw data, per 28. If it is determined, per 30, that the TCP protocol is being used for the transmission from the device, then the server returns an acknowledgement to the device, per 32. If another protocol is being used, such as UDP, then no acknowledgement is needed. Of course, if authentication 26 fails, then an appropriate eπor message is returned to the device, per 34. The raw position data, as explained above, is stored per step 28 so that each datapoint of raw position data identifies a specific position (i.e. by its latitude, longitude and altitude at a particular instant of time), but this data is not readily usable by computer applications without considerable processing. In order to be in a more readily usable form, the position data is converted to location information specifying a three- dimensional region of the Earth's surface (e.g., a street intersection or a city). As will be explained below in greater detail, some position data is converted into a full street address specified by, for example, street name, house number, city, state and so on.
A sample entry from the table of raw position data stored in server 3 (actually in database 9) is shown in Table No. 1 of Figure 12A. Hexadecimal notation (base 16) is used except in the time, latitude, longitude and altitude fields. The GUID 87F3 uniquely identifies the client which, in one example, can be device 1 carried by Object A. The data entered in the "time" field is the number of seconds counted from Jan.l, 1970. Of course, other time indicators can be used as well. The latitude, longitude and altitude are self-explanatory. Table 1 shows two observations for the object to which GUID 87F3 was assigned and three for the object to which GUID 5EA5 was assigned.
Step 36 of Fig. 11 A converts the raw position data stored in step 28 to location information, such as street addresses. This process is known as reverse geocoding. A prefeπed software product to perform reverse geocoding is called SpatialFX, available from ObjectFX Corp. Several web services also perform reverse geocoding. A sample entry of stored data is shown in Tables 2 A and 2B of Figure 12 A. ( Table 2 has been separated into tables 2 A and 2B of Figure 12A due to space restrictions on the typewritten page. Table 2B is shown to include a repetition of fields "GUID" and "observation" only to show its link to the data in Table 2A). The "observations" field is an identifier indicating the sequence of the observations. It could be deduced from the time field, but explicitly including it in the table makes certain common calculations easier, e.g., a request by the user such as "show me the last 100 positions of my car." The other fields in Table 2A are self-explanatory from the field headings. The fields in Table 2B are discussed in detail below. The result is a table in the database that enables computer applications to efficiently query the location of an object and have it returned as the closest street address, as explained below.
Step 38 converts the addresses obtained per 36 to several inverted indices. For example, one inverted index converts a full street address to all the observed positions which step 36 had converted into such address. This is done for every address. Thus, if a user wants to know "when was the last time I was at [address]?" the answer can be quickly and efficiently produced from the inverted index. Without the inverted index, the server would need to process through all the stored position data in database 9. Similar reverse indices are made for city, postal code, state and country.
An address is derived by step 36 for each observed position. Likewise, an entry in the inverted index is created for each address from step 36. However, entries coπesponding only to an observation is preferably deleted after an hour.
Step 40 converts each street address obtained per step 36 to a street map which shows the vicinity of the street address. This is accomplished using a product such as MapPoint, from Microsoft, Inc. Street maps for all key locations (e.g. those assigned a Location LD by the server, as explained below) are kept permanently. Street maps for non-key locations are preferably deleted after an hour to conserve space in the memory. This information is stored in the "streetmap" field of Table 2B in Figure 12A. It constitutes a path to where such map is stored in the database, which enables computer applications to efficiently generate a street map of an object's location.
Such a street map can have numerous uses. For example, a user may attach device 1 to his dog. If the user wishes to know where his dog is, the invention can generate (as explained below) a street map showing where to find the dog. For another example, if the device 1 is attached to the user, he can give someone else directions to wherever he cuπently is located by using the invention to generate a street map that the user can then send electronically to the other person.
Step 40 also converts the raw position data stored per step 28 to satellite maps. This is accomplished using a product such as EarthViewer, from Keyhole, Inc. This information is stored in the "satmap" field of Table 2B in Figure 12A. It constitutes a path to where such map is stored, which enables computer applications to efficiently generate a satellite map of an object's location. For example, if the user wants to get a "bird's eye" sense of what the area of interest looks like, the invention could be used to generate a satellite map. Street maps can provide two-dimensional assistance on where to turn left and right, but satellite maps are three-dimensional and show far more detail on, for example, what the area of interest looks like, and what the buildings around it look like, and how wide the streets are.
In response to ANIMATION request 230, the invention can also generate an "animated" street map, teπain map and/or satellite map, which is a video that shows motion of the object by superimposing the object's motion on, respectively, a street, teπain and/or satellite, map. Step 40 also converts the raw position data stored per step 28 to teπain maps. This is accomplished using a product such as MapServer, from Maptech, Inc. This information is stored in the "teπainmap" field of Table 2B in Figure 12 A. It constitutes a path to where such map is stored, which enables computer applications to efficiently generate a teπain map of an object's location. For example, if the user were trapped on a mountain, the invention could be used to generate a teπain map which could be beamed with a mobile phone to rescuers. Teπain maps show the features of the landscape, providing clues that mere latitude, longitude and altitude do not. * Step 42 converts the raw position data stored in step 28 to clustered positions. Because every location technology has some inherent inaccuracy, including GPS, position measurements will often fluctuate around the object's true position. Furthermore, a meaningful location (such as a street address) is often not a sharply defined boundary. To remedy these problems, and to determine important areas, nearby positions are grouped together and treated, respectively, as a single geographic location. The technique of identifying positions that deserve to be grouped together is called clustering, and the present invention accomplishes this using an ISODATA clustering algorithm. This algorithm is disclosed in Therrien, C.W. "Decision, Estimation and Classification", John Wiley & Sons, 1999, and the explanation of this algorithm which is contained therein is hereby incorporated by reference. The result is a table (discussed in detail below) in the database that enables applications to efficiently determine the frequently- visited locations of an object. A sample entry obtained by clustering is shown in Table No. 3 of Figure 12B. (Table No. 3 has been separated into tables 3 A and 3B of Figure 12B due to space restrictions on the typewritten page. Table 3B is shown to include a repetition of the fields "GUID" and "Location ID" only to show its link to the data in Table 3A). A Location ID is assigned by the server to the following regions: cluster, street address, city, postal code, state, country, and any position specifically designated by a client (along with an assigned radius).
Pre-processing and post-processing steps for ISODATA are required to take into account the fact that the Earth is approximately spherical. Every degree of latitude is the same distance, but not so for longitude. The geographic distance of one degree of longitude is greater at the equator than at the poles. For instance, at the North Pole, one can move through 360° of longitude just by pivoting, while at the equator one must travel around the circumference of the Earth to cover 360° of longitude. Without the pre- and post-processing steps, the results would be far less accurate, especially if motion of the object covered large north-south distances.
So, the pre-processing step is applied to "warp" latitude and longitude to the Universal Transverse Mercator coordinate system (which doesn't suffer from this nonlinearity caused by longitude) and use that as input to ISODATA. The post-processing step is to uiiwarp, i.e. to convert the Universal Transverse Mercator positions back into latitude and longitude. The conversions between lat/long and Universal Transverse Mercator are straightforward. Information on how to do this is available at ht ://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM, which has printed references at the end of the page.
ISODATA processes the position data for a (potentially large) number of positions, and partitions them into clusters. The result is a set of points (from which a convex hull is computed as explained below) and a centroid. As is evident from Fig. 11 A, clustering is performed for each new datapoint. However, if this creates a high processing load, then the clustering algorithm is performed only at selected time intervals, such as every hour. As has just been explained, clustering step 42 determines the positions grouped into a cluster. The convex hull algorithm 44 then determines the minimum number of points to define the location of that cluster. For example, if there are 50,000 observations peppered in and around a user's house, clustering (via the ISODATA algorithm) groups all of those positions into one cluster. The convex hull algorithm identifies the positions at the boundary of that cluster. More specifically, step 44 determines a boundary from the raw position data stored in step 28 for the positions partitioned into one cluster, so that all of the positions are within or on the boundary. Of course, there is likely to be a different boundary for each different cluster. An intuitive explanation of a convex hull algorithm can be provided as follows. If a large number of nails were hammered into a board at random, and then a rubber band were stretched around all of the nails, some nails will be inside the rubber band, and others will be touching the rubber band. The nails touching the rubber band constitute the convex hull. A mathematical definition of this term is that a "convex hull" is a minimal convex subset containing a set of objects. Fig. 11B shows the convex hull as black circles, and the white circles indicate positions inside the convex hull.
A convex hull is preferably generated with the Perl subroutine described in Orwant et al., "Mastering Algorithms with Perl", O'Reilly & Associates, 1999, p. 454, which is hereby incorporated by reference, with the modification that once a convex hull has been stored for an object, it can be iteratively expanded or contracted as each new datapoint arrives. As is evident from Fig. 11 A, convex hull is performed for every new datapoint. However, if this creates a high processing load, then the convex hull algorithm is performed only at selected time intervals, such as every hour.
The datapoints defining the convex hull are stored as ordered pairs (i.e. latitude and longitude) in the "points" field in Table No. 3 A depicted in Figure 12B. If, for example, the cluster identified by the hexadecimal CB018 in the Location ID field has a convex hull which requires 15 "nails" to define the shape of the "rubber band", the "#points" field would have the number 15 in it, and the "points" field would have 15 ordered pairs corresponding, respectively, to these "nails". As a specific illustrative example, Table 3 A lists the hexadecimal CB018 as the Location ID for an object having 87F3 as its GULD. This cluster's centroid is determined to be at a latitude of 42.44680396, longitude of -71.22544954, and altitude of 14.10348. The convex hull algorithm has determined that this cluster's shape is a circle (which is evident from the entry of "1" in the "#points" field indicating that only one point, namely the centroid, plus the mean-radius of 5.1066, are required to defineits shape), hi contrast, Location LD CB9A4 needs 3 positions (or points) to specify the shape of its convex hull, and the ordered pairs for these are found in the "points" field.
The position of the centroid for Location ID CB018, and therefore the location of the cluster, coπesponds to an address at 15 Dalton Rd., Boston, MA. 02149 USA which has been obtained from the result of step 36.
Once a convex hull is available, it is very easy computationally to determine whether a position is inside it. Convex hulls are specifically designed for this purpose. Of course, it is also possible to represent a cluster as a region enclosed/defined by an imaginary line that might not coπespond to actual locations visited by the object.
Another request that the server can handle is LOGOUT request 46 {logout(SESSION)}. This is a request to terminate a session. As shown in Fig. 4, after authentication step 48 is successful, the stored SESSION ID is deleted from database 9, per 50, and a suitable success message is returned to the device, per 52. When the server receives a LOGOUT request for a session, it invalidates the client's SESSION LD, prohibiting other invocations thereof until the client logs in again.
Server 3 can also handle a LOCATION request 54 {location(SESSION, OBJECT, LOCATION_TYPE, [TIME], [INTERPOLATION])}. This operation handles application requests to determine the location of an object via the "location" method. The client provides a SESSION JD for authentication, specifies the object to be located, and designates a location type to specify a desired output format. Additionally, the client may also specify a desired time of the location observation, and a Boolean interpolation bit indicating whether the system should estimate the location of the object in an attempt to match the time as precisely as possible. As shown in FIGS. 5 A - 5C, if authentication 56 is successful, step 58 checks whether the user is requesting the location at a specified time. If so, then step 60 checks whether the position data has the exact time. If so, then step 62 is performed (see below). If not, then step 64 checks whether interpolation is permitted. Ifso, then step 66 calculates the position interpolated between the two stored times in the database. If interpolation is OFF, then step 68 selects whichever the position data for whichever time is stored that is closest to the specified time.
If step 58 reveals that no time is specified, then step 70 retrieves the position data for the last known position. If interpolation is ON, per 72, then step 74 extrapolates the position to the current time. If interpolation is OFF, per 72, then the last known position data is simply used as is.
Thus, when the user requests a location, the input to step 62 is the position needed to respond to that request. Step 62 will determine whether the user wants this information in the form of raw position data. If so, that data is provided by step 76, and the flow then returns to the initial stage of request determination, as shown in Fig. 2. If not, then step 78 determines whether the location type is a street address. If so, then step 80 determines whether that street address is in the inverse index of street addresses obtained per step 38. Ifso, then step 82 provides that address to the user. If not, then the reverse geocoding process is run, per 84, the information is stored in the index for future availability, per 86, and returned to the user, per 82.
Steps 88, 90, 92, 94 and 96 for postal code coπespond, respectively, to above- described steps 78, 80, 82, 84 and 86. Similarly, coπespondence applies to 98, 100, 102, 104, 106 for city, 108, 110, 112, 114, 116 for state, and 118, 120, 122, 124 and 126 for country.
If the designated location type is a cluster, per 128, then step 130 determines whether the specified position is in an existing cluster. If so, the convex hull is returned, per 132. If not, then clustering is performed per 134, the convex hull algorithm is performed, per 136, and the result returned to the client, per 132. Another request handled by the server is DISTANCE request 140 {distance(SESSION, OBJECT, OBJECT)}. The server handles application requests to determine the distance between two objects. The client provides a SESSION ID and two objects. The result is calculated by determining the decimal latitude and longitude of each object using the appropriate steps, and then computing the spherical distance (i.e. approximately the distance along the surface of the Earth) between the centroids of those locations.
As shown in FIG. 6, steps 142 and 144 retrieve from the database the respective GUIDs for the specified objects. Step 146 determines the last known position of the first object, and step 148 does likewise for the second object. Step 150 then computes the spherical distance therebetween. The result of the computation is transmitted to the client, per 152.
Another request handled by the server is HISTORY request 154 {history(SESSION, OBJECT, LOCATION YPE, [TLME_STEP], [INTERPOLATION],
[START TLME], [END TLME])}. The server handles HISTORY requests to determine the movement history of an object. The client provides a SESSION LD, an object, a location type and, optionally, a time step, an interpolation bit, a start time, and an end time.
If a time step is provided, the server returns observations with a fixed period, e.g., locations on the hour. If the interpolation bit is set, estimates are used to determine the position at the given times. Otherwise, the closest actual observation is used. The result is returned as a series of timestamped observations. The observations begin at the start time if provided, and the first observation if not. The observations end at the end time if provided, and the last observation if not.
As shown in FIGS. 7 A to 7C, after authentication is successful, step 156 determines the object's GUTD. Then step 160 (see FIG. 7B) checks whether the client request specifies a start time. If not, then step 162 uses the first observation recorded for that object. Either way, step 164 then checks whether an end time has been provided. If not, then step 166 uses the last observation recorded for that object. So, at the end of steps 160-166, the start and end times needed for processing this HISTORY operation are known.
Then, step 170 (see FIG. 7C) checks whether the client request specifies a time step. If so, and if interpolation is ON, per step 172 (i.e. an interpolation bit has been provided), then step 174 interpolates between times that bracket time step. For example, if the time step is 5 minutes. However, if no position was detected at a 5 minute interval, but there is one at 4 mins. 32 sees, and another at 7 mins. 15 sees., step 174 will provide interpolated position data for the 5 min. interval using the data for such two positions. On the other hand, if interpolation is OFF, step 176 will select the position data obtained at 4 mins. 32 sees. Because that is closest to the time of the 5 min. interval.
Function 158 shown in FIG. 7A represents all the steps shown in FIG. 7B. Likewise, all the steps shown in FIG. 7C are represented by function 168 of FIG. 7B. At the conclusion of functions 158 and 168, a datapoint for a particular position is known from step 174 or 176, and is available for further processing in accordance with the HISTORY operation.
As shown in FIG 7A, that known portion is inputted to step 62 in FIG. 5 A. So, if the client request is for the movement to be provided as street addresses, that address will be determined by step 78, and the street address coπesponding to the above- mentioned known position (i.e. from step 174 or 176) will be returned to the client by step 82.
This sequence of steps for the HISTORY operation follow a loop, per 169 (see FIG. 7A) until all the positions (i.e. up to the end time) have been processed.
Another request handled by server 3 is MAP request 178 {map(SESSION, OBJECT, MAP_TYPE, PLOT TYPE, [START_TIME], [END_TLME],
[INTERPOLATION])}. The server handles this request by generating a map of an object's location. The client provides a SESSION ID, an object, a map type, a plot type and, optionally, a start time, an end time, and an interpolation bit. The server retrieves a map from the database if available from Table 2B, and otherwise generates one.
The map type may be any one of "street", "teπain", or "satellite" types. The plot type is any one of "point", "trail", or "vector", and it sets how the object's path is plotted in the generated map. If a start time is provided, locations of the object are used beginning at that time and, otherwise, the first observation recorded by the system. If an end time is provided, locations of the object are used ending at that time and, otherwise, the last observation recorded by the system. If the interpolation bit is set, the system fills in data between actual observations using a conventional interpolation algorithm. The map image is then returned to the client.
As shown in FIGS. 8 A and 8B, after successful completion of the usual authentication step followed by conversion to a GUJD, per 180, the steps of above-described function 158 determine the start time and end time, as explained above. Then, the steps of above-described function 168 determine an observed position to process, as explained above.
At this stage, the map being created needs to have a "bounding box" because map services (such as the above-mentioned MapPoint) need to know what to map. It is not sufficient to merely request a map at, say, 43 latitude, -71 longitude because the map service will not know the scale: should it be a square yard? a square mile? So, when a map service is used, which is the case for the present invention, a "bounding box" must be provided that defines the rectangular perimeter of the map.
The present invention computes the bounding box from the convex hull of a location by looping through all of the points in the hull, and calculating the minimum latitude, maximum latitude, minimum longitude, and maximum longitude. The bounding box is then a rectangle with its upper left corner at a point with minimum latitude and minimum longitude, and its lower right corner at a point with maximum latitude and maximum longitude, hi FIG. 11B, the corner brackets indicate the bounding box relative to the convex hull. Step 182 of FIG. 8 A computes the bounding box in accordance with the algorithm described above.
Once the bounding box is computed, the MAP operation 178 proceeds to perform what is represented in FIG. 8A as function 184, the details of which are presented in FIG. 8B. Before turning to that drawing, it must be mentioned that the server maintains three queues of URIs (Uniform Resource Identifiers) for mapping services (one for street maps, one for teπain maps, and one for satellite maps). Each queue is aπanged in order of observed reliability over the lifetime of the system (i.e. empirically, from the success or failure of previous attempts to use the mapping services). These queues are maintained in the event that one or more mapping services are unavailable. Thus, if one mapping service fails to respond, the server accesses the queue to select the next mapping service.
Step 186 determines whether the map type specified in the client request is a teπain map. If so, then step 188 proceeds to extract the first URI from the teπain queue, and the map is retrieved, per 190. If the retrieval is successful, per 192, then the information is overlayed on the requested plot type. Which plot type is to be used is determined per steps 216, 220 and 224, and then the appropriate one from among steps 218, 222 and 226 performs the map overlay. If the map retrieval is not successful, per step 192, then step 194 moves to the next URI in the queue and loops once again through steps 190 and 192.
Steps 196, 198, 200, 202 and 204 are performed for a satellite map, and they respectively coπespond to above-described steps 186, 188, 190, 192 and 194.
Likewise, steps 206, 208, 210, 212 and 214 for a street map respectively coπespond to above-described steps 186, 188, 190, 192 and 194.
URI extraction steps 188, 198 and 208 use a utility for extracting a map from the service named by the URI. One such utility is the Perl WWW: Mechanize module, available from http://search.cpan.org. The system uses the utility to retrieve a map with the bounding box computed in step 182, and the map is returned to the client per 185.
Another possible client request is ANIMATION request 230 {animation(SESSION, OBJECT, MAP TYPE, PLOT TYPE, DURATION, FRAME_RATE, [STREAM], [START_TLME], [END_TIME])}. This method handles application requests to generate an animation of the object's motion. The client provides a SESSION ID, an object, a map type, a plot type, a duration, a frame rate, and optionally a stream bit, a start time, and an end time. The first four parameters are as discussed in previous steps. The duration is the length of time that animation should last. The frame rate is the number of frames per second. The stream bit is a Boolean indicating whether the client wants to download the entire animation or receive it frame by frame as it is generated. The start time is the time of the first observation of the object. The end time is the time of the last observation of the object. The server determines a set of representative observations via bilinear interpolation, generates a map for each such observation, combines the sequence of maps into an animation, streaming the result to the client if the stream bit is set, and sending the entire animation otherwise.
As shown in FIG. 9, authentication and conversion to a GUID are first performed per step 232. Then, above-described function 158 is performed to detennine the start and end times. Step 234 determines whether a frame rate is included in the client request.
If not, then this parameter is set to 1 frame per second. The frame rate from 234 (if one is specified) or 236 (if one is not specified) is inputted to step 238 which determines the times at which observations are required for a smooth animation. This is done by dividing the value of the specified frame rate parameter (or 1 if the frame rate parameter was not specified) into the value of the DURATION parameter (or, if
DURATION is omitted, the value of the end time parameter minus the value of the start time parameter, with end time defaulting to the last recorded observation, and start time default to the first recorded observation). Of course, DURATION refers to the desired length of time for the animation sequence. The result of this step is a sequence of equally-distributed times at which the position of the object should be appear in the animation. Step 240 performs the necessary interpolation, and step 242 computes a bounding box for each pair of positions. Then, the derived information is used by above-described function 184 (see FIG. 8B) to create a map in the requested map type using the requested plot type.
Step 244 determines whether processing of the ANIMATION operation has reached the last pair of positions. If not, then processing of this operation repeatedly loops through function 184 until the last pair of positions is reached. It should be understood that at this stage, all the maps that were derived by looping through function 184 are individually stored locally at the server. Step 246 uses a utility to convert all those maps to a GIF image format. One such utility is pbmplus, available at http ://www. acme, com/software/pbmplus/.
Then, step 248 uses a utility to combine the resulting GIF images into an animated gif with the frame rate specified in the frame rate parameter. One such utility is MultiGIF, available from http://www.kfs.org/~abw/code/multigif.html. The result is the map animation, which is then transmitted back to the client.
The animation is returned to the client as files or a stream, based on steps 250, 252 and 254. The streaming can be accomplished using any conventional Internet video streaming technology, such as that provided by Quicktime (Apple, h e; http://developer.apple.com/quicktime) or RealVideo (RealNetworks, Inc.; http://www.real.com).
The final request shown on FIG. 2 is PROXIMITY 256 request {proximity(SESSION, OBJECT, OBJECT, SORT_METHOD, [START_TLME], [END_TIME], [TLME_STEP], [INTERPOLATION])}. This method handles application requests to generate a listing of distances between two objects. The client provides a SESSION LD, two objects, and an ordering of data which specifies distance or time, either forwards or backwards. The client may provide an optional start time, end time, time step, or interpolation bit, interpreted as in previous steps. As shown in FIG. 10, the two objects are converted to their respective GUIDs by steps 270 and 272. Function 158 determines the start time and end time. Function 168a, having the same functions as above-described function 168, provides positions for the first object. Similarly, function 168b provides positions for the other object. Each step for this operation will have one position for the first object and one position for the second object. Step 274 computes the spherical distance between those positions of the two objects. This is then done for each time step. If the two objects are stationary, then the distance between them obviously will remain the same. If one object is moving and the other is stationary, the distance between the objects depends only on the moving object's motion. If both objects are moving, then the distance will vary in accordance with their combined motion.
Several sort methods are available for presenting the results of the PROXIMITY operation. The distance between the objects can be shown as a function of time in chronological order, or in reverse chronological order. Also, the result can be shown in terms of magnitude of the distance between the objects, with the distance being shown in ascending order, or in descending order. If the client request does not coπespond to any of theses sort methods, then an eπor message is returned, per step 290.
Steps 276-279 determine which sort method has been included in the client request. Steps 280-283 respectively perform the requested sort method, and steps 284-287 return the requested information to the client.
Although a prefeπed embodiment of the present invention has been described above in detail, various modifications thereto will be ready apparent to anyone with ordinary skill in the art. For example, the present invention may be implemented either in hardware or software, or a combination of both. Also, the ISODATA algorithm is one of several techniques for defining a location. Other techniques are possible, such as fuzzy clustering, hierarchical clustering, and Kohonen's self-organizing maps. There are alternatives to use of GPRS, such as HSCSD and the 802.11 protocol family. Furthermore, rather than using MultiGLF, the maps in GIF format can be converted into a GIF89a animation by scripting a software product such as Ulead, available from http ://www.ulead. com. Also, there are alternatives to the use of GPS as a location technology, such as Cell ID, Bluetooth, or RFID. These and all other such modifications are intended to fall within the scope of the present invention as defined by the following claims.

Claims

WE CLAIM:
1. A method for providing information about movement of a mobile object to each of a plurality of positions along the Earth's surface, comprising: obtaining position data related to each of the plurality of positions; and storing the position data for the plurality of positions in a persistent database for selective retrieval therefrom upon request to provide information about movement of the mobile object.
2. The method of claim 1 , wherein the position data for the plurality of positions is obtained automatically and/or related to position measurements made at periodic time intervals.
3. The method of claim 1 or 2, wherein the storing step includes converting the position data to location information related to at least one of said plurality of positions.
4. The method of claim 3, wherein said location information is at least one of street address, postal code, city, state and country.
5. The method of any preceding claim, wherein the position data for the plurality of positions comprises latitude and longitude or latitude, longitude and altitude.
6. The method of any preceding claim, wherein the request is based on time or on at least one of said plurality of positions.
7. The method of claim 3 or 4, wherein the request is based on location information derived from the position data and related to at least one of said plurality ofpositions.
8. The method of claim 7, wherein said location information includes an index relating said position data of at least one of said plurality ofpositions to at least one of street address, postal code, city, state and country for, responsive to said request, providing information about movement of the mobile object .
9. The method of claim 7 or 8, wherein location information includes an inverted index relating at least one of said street address, postal code, city, state and country to said plurality ofpositions for, responsive to said request, providing information about movement of the mobile object.
10. The method of claim 7, wherein said location information is a at least of a street map, teπain map and satellite map relating at least one of said plurality of positions to at least one of street address, postal code, city, state and country for, responsive to said request, providing information about movement of the mobile object .
11. The method of any preceding claim further comprising partitioning the position data for the plurality ofpositions into a plurality of clusters of related positions that are accessible to provide information in response to the request.
12. The method of claim 11 , wherein the step of partitioning the position data comprises storing the plurality of clusters of related positions in the persistent database for selective retrieval therefrom upon request to provide information about movement of the mobile object.
13. The method of claim 11 , wherein said partitioning step includes a pre- processing step of warping the position data to take into account that the Earth is approximately spherical
14. The method of claim 13, wherein said partitioning step includes a post-processing step of unwarping the output of the partition step to coπect for said preprocessing step.
15. The method of claim 14, wherein said partitioning step includes performing the partitioning each time new position data is obtained.
16. The method of Claim 11 , further comprising determining a periphery that bounds all positions from among said plurality ofpositions which are categorized into one of said plurality of clusters.
17. Apparatus for providing information about movement of a mobile object to each of a plurality ofpositions along the Earth's surface, comprising: means for obtaining position data related to each of the plurality ofpositions; and means for storing the position data for the plurality ofpositions in a persistent database for selective retrieval therefrom upon request to provide information about movement of the mobile object.
18. Apparatus of claim 17 comprising means for, responsive to a request related to a specified time and/or position, providing information about movement of the mobile object coπesponding to the specified time and/or position by accessing the position data for the plurality ofpositions stored in said persistent database.
19. Apparatus of claim 17 or 18, comprising means for partitioning the position data for the plurality ofpositions into a plurality of clusters of related positions.
20. Apparatus of claim 17 or 18 comprising: means for deriving based on the position data an individual map for each of a plurality of said positions; and means for animating movement of the mobile object by combining a plurality of said individual maps.
EP04804121A 2003-12-31 2004-12-20 Technique for collecting and using information about the geographic position of a mobile object on the earth's surface Withdrawn EP1700133A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP04804121A EP1700133A1 (en) 2003-12-31 2004-12-20 Technique for collecting and using information about the geographic position of a mobile object on the earth's surface

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/751,058 US20050143909A1 (en) 2003-12-31 2003-12-31 Technique for collecting and using information about the geographic position of a mobile object on the earth's surface
EP04291828 2004-07-16
EP04804121A EP1700133A1 (en) 2003-12-31 2004-12-20 Technique for collecting and using information about the geographic position of a mobile object on the earth's surface
PCT/EP2004/014523 WO2005064358A1 (en) 2003-12-31 2004-12-20 Technique for collecting and using information about the geographic position of a mobile object on the earth’s surface

Publications (1)

Publication Number Publication Date
EP1700133A1 true EP1700133A1 (en) 2006-09-13

Family

ID=34740681

Family Applications (1)

Application Number Title Priority Date Filing Date
EP04804121A Withdrawn EP1700133A1 (en) 2003-12-31 2004-12-20 Technique for collecting and using information about the geographic position of a mobile object on the earth's surface

Country Status (3)

Country Link
EP (1) EP1700133A1 (en)
JP (1) JP2007517203A (en)
WO (1) WO2005064358A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060141420A1 (en) 2004-09-14 2006-06-29 Dentsply Research And Development Corp. Notched pontic and system for fabricating dental appliance for use therewith
ES2645771T3 (en) * 2011-06-29 2017-12-07 Koninklijke Philips N.V. Location estimation of a mobile device
RU2014117561A (en) * 2014-04-30 2015-11-10 Общество С Ограниченной Ответственностью "Яндекс" SYSTEM (OPTIONS) AND METHOD (OPTIONS) DISPLAY ANIMATION CARD
WO2019182919A1 (en) * 2018-03-17 2019-09-26 GPSip, Inc. Wireless location assisted zone guidance system incorporating secure transmission of location
EP4022479A4 (en) * 2019-09-18 2023-09-13 GPSIP, Inc. Wireless location assisted zone guidance system incorporating secure transmission of location

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594650A (en) * 1992-10-16 1997-01-14 Mobile Information Systems, Inc. Method and apparatus for tracking vehicle location
US5835907A (en) * 1995-12-20 1998-11-10 Mci Communications Corporation Emergency PCS system for identification and notification of a subscriber's location
US5922040A (en) * 1995-05-17 1999-07-13 Mobile Information System, Inc. Method and apparatus for fleet management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594650A (en) * 1992-10-16 1997-01-14 Mobile Information Systems, Inc. Method and apparatus for tracking vehicle location
US5922040A (en) * 1995-05-17 1999-07-13 Mobile Information System, Inc. Method and apparatus for fleet management
US5835907A (en) * 1995-12-20 1998-11-10 Mci Communications Corporation Emergency PCS system for identification and notification of a subscriber's location

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ASHBROOK D ET AL: "Learning significant locations and predicting user movement with GPS", WEARABLE COMPUTERS, 2002. (ISWC 2002). PROCEEDINGS. SIXTH INTERNATIONAL SYMPOSIUM ON SEATTLE, WA, USA 7-10 OCT. 2002, PISCATAWAY, NJ, USA,IEEE, US, 7 October 2002 (2002-10-07), pages 101 - 108, XP010624587, ISBN: 0-7695-1816-8 *
DATABASE INSPEC [online] THE INSTITUTION OF ELECTRICAL ENGINEERS, STEVENAGE, GB; 11 September 2003 (2003-09-11), ASHBROOK D ET AL: "Using GPS to learn significant locations and predict movement across multiple users", XP002453254, Database accession no. 7895497 *
PERSONAL AND UBIQUITOUS COMPUTING SPRINGER-VERLAG UK, vol. 7, no. 5, 11 September 2003 (2003-09-11), Online, pages 275 - 286, ISSN: 1617-4909 *
See also references of WO2005064358A1 *

Also Published As

Publication number Publication date
WO2005064358A1 (en) 2005-07-14
JP2007517203A (en) 2007-06-28

Similar Documents

Publication Publication Date Title
US20050143909A1 (en) Technique for collecting and using information about the geographic position of a mobile object on the earth's surface
US10798525B2 (en) Techniques for wireless position determination utilizing a collaborative database
US9392407B2 (en) Method and system for selecting and providing a relevant subset of wi-fl location information to a mobile client device so the client device may estimate its position with efficient utilization of resources
Leonhardt Supporting location-awareness in open distributed systems
JP6701094B2 (en) Adaptive position determination
JP5450529B2 (en) Location beacon database and server, method of building location beacon database, and location-based service using the same
US6771970B1 (en) Location determination system
WO2017033141A1 (en) Method and arrangement for locating a mobile device
US20030050755A1 (en) Location information conversion device, control method therefor, location information providing system using them, and control method therefor
CN102428384A (en) Method for positioning by WI-FI signals
CN109856660A (en) Floating Car road conditions information gathering method, apparatus, equipment and system
WO2005064358A1 (en) Technique for collecting and using information about the geographic position of a mobile object on the earth’s surface
KR20030039578A (en) A real-time traffic information process system and method
Pontikakos et al. Location-based services: architecture overview
JP3731736B2 (en) Location information management system
Kotsakis et al. Integrating Differential GPS data into an Embedded GIS and its Application to Infomobility and Navigation
EP1222648B1 (en) Location determination system
Pontikakos et al. Location-based services: A framework for an architecture design
CN112672419A (en) Indoor positioning method and system based on position fingerprint characteristics
Tang et al. One Vehicular Information Service System

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20060425

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU MC NL PL PT RO SE SI SK TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20071112

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20080524