Map-based searching utilizes location information to identify entities such as businesses or photographs that are within a desired radius of a user or specified location or within a drawn boundary. The businesses and photographs may have associated metadata containing geospatial coordinates that are compared to the specified location to determine a distance or determine if they are within the drawn boundary. Some methods use the distance to filter out entities outside the desired radius. This method of identifying entities is fairly primitive and requires the entities to have location metadata.
A computer implemented method includes receiving a selection of a cartographic search boundary via a user display interface map, obtaining cartographic candidate boundaries corresponding to stored information files, comparing the cartographic search boundary to the cartographic candidate boundaries, selecting stored information files with cartographic candidate boundaries matching the cartographic search boundary, and displaying representations of selected stored information files.
In the following description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific embodiments which may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that structural, logical and electrical changes may be made without departing from the scope of the present invention. The following description of example embodiments is, therefore, not to be taken in a limited sense, and the scope of the present invention is defined by the appended claims.
The functions or algorithms described herein may be implemented in software in one embodiment. The software may consist of computer executable instructions stored on computer readable media or computer readable storage device such as one or more non-transitory memories or other type of hardware-based storage devices, either local or networked. Further, such functions correspond to modules, which may be software, hardware, firmware or any combination thereof. Multiple functions may be performed in one or more modules as desired, and the embodiments described are merely examples. The software may be executed on a digital signal processor, ASIC, microprocessor, or other type of processor operating on a computer system, such as a personal computer, server or other computer system, turning such computer system into a specifically programmed machine.
The functionality can be configured to perform an operation using, for instance, software, hardware, firmware, or the like. For example, the phrase “configured to” can refer to a logic circuit structure of a hardware element that is to implement the associated functionality. The phrase “configured to” can also refer to a logic circuit structure of a hardware element that is to implement the coding design of associated functionality of firmware or software. The term “module” refers to a structural element that can be implemented using any suitable hardware (e.g., a processor, among others), software (e.g., an application, among others), firmware, or any combination of hardware, software, and firmware. The term, “logic” encompasses any functionality for performing a task. For instance, each operation illustrated in the flowcharts corresponds to logic for performing that operation. An operation can be performed using, software, hardware, firmware, or the like. The terms, “component,” “system,” and the like may refer to computer-related entities, hardware, and software in execution, firmware, or combination thereof. A component may be a process running on a processor, an object, an executable, a program, a function, a subroutine, a computer, or a combination of software and hardware. The term, “processor,” may refer to a hardware component, such as a processing unit of a computer system.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computing device to implement the disclosed subject matter. The term. “article of manufacture,” as used herein is intended to encompass a computer program accessible from any computer-readable storage device or media. Computer-readable storage media can include, but are not limited to, magnetic storage devices, e.g., hard disk, floppy disk, magnetic strips, optical disk, compact disk (CD), digital versatile disk (DVD), smart cards, flash memory devices, among others. In contrast, computer-readable media, i.e., not storage media, may additionally include communication media such as transmission media for wireless signals and the like.
Prior map-based searching utilizes location information to identify entities, such as businesses or photographs, that are within a desired radius of a user or specified location. Distance is used to remove entities outside the desired radius or drawn boundary. The use of distance to specify a search area is limiting and does not provide flexibility in limiting searches to geographic areas that are not circular in nature. The results of the search are also limited to comparing specific addresses associated with entity metadata to a distance from a center or boundary of a search area.
An improved geographic search provides an ability to specify a flexible cartographic search boundary and identify information files that have associated cartographic candidate boundaries matching the cartographic search boundary. The use of the cartographic search boundary provides a graphical mechanism for searching for information files. The use of cartographic candidate boundaries for or derived from information in the information files provides the ability to search based on geographical affinity of the information files to the search boundary. The candidate boundaries may be based on geographic metadata associated with the information files or derived from information within the information files.
While photographs commonly have location metadata and are easy to identify relative to a location, other types of files, such as documents, spreadsheets, and presentations may not commonly have associated metadata files with location information. However, these other type of files may include information within the file, as opposed to within metadata associated with the file, corresponding to a location. Such information in the file may include addresses and descriptions of entities whose locations can be determined. The files themselves can be searched while performing a geographic search to obtain the location determining information, referred to as cartographic information from which cartographic candidate boundaries may be determined. In further examples, metadata derived from the information in the files may be generated prior to searching and used during the search to facilitate the graphical search.
The search boundary, also referred to as a perimeter, may be a circle, oval, polygon or other meandering shape and may be manipulated by dragging, resizing, or otherwise edited. In one example, the search boundary may be generated from addresses in a specified contact list, with the search boundary drawn to encompass all addresses or even to exclude outliers outside a specified threshold distance from a specified center within the boundary.
Cartographic candidate boundaries corresponding to stored information files are obtained at operation 120. Cartographic information from which candidate boundaries may be determined, may be included in metadata of the stored information files or derived from information within the files, such as address information or points of interest described within the files. Locations of businesses and areas having associated locations may be used to identify the cartographic information. The candidate boundaries have an area greater than zero, and may be defined by a series of latitude and longitude points defining a triangle mesh in one example.
The cartographic search boundaries are compared at operation 130 to the cartographic candidate boundaries. As noted above, the candidate boundaries may be represented by candidate triangle meshes which may be compared using graphics processors to the search boundaries that are represented in the same manner to determine an amount of overlap or intersection.
Stored information files with cartographic candidate boundaries matching the cartographic search boundary are selected at operation 140. Matching in one example comprises determining a ratio of overlapping area of each result boundary with the search boundary. In a further example, comparing and matching the cartographic search boundary to the cartographic candidate boundaries includes identifying elements in an information file referencing entities that are within the search boundary. The more elements found, the greater the affinity. A threshold number of such elements may be used to perform the match, or all information files having matching elements may be selected and ranked based on the number of matching elements. A maximum number of information files may be specified to limit the number of files selected as matching.
Operation 150 displays representations of the selected stored information files. The representations may be results displayed on a map as icons within or outside the cartographic search boundary and may also include a list ranked based on affinity. The affinity may be based on a percentage of intersection of search boundary with each result boundary or based on a closest to a geometric center of search boundary or weighted combination of both. Icons may be displayed on the map positioned at the geometric center of the corresponding candidate boundary or at an associated address. The list may include file names with or without icons and may be color coded based on affinity.
In one example, obtaining cartographic candidate boundaries at operation 120 includes extracting cartographic information from the stored information files and generating the corresponding cartographic result boundaries from the extracted cartographic information. The cartographic information extracted from the files may include an address. The corresponding result boundary comprises a perimeter of property corresponding to the address.
In another example, the extracted cartographic information may include a location with a known boundary, referred to as a designated entity. The corresponding candidate boundary comprises a perimeter of the designated entity.
In one example a number of cartographic candidate boundaries obtained at operation 120 may be limited to a particular storage location, such as a folder or storage area of cloud-based storage containing information files. Boolean searches may be applied to limit the search space.
There are various practical applications that may utilize the improved geographic searching. In one example, a restaurant may aggregate calls for delivery in a spreadsheet type of information file. The addresses in the information file associated with the calls may be used to determine a search boundary that encompasses the corresponding candidate boundaries corresponding to the addresses. That search boundary may be used as a filter for identifying candidate customers living within the search boundary by searching a database of dwellings.
A cartographic search boundary 410 is shown with candidate boundaries from
Candidate boundaries 335, 337, and 340 are shown as being within the search boundary 410. Since the search boundary 410 completely overlaps each of the candidate boundaries 335, 337, and 340, these candidate boundaries will be ranked higher than candidate boundaries 336 and 339, which partially overlap the search boundary 410. Candidate boundary 338 lies completely outside the search boundary and will be ranked lowest.
Candidate boundary 340 has a geometric center 420, which is very close to the search boundary geometric center 415. The other candidate boundaries 335 and 337 have geographic centers 425 and 430 respectively, that are further from the search boundary geographic center 415 and will be ranked lower. A list of ranked results 440 may also be displayed by file name.
In the example shown at 400, the candidate files are ranked by candidate boundary geometric center distance from the geometric center of the search boundary 410.
In further examples, the percentage of overlap may be used. In a percentage of overlap ranking, boundaries 335 and 340 appear to have the most area within the search boundary 410 and would be ranked highest. A weighted combination of geometric center distance and percentage overlap may be used in further examples. Each example may also first prioritize those candidate boundaries subsumed within the search boundary, ranking those first and then adding in others not so subsumed.
In one example, the results 500 may include a list 545 of the file names with corresponding icons having the same reference numbers as the icons on the map 505. In this example, only the icons and file names within the search boundary 510 are included in the list 545. In further examples, icons 535 and 540 may also be included in the list 545. The icons may be linked to the files to open the files using selected applications. The icons in the list may alternatively be used to open the files with the icons on the map useable to show the corresponding candidate boundary or even zoom in on the candidate boundary. The map 505 may also be zoomable.
One example computing device in the form of a computer 600 may include a processing unit 602, memory 603, removable storage 610, and non-removable storage 612. Although the example computing device is illustrated and described as computer 600, the computing device may be in different forms in different embodiments. For example, the computing device may instead be a smartphone, a tablet, smartwatch, smart storage device (SSD), or other computing device including the same or similar elements as illustrated and described with regard to
Although the various data storage elements are illustrated as part of the computer 600, the storage may also or alternatively include cloud-based storage accessible via a network, such as the Internet or server-based storage. Note also that an SSD may include a processor on which the parser may be run, allowing transfer of parsed, filtered data through I/O channels between the SSD and main memory.
Memory 603 may include volatile memory 614 and non-volatile memory 608. Computer 600 may include—or have access to a computing environment that includes—a variety of computer-readable media, such as volatile memory 614 and non-volatile memory 608, removable storage 610 and non-removable storage 612. Computer storage includes random access memory (RAM), read only memory (ROM), erasable programmable read-only memory (EPROM) or electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD ROM), Digital Versatile Disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium capable of storing computer-readable instructions.
Computer 600 may include or have access to a computing environment that includes input interface 606, output interface 604, and a communication interface 616. Output interface 604 may include a display device, such as a touchscreen, that also may serve as an input device. The input interface 606 may include one or more of a touchscreen, touchpad, mouse, keyboard, camera, one or more device-specific buttons, one or more sensors integrated within or coupled via wired or wireless data connections to the computer 600, and other input devices. The computer may operate in a networked environment using a communication connection to connect to one or more remote computers, such as database servers. The remote computer may include a personal computer (PC), server, router, network PC, a peer device or other common data flow network switch, or the like. The communication connection may include a Local Area Network (LAN), a Wide Area Network (WAN), cellular, Wi-Fi, Bluetooth, or other networks. According to one embodiment, the various components of computer 600 are connected with a system bus 620.
Computer-readable instructions stored on a computer-readable medium are executable by the processing unit 602 of the computer 600, such as a program 618. The program 618 in some embodiments comprises software to implement one or more methods described herein. A hard drive, CD-ROM, and RAM are some examples of articles including a non-transitory computer-readable medium such as a storage device. The terms computer-readable medium, machine readable medium, and storage device do not include carrier waves or signals to the extent carrier waves and signals are deemed too transitory. Storage can also include networked storage, such as a storage area network (SAN). Computer program 618 along with the workspace manager 622 may be used to cause processing unit 602 to perform one or more methods or algorithms described herein.
1. A computer implemented method includes receiving a selection of a cartographic search boundary via a user display interface map, obtaining cartographic candidate boundaries corresponding to stored information files, comparing the cartographic search boundary to the cartographic candidate boundaries, selecting stored information files with cartographic candidate boundaries matching the cartographic search boundary, and displaying representations of selected stored information files.
2. The method of example 1 wherein obtaining cartographic candidate boundaries includes extracting cartographic information from the stored information files and generating the corresponding cartographic candidate boundaries from the extracted cartographic information.
3. The method of example 2 wherein the cartographic information includes an address, and wherein the candidate boundary comprises a perimeter of property corresponding to the address.
4. The method of example 2 wherein the cartographic information includes a designated entity having a known boundary.
5. The method of example 2 wherein the cartographic information includes metadata of the stored information files.
6. The method of example 1 wherein matching includes determining a ratio of overlapping area of each candidate boundary with the search boundary.
7. The method of example 1 wherein the cartographic search boundary includes a user drawn perimeter on a displayed map.
8. The method of example 1 wherein the cartographic search boundary includes a polygon.
9. The method of example 1 wherein obtaining cartographic candidate boundaries corresponding to stored information files includes receiving a selection of information files to search and accessing the cartographic candidate boundaries from the selection of information files.
10. The method of example 9 wherein receiving a selection of information files to search includes receiving a query and applying the query to stored information files to select the information files to search.
11. The method of example 1 wherein displaying representations of selected stored information files includes generating a list of the selected stored information files in order of boundary affinity.
12. The method of example 11 wherein boundary affinity is calculated as a percentage of intersection of the boundaries.
13. The method of example 11 wherein boundary affinity is calculated as a function of distance between geometric centers of the boundaries.
14. The method of example 1 wherein displaying representations of selected stored information files includes displaying an icon positioned at a geocentric center of its corresponding boundary on the map.
15. A machine-readable storage device has instructions for execution by a processor of a machine to cause the processor to perform operations to perform any of the methods of examples 1-14.
20. A device includes a processor and a memory device coupled to the processor and having a program stored thereon for execution by the processor to perform operations to perform any of the methods of examples 1-14.
Although a few embodiments have been described in detail above, other modifications are possible. For example, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. Other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Other embodiments may be within the scope of the following claims.
Number | Name | Date | Kind |
---|---|---|---|
7076741 | Miyaki | Jul 2006 | B2 |
8898173 | Badoiu | Nov 2014 | B1 |
8996305 | Kesar et al. | Mar 2015 | B2 |
9665597 | Haitani et al. | May 2017 | B2 |
10445914 | Ofstad et al. | Oct 2019 | B2 |
20040211071 | Su | Oct 2004 | A1 |
20130159276 | Nagaralu | Jun 2013 | A1 |
20140002489 | Sauder et al. | Jan 2014 | A1 |
20140064031 | Bourgeois | Mar 2014 | A1 |
20140297575 | Rapoport et al. | Oct 2014 | A1 |
20150103407 | Chen | Apr 2015 | A1 |
20150153933 | Filip et al. | Jun 2015 | A1 |
20180082471 | Rodriguez | Mar 2018 | A1 |
20200019285 | Leahy, Jr. | Jan 2020 | A1 |
20200175075 | Makhija | Jun 2020 | A1 |
20200394662 | Lester et al. | Dec 2020 | A1 |
20220164364 | Funk | May 2022 | A1 |
Number | Date | Country |
---|---|---|
202014010887 | Jan 2017 | DE |
Entry |
---|
“Browse photos by location on iPhone”, https://web.archive.org/web/20220225070402/https:/support.apple.com/en-in/guide/iphone/iph390138909/ios, Feb. 25, 2022, 3 Pages. |
Daniyal, Malik, “Google Maps Adds A Sorting Filter In Photos Section—Most Recent Pictures Will Appear First!”, Retrieved from: https://www.digitalinformationworld.com/2019/04/google-maps-sorting-filter-latest-photos-and-videos.html, Apr. 3, 2019, 6 Pages. |
“International Search Report and Written Opinion issued in PCT Application No. PCT/US23/012976”, Mailed Date: May 12, 2023, 10 Pages. |
Number | Date | Country | |
---|---|---|---|
20230376510 A1 | Nov 2023 | US |