Generating routes

A method, data processing system and computer program product for generating a route. A beginning location is received. A set of preferences for generating a set of routes is received. A set of routes is generated based upon the set of preferences, wherein each route in the set of routes starts and ends at the beginning location, and wherein at least a portion of a specified route in the set of routes does not overlap any other portion of the specified route in the set of routes.

BACKGROUND

The present disclosure relates generally to generating routes and in particular to a method and system for generating routes based upon preferences. Still more particularly, the present disclosure relates to a method and system for generating routes, wherein the routes start and end at a beginning location, and wherein at least a portion of each route does not overlap with any other portion of the route.

2. Description of the Related Art

Today, global positioning systems and mapping software are often used to help travelers follow routes to destinations. For example, a mobile device user may enter a desired destination into the mobile device in order to find out how to arrive at the destination. The mobile device then generates a route for the user to follow, based upon the desired destination and the current location of the user.

A traveler might desire a route that eventually returns the traveler to the beginning location. For example, a traveler may decide to visit a monument or a park, and then return after a certain amount of time. The traveler may decide to return along the same route or along a different route. For example, there may be one or more additional locations or points of interest (poi) that the traveler may wish to visit that were not along the route that was used to arrive at the traveler's current location.

SUMMARY

The different illustrative embodiments provide a method, data processing system, and computer program product for generating a route. A beginning location is received. A set of preferences for generating a set of routes is received. A set of routes is generated based upon the set of preferences, wherein each route in the set of routes starts and ends at the beginning location, and wherein at least a portion of a specified route in the set of routes does not overlap any other portion of the specified route in the set of routes.

DETAILED DESCRIPTION

The different illustrative embodiments recognize and take into that account that mapping software and mapping devices are often used to help travelers follow routes to destinations. The different illustrative embodiments recognize and take into account that travelers might desire to return to a starting location after traveling to one or more locations. The different illustrative embodiments recognize and take into account that generating routes to a destination that have a different return path may be desirable.

Thus, the different illustrative embodiments provide method, data processing system, and computer program product for generating a route. A beginning location is received. A set of preferences for generating a set of routes is received. A set of routes is generated based upon the set of preferences, wherein each route in the set of routes starts and ends at the beginning location, and wherein at least a portion of a specified route in the set of routes does not overlap any other portion of the specified route in the set of routes. As used herein, “set of” refers to “one or more.” For example, a set of routes is one or more routes and a set of preferences is one or more preferences.

With reference toFIG. 1route generating environment100is depicted in accordance with an illustrative embodiment. As depicted, route generating environment100is an example of components in which the illustrative embodiments may be implemented.

In the depicted example, computer system102comprises generator104. Generator104generates set of routes106based upon set of preferences108. Each route in set of routes106starts and ends at beginning location110. At least a portion of a specified route in set of routes106does not overlap any other portion of the specified route. A particular portion of a route does not overlap any other portion of the route if the particular portion of the route does not go through the same location as any other portion of the route. For example, a route that starts on the shore of a lake and follows along the shore of the lake until returning to the starting point does not have a portion that overlaps any other portion. A route that starts at a first house, goes 5 blocks north to a second house, and then returns 5 blocks south along the same path that was used to arrive at the first house overlaps at every portion of the route because the same path is used for both directions of the route. However, if a route starts at the first house, goes 5 blocks north, returns 4 blocks south, but then goes east one block, south one block, and finally west one block to arrive at the first house, then the route would have at least a portion that does not overlap any other portion.

In this illustrative example, generator104receives preferences108and beginning location110from user112. For example, user112of route generating software may provide preferences108and beginning location110to generator104. Preferences108and beginning location110may be provided to generator104via a touch panel, keyboard input, voice input, and any other input suitable for providing preferences108and beginning location110to generator104. In some illustrative examples, preferences108and beginning location110may be received from another computer system or may already be stored in computer system102or another data source.

Generator104may be software running on computer system102. In some illustrative examples, generator104may be hardware. In the depicted example, computer system102is hardware that may comprise one or more computers, server computers, client computers, personal devices, or any other systems capable of running program code.

In this illustrative example, computer system102communicates with database114via a communications medium. Examples of a communications medium that may be used include, for example a network, wire and wireless transmission of information. Database114can include information used by generator104to generate set of routes106. For example, database114may include information about locations, streets, cities, landmarks, points of interest, social interests, available transportation, and any other type of information suitable for being used to generate set of routes106. Furthermore, database114may include one or more separate databases that exist on one or more separate computer systems.

In this illustrative example, display116displays set of routes106to user112. Display114can be a panel, screen, monitor, and any other device suitable for displaying set of routes106to user112. For example, user112may view set of routes106on a graphical display of a mobile communications device.

With reference now toFIG. 2, an illustration of generator200is depicted in accordance with an illustrative embodiment. Generator200is an example of generator104in route generating environment100ofFIG. 1.

In the depicted example, generator200includes beginning location202. Generator200also includes set of preferences204, which further includes preference206, preference208, and preference210. Generator200also includes set of routes212, which further includes route214, rank216, route218, rank220, route222, and rank224. Generator200also includes interests226, new route228, and location of user230.

In the depicted example, user232provides preference206, preference208, and preference210. In the depicted example, preference206is a distance, preference208is a location to be included along a route, and preference210is a change in elevation. A preference may be a distance, location to be included along a route, change in elevation, number of turns, type of surface, mode of transportation, and any other preference suitable for using in generating a route. Furthermore, mode of transportation may be walking, jogging, running, bicycle, skating, motorcycle, public transportation, and any other mode of transportation suitable for generating a route.

For example, preference206may be 3 miles, preference208may be a particular park to be included along the route, and preference210may be 50 feet. Generator200generates route214, route218, and route222based upon preference206, preference208, and preference210, wherein the route starts and ends at beginning location202. In some illustrative examples, beginning location202may be received form user232. In some illustrative examples, beginning location202may be received from another computer system or may already be stored in computer system102or another data source. In some illustrative examples, beginning location202may be determined for example, but not limited to, based upon a global positioning system, triangulation, or browser based location services.

In the depicted example, each route in set of routes212is ranked based upon set of preferences204. Therefore, route214, route218, and route222may be ranked based upon preference206, preference208, and preference210. In some illustrative examples, a route that has the most matches for each preference has the highest rank. The route with the next most matches has the second highest rank, and so forth. In some illustrative examples, a route that has the closest matches for each preference has the highest rank. The route with the next closest matches has the second highest rank, and so forth. In some illustrative examples, a value is assigned for each rank in set of routes212. The value may be numerical or any other value suitable for representing a degree of match of each preference to the corresponding route.

In some illustrative examples, each preference may be required or not required. For example, preference206may be a required 3 miles, preference208may be a particular park is required to be included along the route, and preference210may be 50 feet, but not required. Route214may be 3.1 miles with 51 feet of elevation change, route218may be 3.5 miles with 47 feet of elevation change, and route222may be 2 miles with 25 feet of elevation change. In this example, rank216of route214may be “1,” rank220of route218may be “2,” and rank224of route222may be “3.”

Generator200may also generate routes based upon interests226. For example, user232may enter an interest of “lakes.” Generator may then generate routes that go near one or more lakes. Interests226may include hobbies, food and drink preferences, social interests, locations, people, animals, and any other topic suitable for being an interest of user232.

In some illustrative examples, location of user230is the current location of user232. Location of user230may be provided by a global positioning system. For example, user232may have a device that is located by a global positioning system. In some illustrative examples, user232may provide location of user232.

In some illustrative examples, during traversal of a route, if generator200determines that location of user230and a route that the user is currently following does not satisfy set of preferences204, new route228from location of user230to beginning location202is generated based on location of user230and set of preferences204. In some illustrative examples, generator200generates new route228from location of user230to beginning location202is generated based on location of user230and set of preferences204when generator determines that user232was following a route, but is no longer on the route.

The illustration of route generating environment100inFIG. 1and generator200inFIG. 2is not meant to imply physical or architectural limitations to the manner in which an advantageous embodiment may be implemented. Other components in addition to or in place of the ones illustrated may be used. Some components may be unnecessary. Also, the blocks are presented to illustrate some functional components. One or more of these blocks may be combined, divided, or combined and divided into different blocks when implemented in an advantageous embodiment.

For example, database114may be located within computer system102. In some illustrative examples, database114is replaced with one of a plurality of databases, each of which may be accessed through a wire and wireless connection. Furthermore, display116may be located on a different computer system than computer system102. For example, computer system102may transmit information through wire and wireless connections to a remote computer system that includes display116in order to display set of routes106. Therefore, display116may be remotely located from computer system102.

With reference now toFIG. 3, an illustration of a display300of a set of routes is depicted in accordance with an illustrative embodiment. The display300illustrated inFIG. 3may be implemented on a display, such as display116inFIG. 1. In some illustrative examples, beginning location302may be a current location of user112. Route304and route306are examples of routes in set of routes106that are displayed on display112for user112. In the depicted example, user112entered a preference of 3 miles, and generator104generated two routes that are each 3 miles. User112may decide to take route304to go near a park or to take route306to go near a lake.

With reference now toFIG. 4, an illustration of a flowchart of generating routes is depicted in accordance with an illustrative embodiment. The process illustrated inFIG. 4may be implemented in a route generating environment, such as route generating environment100inFIG. 1.

The process begins by receiving a beginning location110(step402). The process receives a set of preferences108for generating a set of routes106(step404). The process generates the set of routes106based upon the set of preferences108(step406). Each route in the set of routes106starts and ends at the beginning location110. At least a portion of a specified route in the set of routes106does not overlap any other portion of the specified route in the set of routes106. Thereafter, the process terminates.

With reference now toFIG. 5, an illustration of a flowchart of a process for generating routes is depicted in accordance with an illustrative embodiment. The process illustrated inFIG. 5may be implemented in a route generating environment, such as route generating environment100inFIG. 1.

The process begins by a user112traversing a route (step502). The process determines whether the user112is located along the route (step504). Responsive to determining that the user112is not located along the route, the process generates a new route from the location of the user112to the beginning location110based upon the location of the user112and a set of preferences108(step506). Thereafter, the process terminates.

Returning now to step504, responsive to determining that the user112is located along the route, the process determines whether the location of the user112and the route satisfy the set of preferences108(step508). Responsive to determining that the location of the user112and the route do not satisfy the set of preferences108, the process generates a new route from the location of the user112to the beginning location110based upon the location of the user112and a set of preferences108(step506). Thereafter, the process terminates. Returning now to step508, responsive to determining that the location of the user112and the route satisfy the set of preferences108, the process terminates.

Turning now toFIG. 6, an illustration of a data processing system is depicted in accordance with an illustrative embodiment. In this illustrative example, data processing system600includes communications fabric602, which provides communications between processor unit604, memory606, persistent storage608, communications unit610, input/output (I/O) unit612, and display614. Data processing system600is an example of one implementation for computer system102inFIG. 1.

Memory606and persistent storage608are examples of storage devices616. A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, data, program code in functional form, and/or other suitable information either on a temporary basis and/or a permanent basis. Storage devices616may also be referred to as computer readable storage devices in these examples. Memory606, in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage608may take various forms, depending on the particular implementation.

For example, persistent storage608may contain one or more components or devices. For example, persistent storage608may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage608also may be removable. For example, a removable hard drive may be used for persistent storage608.

Communications unit610, in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit610is a network interface card. Communications unit610may provide communications through the use of either or both physical and wireless communications links.

Input/output unit612allows for input and output of data with other devices that may be connected to data processing system600. For example, input/output unit612may provide a connection for user input through a keyboard, a mouse, and/or some other suitable input device. Further, input/output unit612may send output to a printer. Display614provides a mechanism to display information to a user.

Instructions for the operating system, applications, and/or programs may be located in storage devices616, which are in communication with processor unit604through communications fabric602. In these illustrative examples, the instructions are in a functional form on persistent storage608. These instructions may be loaded into memory606or run by processor unit604. The processes of the different embodiments may be performed by processor unit604using computer implemented instructions, which may be located in a memory, such as memory606.

Program code618is located in a functional form on computer readable media620that is selectively removable and may be loaded onto or transferred to data processing system600and run by processor unit604. Program code618and computer readable media620form computer program product622in these examples. In one example, computer readable media620may be computer readable storage media624or computer readable signal media626. Computer readable storage media624may include storage devices, such as, for example, an optical or magnetic disk that is inserted or placed into a drive or other device that is part of persistent storage608for transfer onto a storage device, such as a hard drive, that is part of persistent storage608. Computer readable storage media624also may take the form of a persistent storage device, such as a hard drive, a thumb drive, or a flash memory, that is connected to data processing system600. In some instances, computer readable storage media624may not be removable from data processing system600. In these illustrative examples, computer readable storage media624is a non-transitory computer readable storage medium.

Alternatively, program code618may be transferred to data processing system600using computer readable signal media626. Computer readable signal media626may be, for example, a propagated data signal containing program code618. For example, computer readable signal media626may be an electromagnetic signal, an optical signal, and/or any other suitable type of signal. These signals may be transmitted over communications links, such as wireless communications links, optical fiber cable, coaxial cable, a wire, and/or any other suitable type of communications link. In other words, the communications link and/or the connection may be physical or wireless in the illustrative examples.

In some illustrative embodiments, program code618may be downloaded over a network to persistent storage608from another device or data processing system through computer readable signal media626for use within data processing system600. For instance, program code stored in a computer readable storage medium in a server data processing system may be downloaded over a network from the server to data processing system600. The data processing system providing program code618may be a server computer, a client computer, or some other device capable of storing and transmitting program code618.

Program code618may be downloaded over a network from a remote data processing system to computer readable storage media624in data processing system600. Furthermore, data processing system600may be a server data processing system, and program code618may be downloaded over the network to the remote data processing system for use in another computer readable storage media in the remote data processing system.

As another example, a storage device in data processing system600is any hardware apparatus that may store data. Memory606, persistent storage608, and computer readable media620are examples of storage devices in a tangible form.

Thus, the invention is a method, data processing system, and computer program product for generating a route. A beginning location is received. A set of preferences for generating a set of routes is received. A set of routes is generated based upon the set of preferences, wherein each route in the set of routes starts and ends at the beginning location, and wherein at least a portion of a specified route in the set of routes does not overlap any other portion of the specified route in the set of routes.

One or more of the illustrative embodiments generate routes based on a beginning location and a set of preferences. The illustrative embodiments may provide an effective process for generating routes that allow a user to return to a starting location. These results may save time because a user will not have to spend time exploring an area to determine routes that meet the user's preferences.