TECHNIQUES TO MANAGE COLOR REPRESENTATIONS FOR A DIGITAL MAP

- Microsoft

Techniques to manage color representations for a digital map are described. A method may comprise receiving category information having multiple categories defined for a geographic area of a digital map, each of the multiple categories having a category value. The method may further comprise selecting at least one color to represent two or more categories of the multiple categories. The method may still further comprise generating, by circuitry, an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories. Other embodiments are described and claimed.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
RELATED CASES

This application claims the benefit of, and priority to, U.S. Provisional Patent Application 61,876,100 titled “Techniques to Manage Map Information” filed on Sep. 10, 2013, the entirety of which is hereby incorporated by reference.

BACKGROUND

Digital maps are becoming a universal platform for conveying map information representing locations of people, places, objects and events. As more map information is presented on a digital map, it becomes necessary to ensure the map information is presented to a user in a meaningful way. Further, digital maps are becoming more interactive to allow a user to manipulate a digital map to view particular map items of interest. In addition, the sheer volume of map information consumes significant computing and communications resources. As a result, enhanced techniques are needed to manage and manipulate a digital map to efficiently convey map information.

SUMMARY

The following presents a simplified summary in order to provide a basic understanding of some novel embodiments described herein. This summary is not an extensive overview, and it is not intended to identify key/critical elements or to delineate the scope thereof. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.

Embodiments are generally directed to enhanced techniques to manage digital maps. Some embodiments are particularly directed to enhanced techniques to manage map information for a digital map in an efficient and effective manner to facilitate consumption by a user.

In one embodiment, a map application may comprise a map color component arranged to provide map views with a range of colors that represent multiple categories for a given location. For instance, a digital map may provide regions with blended colors, with each color representing a different category assigned to a particular region. The blending effect provides a high level of granularity for conveying nuanced information about a region.

To the accomplishment of the foregoing and related ends, certain illustrative aspects are described herein in connection with the following description and the annexed drawings. These aspects are indicative of the various ways in which the principles disclosed herein can be practiced and all aspects and equivalents thereof are intended to be within the scope of the claimed subject matter. Other advantages and novel features will become apparent from the following detailed description when considered in conjunction with the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of an apparatus to manage digital maps.

FIG. 2 illustrates embodiments of a first region.

FIG. 3 illustrates an embodiment of a second region map.

FIGS. 4A-B illustrate embodiments of a third region map.

FIGS. 5A-B illustrate embodiments of a fourth region map.

FIGS. 6A-C illustrate embodiments of a color ramp for a digital map.

FIG. 7 illustrates embodiments of a first logic flow for a digital map.

FIG. 8 illustrates an embodiment of a second logic flow for a digital map.

FIG. 9 illustrates an embodiment of a third logic flow for a digital map.

FIG. 10 illustrates an embodiment of a fourth logic flow for a digital map.

FIG. 11 illustrates an embodiment of a centralized system for the apparatus.

FIG. 12 illustrates an embodiment of a distributed system for the apparatus.

FIG. 13 illustrates an embodiment of a computing architecture.

FIG. 14 illustrates an embodiment of a communications architecture.

DETAILED DESCRIPTION

Embodiments are generally directed to enhanced techniques to manage digital maps. Some embodiments are particularly directed to enhanced techniques to manage map information for a digital map in an efficient and effective manner to facilitate consumption by a user. More particularly, embodiments may be utilize one or more colors, color variants, color shading and/or blended colors to represent multiple categories of data associated with a geographic area of a digital map. As a result, the embodiments can improve affordability, scalability, modularity, extendibility, or interoperability for an operator, device or network. Other advantages and use scenarios apply as well.

Embodiments may manage color representations for a digital map. In one embodiment, a method may comprise receiving category information having multiple categories defined for a geographic area of a digital map, each of the multiple categories having a category value. The method may further comprise selecting at least one color to represent two or more categories of the multiple categories. The method may still further comprise generating, by circuitry, an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories. Other embodiments are described and claimed.

With general reference to notations and nomenclature used herein, the detailed descriptions which follow may be presented in terms of program procedures executed on a computer or network of computers. These procedural descriptions and representations are used by those skilled in the art to most effectively convey the substance of their work to others skilled in the art.

A procedure is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. These operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It proves convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to those quantities.

Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary, or desirable in most cases, in any of the operations described herein which form part of one or more embodiments. Rather, the operations are machine operations. Useful machines for performing operations of various embodiments include general purpose digital computers or similar devices.

Various embodiments also relate to apparatus or systems for performing these operations. This apparatus may be specially constructed for the required purpose or it may comprise a general purpose computer as selectively activated or reconfigured by a computer program stored in the computer. The procedures presented herein are not inherently related to a particular computer or other apparatus. Various general purpose machines may be used with programs written in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description given.

Reference is now made to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. It may be evident, however, that the novel embodiments can be practiced without these specific details. In other instances, well known structures and devices are shown in block diagram form in order to facilitate a description thereof. The intention is to cover all modifications, equivalents, and alternatives consistent with the claimed subject matter.

FIG. 1 illustrates a block diagram for an apparatus 100. In one embodiment, the apparatus 100 may comprise a computer-implemented apparatus 100 having a software map application 120 comprising one or more components 122-a. Although the apparatus 100 shown in FIG. 1 has a limited number of elements in a certain topology, it may be appreciated that the apparatus 100 may include more or less elements in alternate topologies as desired for a given implementation.

It is worthy to note that “a” and “b” and “c” and similar designators as used herein are intended to be variables representing any positive integer. Thus, for example, if an implementation sets a value for a=5, then a complete set of components 122-a may include components 122-2, 122-2, 122-3, 122-4 and 122-5. The embodiments are not limited in this context.

The apparatus 100 may comprise the map application 120. The map application 120 may be generally arranged to manage a digital map 124. A map is a visual representation of an area. The digital map 124 may comprise a digital or electronic form of a map. The digital map 124 may be used to depict geography. Although some embodiments discuss maps in terms visualizing physical geographical locations, the digital map 124 may also be used to represent any space, real or imagined, such as brain mapping, DNA mapping and extraterrestrial mapping. Embodiments are not limited in this context.

In one embodiment, the map information 112 may be provided by a same electronic device implementing the apparatus 100. In one embodiment, the map information 112 may be provided by a different electronic device (e.g., a server) from the one implementing the apparatus 100 (e.g., a client).

The map application 120 may comprise any software application capable of creating, modifying, annotating, managing or otherwise using map information 112 for the digital map 124. In one embodiment, the map application 120 may comprise or be implemented as a stand-alone productivity application, or an add-in for a productivity application. A productivity application may comprise a software application program designed to perform a specific set of functions for a knowledge worker. A productivity application typically operates to create, modify, send, receive, or otherwise manage content for one or more documents. Examples for productivity applications may include without limitation a productivity suite of inter-related client applications, server applications and/or web services, designed for a particular operating system, such as a MICROSOFT® OFFICE productivity suite for MICROSOFT WINDOWS®, made by Microsoft Corporation, Redmond, Wash. Examples for productivity applications may include without limitation MICROSOFT WORD, MICROSOFT EXCEL®, MICROSOFT POWERPOINT®, MICROSOFT OUTLOOK®, MICROSOFT ACCESS®, MICROSOFT INFOPATH®, MICROSOFT ONENOTE®, MICROSOFT PROJECT, MICROSOFT PUBLISHER, MICROSOFT SHAREPOINT® WORKSPACE, MICROSOFT VISIO®, MICROSOFT OFFICE INTERCONNECT, MICROSOFT OFFICE PICTURE MANAGER, MICROSOFT SHAREPOINT DESIGNER, and MICROSOFT LYNC. Examples for server applications may include without limitation MICROSOFT SHAREPOINT SERVER, MICROSOFT LYNC SERVER, MICROSOFT OFFICE FORMS SERVER, MICROSOFT OFFICE GROOVE® SERVER, MICROSOFT OFFICE PROJECT SERVER, MICROSOFT OFFICE PROJECT PORTFOLIO SERVER, and MICROSOFT OFFICE PERFORMANCEPOINT® SERVER. It also is to be appreciated that embodiments may implement other types of applications in addition to productivity applications which are consistent with the described embodiments. The embodiments are not limited to these examples.

The map application 120 may be capable of communicating with a network device, such as a server providing network services, such as a web service. Examples for web services may include without limitation MICROSOFT WINDOWS LIVE®, MICROSOFT OFFICE WEB APPLICATIONS, MICROSOFT OFFICE LIVE, MICROSOFT LIVE MEETING, MICROSOFT OFFICE PRODUCT WEB SITE, MICROSOFT UPDATE SERVER, and MICROSOFT OFFICE 365.

Referring again to FIG. 1, the map application 120 may interoperate with other components, applications and/or devices to receive and/or retrieve as input a set of control directives 100, map information 112 for a digital map 124, and category information 130 for the digital map 124. The map application 120 may process map information 112 and category information 130 for a given digital map 124 in accordance with the control directives 110, and output an annotated digital map 140. The annotated digital map 140 may comprise the digital map 124 annotated with one or more colors, color variants, color shades and/or blended colors to represent multiple categories as defined by the category information 130.

The control directives 110 may be represent control words or commands to control various components 122-1, 122-2 and 122-3. The control directives 110 may be received from an input device, such as a touch screen, voice commands, or pointing device. The input device may be controlled manually by a user or automatically from another application, component and/or device. The control directives 110 may be used to convey control words or commands to control the map application 120, such as selecting configuration parameters, operational parameters, performance parameters, formatting parameters, security parameters, features, colors, color gradients (color ramps), user profiles, and other configurable information associated with the map application 120. Embodiments are not limited in this context.

The map information 112 may represent any digital information associated with a digital map 124. Examples of map information 112 may include without limitation geographical coordinates, boundaries, points of interest, metadata, map objects, icons, and so forth. In one embodiment, map information 112 for the digital map 124 may be part of, or originate from, a geographic information system (GIS). A GIS is the merging of cartography, statistical analysis, and computer science technology. A GIS is a system designed to capture, store, manipulate, analyze, manage, and present all types of geographical data. The GIS may store, generate and/or serve map information 112 for a digital map 124 to a client system, such as the map application 120. The GIS may store, generate and/or serve the map information 112 as a continuous stream, discrete sections (e.g., map tiles), or some other desired form. Other geoinformatic systems and/or data may be used as well. Embodiments are not limited in this context.

The category information 130 may represent any defined categories and/or categorical values that may be associated with a defined geographic area of a digital map 124. Examples of category information 130 may include without limitation business information, entity information, enterprise information, sales information, marketing information, political party affiliations, voting information, demographic information, numerical information, temporal information, and so forth, just to name a few. Embodiments are not limited in this context.

The map application 120 may comprise a map manager component 122-1. The map manager component 122-1 may manage a digital map 124. This may include operations such as retrieving map information 112 for a digital map 124 from a GIS, updating map information 112 for a digital map 124 from the GIS, rendering a digital map 124 for a user interface or web browser, presenting a digital map 124 on an electronic display, storing a digital map 124, storing color layers for a digital map 124, generating metadata for a digital map, and other map management operations.

The map application 120 may comprise a map color component 122-2. The map color component 122-2 may be generally arranged to provide map views with a range of colors that represent multiple categories for a given location. For instance, the digital map 124 may provide regions with different types of colors, shades of colors and/or blended colors, with each color type representing two or more categories assigned to a particular geographic region or area of the digital map 124. The blending effect provides a high level of granularity for conveying nuanced information about a particular region. The map color component 122-2 provides the capability of switching between shading options to represent multiple categories for a given map. The map color component 122-2 also provides new shading options. The map color component 122-2 further provides smart defaults for the various shading options for user convenience. The map color component 122-2 may be described in more detail with reference to FIG. 3-4.

The map color component 122-2 may also be generally arranged to manage a color gradient or color ramp for use by a digital map 124. A color ramp may include a range of color types that may be used for conveying category information for a digital map 124. The map color component 122-2 may be described in more detail with reference to FIGS. 6A-C.

The map application 120 may comprise a map generator component 122-3. The map generator component 122-3 may be generally arranged to generate, annotate, modify, store or otherwise manage a digital map 124. The map generator component 122-3 may receive the map information from a server, such as a GIS server, or retrieve stored map information 112 from a local datastore. The map generator component 122-3 may generate and/or annotate a digital map 124 with selected colors and color shades for a geographic region of the digital map 124 as determined by the map color component 122-2. The map generator component 122-3 may render the digital map 124 in a graphical user interface (GUI) or a web browser for presentation on an electronic display.

Although various embodiments may utilize different color types, it may be appreciated that non-color types (e.g., monochromatic) may be used as well. For example, tonal or shading effects utilizing black/white or gray scale tones or lines (e.g., cross-hatching or hatching) may be used to convey information for multiple categories on a digital map as well. Embodiments are not limited in this context.

FIG. 2 illustrates an example of a digital map 200. The digital map 200 is a particular form of digital map 124 presenting regional information for a geographical area, such as individual states within the United States of America (USA). By way of example, the region map 300 presents regional information for multiple states across the entire USA.

Choosing how to color various regions of the digital map 200 is relatively straightforward when regional information is limited to a single category. Red state/blue state election maps are a quintessential example. Red state/blue state election maps may include color information for each state, such as assigning a color red to a Republican state and color blue for a Democratic state. As shown in FIG. 2, the digital map 200 may illustrate Democratic states 202 with black (representing the color blue) and Republican states 204 with gray (representing the color red). For each geographic location of a state, with a single category of “political party affiliation,” the color assigned to a state quickly conveys regional information to a viewer, such as whether a given state has a category value of “Republican” or “Democrat.”

When a location is assigned a single category, the map color component 122-2 may assign colors with limited shading, or in some cases, without any shading at all. For example, a state that was won by Republicans may be assigned a full red color (without shading) regardless of a margin of victory. However, a state that was won by Republicans may be assigned a lighter shade of red if Republicans only won by a narrow margin (e.g., shading based on category value within location). For instance, assume the map color component 122-2 needs to assign colors to the digital map 200 utilizing category information as shown in Table 1, as follows:

TABLE 1 State Party NY D FL R NJ D

The category information of Table 1 provides locations representing the three states of New York, Florida and New Jersey. The category information also provides a single category for each state. The single category is political party affiliation, with values indicating either Democratic or Republican.

The map color component 122-2 may select a particular color to represent each state based on comparison of category values assigned to each state. For instance, assume a blue color gradient is assigned to the Democratic Party, and a red color gradient is assigned to the Republican Party. In this instance, the Democratic states 202 of Washington, Oregon and California may be assigned a color blue (e.g., represented by black in FIG. 2), while the Republican states of North Carolina, South Carolina and Georgia may be assigned a color red (e.g., represented by gray in FIG. 2). As there is a single category for each location, color shading within each color is not necessary to visually convey category information. A single color is sufficient for a viewer to understand whether a state has voted Democrat or Republican.

FIG. 3 illustrates an example of a region map 300. The region map 300 is a particular form of digital map 124 presenting regional information for a geographical area, such as individual states within the USA. By way of example, the region map 300 presents regional information for multiple states within a southeast region of the USA.

Choosing how to color the region map 300 becomes more difficult relative to the digital map 200, particularly when the data includes multiple categories for a location. For example, if category information includes Democratic, Republican, and Independent votes for each state, then there may be a need to apply color shades to each state in a more meaningful fashion to convey to a viewer both categories of “political party affiliation” and “number of votes” for each state.

When a single geographic location is assigned multiple categories, it becomes more difficult for a single color to visually convey separate category values for each category assigned to a location. The map color component 122-2 may solve these and other problems by utilizing a color gradient having multiple shades of a given color. In some cases, a particular shade may reflect a particular category. In other cases, a particular shade may reflect a blending of multiple categories. In either case, a combination of color and color shades within the color may be used to convey regional information from multiple categories assigned to a single location.

Prior to shade selection, the map color component 122-2 may generate or retrieve a color gradient for the digital map 124 or region map 300. The map color component 122-2 may assign varying shades of colors from the color gradient to the location in a way that represents information from multiple categories assigned to the location. Region map 300 illustrates some examples of shades assigned from a color gradient having varying shades for the color grey.

The map color component 122-2 may select a shade of a color gradient based on category information for a location. For instance, assume the map color component 122-2 needs to assign colors to the region map 300 representing states within the USA. Further assume the map color component 122-2 receives as input category information 130 as shown in Table 2, as follows:

TABLE 2 State Party # Votes NJ Ind 7 NJ Rep 2 NJ Dem 10 PA Ind 3 PA Rep 2 PA Dem 10

The category information of Table 2 has three columns. The first column includes data representing the various states of New Jersey and Pennsylvania. The second and third columns include data representing multiple categories for each of the states of New Jersey and Pennsylvania. Column 2 indicates a first category of political party affiliation. Column 3 indicates a second category of a number of votes received for each political party in a recent election.

The map color component 122-2 may select a particular shade to represent each state based on comparison of values across the multiple categories assigned to each state. For instance, assume a blue color gradient is assigned to the Democratic Party, a red color gradient is assigned to the Republican Party, and a green color gradient is assigned to the Independent party. When the map color component 122-2 evaluates the first category, it may assign a color (R/B/G) to each of the values representing a political party. In this case, the first category indicates that there are 3 political parties for each state. As such, the map color component 122-2 may either: (1) select a blending of the three colors (R/B/G) to create a blended shade representing the presence of three political parties within a state; (2) select a color (R/B/G) representing a sub-region of each state associated with each political party; or (3) evaluate other categories prior to color assignment to the location.

Assume the map color component 122-2 is configured for the third option. The map color component 122-2 may evaluate the second category of number of votes for each political party. In this case, the political party with a greatest number of votes for both states is the Democratic Party. As such, the map color component 122-2 may select a blue color gradient for color assignment. However, simply assigning both states a same color blue (or shade of blue) would not convey the number of votes received by the other political parties. To represent this information, the map color component 122-2 may compare values for number of votes received by the Republican Party, which in this case is 2 for each state. As that does not provide any differentiation between states, it may be eliminated from consideration in color selection. In comparing values for number of votes received by the Independent party, the map color component 122-2 receives values of 7 and 3 for New Jersey and Pennsylvania, respectively. As this does provide differentiation, the map color component 122-2 may select different shades of blue to represent this difference. For instance, the map color component 122-2 may select a first shade of blue for New Jersey and a second shade of blue for Pennsylvania as both are predominantly democratic. Further, the map color component 122-2 may make the first shade lighter or darker than the second shade in order to represent the variation in number of Independent party votes. In this manner, the region map 300 may quickly provide a viewer information from multiple categories for a single location based exclusively on selective color shading, which in turn, corresponds to two or more of the multiple categories assigned to the location from the category information of Table 2.

A particular shade may be selected from a color gradient based on various factors. For instance, one end of the color gradient may represent a maximum value of a category range (or multiple category ranges), while the other end of the color gradient may represent a minimum value of the category range (or multiple category ranges). Intermediate shades along the color gradient may then be scaled based on the maximum and minimum values. The map color component 122-2 may assign values and scales suitable for a particular implementation of a given digital map 124.

FIGS. 4A-B illustrate variations of a region map 400. Region map 400 illustrates various regions with an associated map data set (e.g., Table 2) represented by a clustered column scenario. A region view 410 illustrates election voting in New Jersey. A region view 420 illustrates election voting in New York.

One challenge with region charts is that it is difficult to split up a region within the region map 300. In column charts, when there are several categories at a location, the map application 120 could split the column into either stacked or clustered. Similarly for bubbles, the map application 120 can split the bubble into pie slices.

As shown in FIGS. 4A-B, the region map 400 illustrates examples for how data may look in a clustered column scenario for election voting in New Jersey. A first operation is producing the column values for columns, which are determined by an aggregation function. Two region views 410, 420 of the region map 400 may illustrate examples of a clustered column scenario for the states of New Jersey and New York.

The region view 410 of the region map 400 may illustrate multiple categories for the state of New Jersey using a clustered column scenario. The region view 410 may include columns 412, 414 and 416, with each column representing a different political party affiliation, such as Republican, Democratic and Independent, respectively. Each column 412, 414 and 416 may be assigned a corresponding color representing a first category for the state of New Jersey, such as a given political party affiliation, for example. For instance, each column 412, 414 and 416 may be assigned a corresponding color of red, blue and green, respectively, to provide a visual cue or indicator of the political party affiliation. Whenever a second category is associated with the state of New Jersey, such as number of votes, the second category may be represented with a height dimension, where the height corresponds to a number of votes for each political party affiliation.

The region view 420 of the region map 400 may illustrate multiple categories for each of the states of New Jersey and New York using a clustered column scenario. As with the region view 410, the region view 420 may include columns 412, 414 and 416, with each column representing a different political party affiliation, such as Republican, Democratic and Independent, respectively. Each column 412, 414 and 416 may be assigned a corresponding color and height to represent political party affiliation and associated number of votes for the state of New Jersey. Additionally, the region view 420 may include columns 422, 424 and 426. Each column 422, 424 and 426 may also be assigned a corresponding color and height to represent political party affiliation and associated number of votes for the state of New York, in a similar manner as to what was done for New Jersey.

In a clustered column scenario as shown in FIGS. 4A, 4B, it is relatively easy to show multiple categories assigned to a given geographic location, and further, to show comparisons of the multiple categories across multiple geographic locations. For instance, a viewer may quickly ascertain that both New York and New Jersey are predominantly Democratic by visually comparing color and heights of the 3 columns 412, 414 and 416 within the state of New Jersey, and visually comparing color and heights of the 3 columns 422, 424 and 426 within the state of New York. In addition, a viewer may quickly ascertain that New Jersey has fewer Democrats than New York by visually comparing columns 414, 424 of the states of New Jersey and New York, respectively.

In those cases outside of a clustered column scenario, however, it may be difficult to break up the region polygon to show similar information for multiple categories (e.g., the three political parties and number of votes) for one or more geographic regions (e.g., New Jersey, New York) as in the clustered column examples. To convey the same or similar information for a geographic region using only colors or shades of colors, the map color component 122-2 may begin by choosing a base color. Using the previous example, as Democrats seem to be a clear winner for the state of New Jersey, the map color component 122-2 may select blue as a base color for the state of New Jersey. However, assume the category information (e.g., Table 2) indicates that Democrats won by a significant margin as compared to New York. In the clustered columns scenario, a number of votes was shown using a height dimension. Absent this option, the map color component 122-2 may instead select a shade of blue for New York that is darker than a shade of blue for New Jersey to provide a visual indicator that the state of New York has more Democratic votes than the state of New Jersey. The map color component 122-2 may utilize a percentage of total votes to determine the particular shades.

FIGS. 5A-B illustrate variations of a region map 500. Region map 500 illustrates various regions with an associated map data set represented by a clustered column scenario. A region view 410 illustrates election voting in New Jersey. A region view 420 illustrates election voting in New York.

One challenge with region charts is that it is difficult to represent multiple categories within a given geographic region using merely colors, as described with reference to FIGS. 4A, 4B. One potential solution is to represent multiple categories within a geographic region, or across multiple geographic regions, using selective color assignments and shading effects, with different colors and color shadings to convey information for different categories.

As with FIGS. 4A-B, the FIGS. 5A, 5B illustrate a region map 500. The region map 500 may include region views 502, 504 corresponding to the states of New Jersey and New York, respectively. The region views 502, 504 may illustrate differences between political party affiliations, and number of votes for the political party affiliations, using color and color shading selections, as represented using the hatchings and cross-hatchings shown in the region views 502, 504. For instance, the cross-hatchings of the region view 502 may represent assignment of a color blue for a political party affiliation (e.g., Democrats) in New Jersey, and the hatchings of the region view 504 may represent assignment of a shade of the color blue to represent both a political party affiliation (e.g., Democrats) and a number of votes for the political party affiliation in New York. In one embodiment, the selected blue shade may represent a number of votes for the political party affiliation as a relative value, such as relative to the votes for the same political party affiliation in New Jersey, rather than an absolute value.

In selecting colors for New York and New Jersey, the map color component 122-2 may perform three operations. First, the map color component 122-2 may determine a particular aggregation function to use, such as Sum, Average, Max, Min, Count, and so forth. Second, the map color component 122-2 may determine a color for a region based on a set of rules, such as: (a) choose the color of the Max category (based on above) in that region; (b) choose the color of the Min category (based on above) in that region; and/or (c) choose the color of a given category X. Third, the map color component 122-2 may determine a shade of the color to use, such as: (a) a discrete full bleed (e.g., if that category color wins, use it); (b) percentage of the category at the region; (c) value of chosen category compared to global max of all values; and (d) value of chosen category compared to max of that category.

It is worthy to note that cartographers have assigned a separate dimension to the shading process (e.g. political party determined by Max category, but shade determined by population). If the map color component 122-2 keeps a height field well and adds a shading well, the region map 400 may allow for the most dimensions to be viewed at once.

The map color component 122-2 may utilize value, category and time wells. Region layers may have Value, Category, and Time field wells—exactly like Bubble and Column layers. This option supports most of the above scenarios.

The map color component 122-2 may utilize a value field well. A value field well may have similar behavior to a Height or Size field well. It accepts multiple fields, and treats all fields as values. The value field well may have field drop down and aggregation function behavior similar to the Height/Size wells. The value field well may only accept one field if there is a field in category. A “No Aggregation” option in the value field well for region charts may be optionally added or excluded. Similarly, date-time may be optionally added or excluded in the value field well.

The map color component 122-2 may utilize a category field well. The category field well has similar behavior to the category field well. The category field well accepts one field. The category field well is disabled if there are multiple fields in value field well. The category field well treats all fields as categorical data.

The map color component 122-2 may utilize a height field well. The height field well may accept one field. The height field well may treat all fields as values. The height field well may have field drop down and aggregation functions that are similar to the height/size wells.

The map color component 122-2 may utilize a time field well. The time field well may be uniformly implemented.

The map color component 122-2 may allow a user to quickly change chart types. Because there is a 1:1 correspondence between Bubble/Column/Region in their respective field wells, a change chart type may follow a defined set of rules.

FIGS. 6A-C illustrates a color gradient 600 and associated user interface (UI) controls for the map color component 122-2. The map color component 122-2 may determine or retrieve a color gradient 600 (or color gradient) for use in shading by the map color component 122-2. Although color gradient 600 is shown as shades of gray, it may be appreciated that any color base and shades of the color base may be used for a given color ramp assigned to a location and/or category.

After deciding which method is used to determine a color ramp shade, a minimum value is assigned to the left most or bottom color of the color gradient 600 and a maximum value is assigned to the right most or top color of the color gradient 600. All other data values are linearly associated with their color on the color gradient 600. Note that the color ramps will be a continuous linear blend. The color gradient 600 may be mapped to values in a linear fashion. Alternatively, the color gradient 600 may be mapped in a logarithmic fashion or other non-linear mapping techniques.

As shown in FIG. 6A, when there is only one value, the left/bottom shade of the color gradient 600 may be set to 10% brightness of the series full bleed color. The right/top shade of the color gradient 600 may be the full bleed series color. For a one value color gradient 600, a user may choose from different color ramps 600 via the layer settings.

As shown in FIG. 6B, where there are multiple value fields or a field in a given category, various rules may be used to select shading. Some samples are given below, although other rules may be used as well.

A first rule may be set to a discrete full bleed where if a category color wins then it is used. No shades are used, and full bleed is selected.

A second rule may be based on percentage of the category at the region. Percent is calculated as a winner category value at region/sum of category values at region. The Min and Max for each category color ramp will be defined by a global Min “winner” percentage and a global Max “winner” percentage. Thus the Min and Max of each category color ramp will be the same. This implies that some categories may never have their full bleed colors actually shown on the region maps 200, 300, 400 and 500.

A third rule may be to compare a value of chosen category to a global Max of all values. Value is calculated by winner category value in region/global Max category value. This implies that a user cares more about comparing values. Thus the minimum for the ramp will be the minimum “winner” value across all regions, and the maximum for the ramp will be the global maximum “winner” value across all regions. This further implies that some categories may never have their full bleed colors actually shown on the region maps 200, 300, 400 and 500.

A fourth rule may be to compare a value of chosen category to a Max winner of that category. A value is calculated by winner category value in region and/or the category Max winner value. This implies that a user cares more about comparing within categories. Thus the minimum and maximum will be specific to each category. Each category minimum for its ramp will be the category minimum “winner” value. Each category maximum for its ramp will be the category maximum “winner” value. If a category only has one winner value, the category may be assigned the full bleed color (e.g., assume it as Max rather than Min).

A color gradient 600 and/or shading rule may have one or more legends. Each shading rule may have different legends calculated for it. Discrete cases may have normal category colors with no color gradient 600. If a category never wins (e.g., like Independents in the electoral map example), a corresponding entry for the category may be shown in the legend. In cases where there are color ramps and the category never wins, then a full bleed color may be shown for the category without a color gradient and number labels. If a category only has one value for the category color ramp calculation or if the Min of the category ramp is equal to the Max, that color may be shown in the legend with number labels. The aggregation function may be appended to the legend in the one value color ramp scenario.

Both aggregation functions and color ramp calculations will respect zeros, negatives, and nulls. Similar to a heat map, a most negative number will be the Min of the color gradient 600. If a user unchecks an option to show negatives, then negatives will not be used in calculation and Min will start at zero (0).

The map color component 122-2 may be arranged to handle time values as well. With respect to time, the map color component 122-2 may provide an option to calculate color ramp Min and Max based off of the min/max at a time instance or over all of time. The map color component 122-2 may calculate Min and Max of color gradient 600 off of all time, which means colors do not change over time. The actual calculations to determine the values to determine the color gradient 600 are as follows. For discrete, a value is calculated at each time instant. For percent of region, a value is calculated at each time instant. For value of category compared to a global Max, a numerator is taken at each time instant, and a global Max value is set to a global maximum across all time. For value of category compared to category Max, a numerator is taken at each time instant and a category max value is set to a global maximum of “winner” category across all time.

Based on time values, the following visual effects may be implemented. For instant without chunking time values, a region may flash with color and goes away. For instant with chunking, an aggregated chunked region color may stay for a defined time period with aggregated value, and is replaced by a next value in the next time increment. Nothing is shown if data in region does not exist in the next time increment. For persist the last, a region color stays until replaced by a new one. For accumulation, then accumulation is performed.

The map color component 122-2 may surface various UI tools to allow a user to adjust various settings to control shading operations. For instance, a UI tool may be used to adjust color of series. A UI tool may be used for color ramp templates. A UI tool may be used for options to determine shading, such as no shading for different colors, shading for different colors based on color's percentage within region, shading for different colors based on color's value compared to color's maximum value, shading for different colors based on color's value compared to overall maximum value, and so forth. A UI tool may be used to adjust transparency. A UI tool may be used for scaling settings. These are merely a few UI tools, and others may be used as well.

Included herein is a set of flow charts representative of exemplary methodologies for performing novel aspects of the disclosed architecture. While, for purposes of simplicity of explanation, the one or more methodologies shown herein, for example, in the form of a flow chart or flow diagram, are shown and described as a series of acts, it is to be understood and appreciated that the methodologies are not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation.

FIG. 7 illustrates one embodiment of a logic flow 700. The logic flow 700 may be representative of some or all of the operations executed by one or more embodiments described herein. The logic flow 700 may illustrate operations performed by the map application 120.

In the illustrated embodiment shown in FIG. 7, the logic flow 700 may receive category information having multiple categories defined for a geographic area of a digital map, each of the multiple categories having a category value at block 702. For example, a map application 120 may manage a digital map 124. The map application 120 may comprise, among other components, a map manager component 122-1, a map color component 122-2 and a map generator component 122-3. The map manager component 122-1 may receive category information 130 having multiple categories defined for a geographic area of a digital map 124, each of the multiple categories having a category value. An example of category information 130 may be shown in Table 2.

The logic flow 700 may select at least one color to represent two or more categories of the multiple categories at block 704. For example, the map color component 122-2 may select at least one color to represent two or more categories of the multiple categories.

The logic flow 700 may generate an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories at block 706. For example, the map generator component 122-3 may generate an annotated digital map 140, the annotated digital map 140 to comprise the digital map 124 annotated with variations of the at least one color to represent the two or more categories of the multiple categories.

The logic flow 700 may present the annotated digital map on an electronic display at block 708. For example, the map generator component 122-3 may present the annotated digital map 140 in a GUI view for an application program on an electronic display.

FIG. 8 illustrates one embodiment of a logic flow 800. The logic flow 800 may be representative of some or all of the operations executed by one or more embodiments described herein. The logic flow 800 may illustrate operations performed by the map application 120, such as using a base color and a color shade of the base color to represent multiple categories of the category information 130.

In the illustrated embodiment shown in FIG. 8, the logic flow 800 may select a base color for a first category of the multiple categories at block 802. For example, the map manager component 122-1 may receive the map information 112 and the category information 130 for the annotated digital map 114 from a server. Alternatively, the map manager component 122-1 may retrieve the map information 112 and the category information 130 for the annotated digital map 114 from a local datastore. The map color component 122-2 may select a base color for a first category of the multiple categories as defined in the category information 130.

The logic flow 800 may select a color shade for the base color, the color shade of the base color to represent a second category of the multiple categories at block 804. The map color component 122-2 may select a color shade for the base color. The color shade of the base color may represent a second category of the multiple categories as defined in the category information 130.

The logic flow 800 may generate an annotated digital map, the annotated digital map to comprise the digital map annotated with the base color and/or the color shade of the base color to represent the first and second categories at block 806. For example, the map generator component 122-3 may generate an annotated digital map 140, the annotated digital map 140 to comprise the digital map 124 annotated with the base color and/or the color shade of the base color to represent the first and second categories as defined in the category information 130.

The logic flow 800 may present the annotated digital map on an electronic display at block 808. For example, the map generator component 122-3 may present the annotated digital map 140 in a GUI view for an application program on an electronic display.

FIG. 9 illustrates one embodiment of a logic flow 900. The logic flow 900 may be representative of some or all of the operations executed by one or more embodiments described herein. The logic flow 900 may illustrate operations performed by the map application 120, such as using a blended color to represent multiple categories of the category information 130.

In the illustrated embodiment shown in FIG. 9, the logic flow 900 may select a first color for a first category of the multiple categories at block 902. For example, the map color component 122-2 may select a first color for a first category of the multiple categories as defined in the category information 130.

The logic flow 900 may select a second color for a second category of the multiple categories at block 904. For example, the map color component 122-2 may select a second color for a second category of the multiple categories as defined in the category information 130.

The logic flow 900 may blend the first color with the second color to form a blended color to represent both the first and second categories of the multiple categories at block 906. For example, the map color component 122-2 may blend the first color with the second color to form a blended color to represent both the first and second categories of the multiple categories as defined in the category information 130.

The logic flow 900 may generate an annotated digital map, the annotated digital map to comprise the digital map annotated with the blended color to represent the first and second categories at block 908. For example, the map generator component 122-3 may generate an annotated digital map 140, the annotated digital map 140 to comprise the digital map 124 annotated with the blended color to represent the first and second categories as defined in the category information 130.

The logic flow 900 may present the annotated digital map on an electronic display at block 910. For example, the map generator component 122-3 may present the annotated digital map 140 in a GUI view for an application program on an electronic display.

FIG. 10 illustrates one embodiment of a logic flow 1000. The logic flow 1000 may be representative of some or all of the operations executed by one or more embodiments described herein. The logic flow 1000 may illustrate operations performed by the map application 120, such as using a color gradient to select color variants to represent multiple categories of the category information 130.

As shown in FIG. 10, the logic flow 1000 may select the at least one color from a color gradient, with one end of the color gradient to represent a maximum value of a category range or multiple category ranges, and another end of the color gradient to represent a minimum value of the category range or multiple category ranges, with intermediate shades along the color gradient scaled based on the maximum and minimum values, at block 1002. For example, the map color component 122-2 may select the at least one color from a color gradient 600, with one end of the color gradient 600 to represent a maximum value of a category range or multiple category ranges, and another end of the color gradient 600 to represent a minimum value of the category range or multiple category ranges, with intermediate shades along the color gradient 600 scaled based on the maximum and minimum values.

The logic flow 1000 may generate an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories at block 1004. For example, the map generator component 122-3 may generate an annotated digital map 140, the annotated digital map 140 to comprise the digital map 124 annotated with variations of the at least one color to represent the two or more categories of the multiple categories.

The logic flow 1000 may present the annotated digital map on an electronic display at block 1006. For example, the map generator component 122-3 may present the annotated digital map 140 in a GUI view for an application program on an electronic display.

FIG. 11 illustrates a block diagram of a centralized system 1100. The centralized system 1100 may implement some or all of the structure and/or operations for the apparatus 100 in a single computing entity, such as entirely within a single device 1120.

The device 1120 may comprise any electronic device capable of receiving, processing, and sending information for the apparatus 100. Examples of an electronic device may include without limitation an ultra-mobile device, a mobile device, a personal digital assistant (PDA), a mobile computing device, a smart phone, a telephone, a digital telephone, a cellular telephone, eBook readers, a handset, a one-way pager, a two-way pager, a messaging device, a computer, a personal computer (PC), a desktop computer, a laptop computer, a notebook computer, a netbook computer, a handheld computer, a tablet computer, a server, a server array or server farm, a web server, a network server, an Internet server, a work station, a mini-computer, a main frame computer, a supercomputer, a network appliance, a web appliance, a distributed computing system, multiprocessor systems, processor-based systems, consumer electronics, programmable consumer electronics, game devices, television, digital television, set top box, wireless access point, base station, subscriber station, mobile subscriber center, radio network controller, router, hub, gateway, bridge, switch, machine, or combination thereof. The embodiments are not limited in this context.

The device 1120 may execute processing operations or logic for the apparatus 100 using a processing component 1130. The processing component 1130 may comprise various hardware elements, software elements, or a combination of both. Examples of hardware elements may include devices, logic devices, components, processors, microprocessors, circuits, processor circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software elements may include software components, programs, applications, computer programs, application programs, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory web resources, data bus speeds and other design or performance constraints, as desired for a given implementation.

The device 1120 may execute communications operations or logic for the apparatus 100 using communications component 1140. The communications component 1140 may implement any well-known communications techniques and protocols, such as techniques suitable for use with packet-switched networks (e.g., public networks such as the Internet, private networks such as an enterprise intranet, and so forth), circuit-switched networks (e.g., the public switched telephone network), or a combination of packet-switched networks and circuit-switched networks (with suitable gateways and translators). The communications component 1140 may include various types of standard communication elements, such as one or more communications interfaces, network interfaces, network interface cards (NIC), radios, wireless transmitters/receivers (transceivers), wired and/or wireless communication media, physical connectors, and so forth. By way of example, and not limitation, communication media 1112, 1142 include wired communications media and wireless communications media. Examples of wired communications media may include a wire, cable, metal leads, printed circuit boards (PCB), backplanes, switch fabrics, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, a propagated signal, and so forth. Examples of wireless communications media may include acoustic, radio-frequency (RF) spectrum, infrared and other wireless media.

The device 1120 may communicate with other devices 1110, 1150 over a communications media 1112, 1142, respectively, using communications signals 1114, 1144, respectively, via the communications component 1140. The devices 1110, 1150 may be internal or external to the device 1120 as desired for a given implementation.

As shown in FIG. 11, the device 1120 may implement the entire apparatus 100 to access a map database implemented by another device, such as a GIS 1160 implemented by the device 1150. The apparatus 100 may also render the digital map 124 with another device implementing some or all of apparatus 100, such as the device 1110. The digital map 124 may be communicated in any number of ways, such as through a messaging interface (e.g., email, short message service (SMS), multimedia message service (MMS), instant messaging (IM), and so forth), shared network storage space, peer-to-peer communications, web technologies (e.g., a web page), and other communications modalities. The device 1110 may also use apparatus 100 to communicate with the GIS 1160 in a manner similar to the device 1120. The device 1120 may further implement other platform components common to a computing and/or communications device, such as described with reference to FIG. 13.

FIG. 12 illustrates a block diagram of a distributed system 1200. The distributed system 1200 may distribute portions of the structure and/or operations for the apparatus 100 across multiple computing entities. Examples of distributed system 1200 may include without limitation a client-server architecture, a 3-tier architecture, an N-tier architecture, a tightly-coupled or clustered architecture, a peer-to-peer architecture, a master-slave architecture, a shared database architecture, and other types of distributed systems. The embodiments are not limited in this context.

The distributed system 1200 may comprise a client device 1210 and a server device 1250. In general, the client device 1210 and the server device 1250 may be the same or similar to the client device 220 as described with reference to FIG. 2. For instance, the client system 1210 and the server system 1250 may each comprise a processing component 1230 and a communications component 1240 which are the same or similar to the processing component 1130 and the communications component 1140, respectively, as described with reference to FIG. 11. In another example, the devices 1210, 1250 may communicate over a communications media 1212 using communications signals 1214 via the communications components 1240.

The client device 1210 may comprise or employ one or more client programs that operate to perform various methodologies in accordance with the described embodiments. In one embodiment, for example, the client device 1210 may implement a portion of the apparatus 100, such as the map application 120, for example.

The server device 1250 may comprise or employ one or more server programs that operate to perform various methodologies in accordance with the described embodiments. In one embodiment, for example, the server device 1250 may implement a portion of the apparatus 100, such as the GIS 1160, for example. The distributed model may be suitable for sharing map information 112 among multiple devices or users.

FIG. 13 illustrates an embodiment of an exemplary computing architecture 1300 suitable for implementing various embodiments as previously described. In one embodiment, the computing architecture 1300 may comprise or be implemented as part of an electronic device. Examples of an electronic device may include those described with reference to FIG. 11, among others. The embodiments are not limited in this context.

As used in this application, the terms “system” and “component” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution, examples of which are provided by the exemplary computing architecture 1300. For example, a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers. Further, components may be communicatively coupled to each other by various types of communications media to coordinate operations. The coordination may involve the uni-directional or bi-directional exchange of information. For instance, the components may communicate information in the form of signals communicated over the communications media. The information can be implemented as signals allocated to various signal lines. In such allocations, each message is a signal. Further embodiments, however, may alternatively employ data messages. Such data messages may be sent across various connections. Exemplary connections include parallel interfaces, serial interfaces, and bus interfaces.

The computing architecture 1300 includes various common computing elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input/output (I/O) components, power supplies, and so forth. The embodiments, however, are not limited to implementation by the computing architecture 1300.

As shown in FIG. 13, the computing architecture 1300 comprises a processing unit 1304, a system memory 1306 and a system bus 1308. The processing unit 1304 can be any of various commercially available processors, including without limitation an AMD® Athlon®, Duron® and Opteron® processors; ARM® application, embedded and secure processors; IBM® and Motorola® DragonBall® and PowerPC® processors; IBM and Sony® Cell processors; Intel® Celeron®, Core (2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors; and similar processors. Dual microprocessors, multi-core processors, and other multi-processor architectures may also be employed as the processing unit 1304.

The system bus 1308 provides an interface for system components including, but not limited to, the system memory 1306 to the processing unit 1304. The system bus 1308 can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Interface adapters may connect to the system bus 1308 via a slot architecture. Example slot architectures may include without limitation Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), and the like.

The computing architecture 1300 may comprise or implement various articles of manufacture. An article of manufacture may comprise a computer-readable storage medium to store logic. Examples of a computer-readable storage medium may include any tangible media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. Examples of logic may include executable computer program instructions implemented using any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, and the like. Embodiments may also be at least partly implemented as instructions contained in or on a non-transitory computer-readable medium, which may be read and executed by one or more processors to enable performance of the operations described herein.

The system memory 1306 may include various types of computer-readable storage media in the form of one or more higher speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, an array of devices such as Redundant Array of Independent Disks (RAID) drives, solid state memory devices (e.g., USB memory, solid state drives (SSD) and any other type of storage media suitable for storing information. In the illustrated embodiment shown in FIG. 13, the system memory 1306 can include non-volatile memory 1310 and/or volatile memory 1312. A basic input/output system (BIOS) can be stored in the non-volatile memory 1310.

The computer 1302 may include various types of computer-readable storage media in the form of one or more lower speed memory units, including an internal (or external) hard disk drive (HDD) 1314, a magnetic floppy disk drive (FDD) 1316 to read from or write to a removable magnetic disk 1318, and an optical disk drive 1320 to read from or write to a removable optical disk 1322 (e.g., a CD-ROM or DVD). The HDD 1314, FDD 1316 and optical disk drive 1320 can be connected to the system bus 1308 by a HDD interface 1324, an FDD interface 1326 and an optical drive interface 1328, respectively. The HDD interface 1324 for external drive implementations can include at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies.

The drives and associated computer-readable media provide volatile and/or nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For example, a number of program modules can be stored in the drives and memory units 1310, 1312, including an operating system 1330, one or more application programs 1332, other program modules 1334, and program data 1336. In one embodiment, the one or more application programs 1332, other program modules 1334, and program data 1336 can include, for example, the various applications and/or components of the system 100.

A user can enter commands and information into the computer 1302 through one or more wire/wireless input devices, for example, a keyboard 1338 and a pointing device, such as a mouse 1340. Other input devices may include microphones, infra-red (IR) remote controls, radio-frequency (RF) remote controls, game pads, stylus pens, card readers, dongles, finger print readers, gloves, graphics tablets, joysticks, keyboards, retina readers, touch screens (e.g., capacitive, resistive, etc.), trackballs, trackpads, sensors, styluses, and the like. These and other input devices are often connected to the processing unit 1304 through an input device interface 1342 that is coupled to the system bus 1308, but can be connected by other interfaces such as a parallel port, IEEE 1394 serial port, a game port, a USB port, an IR interface, and so forth.

A monitor 1344 or other type of display device is also connected to the system bus 1308 via an interface, such as a video adaptor 1346. The monitor 1344 may be internal or external to the computer 1302. In addition to the monitor 1344, a computer typically includes other peripheral output devices, such as speakers, printers, and so forth.

The computer 1302 may operate in a networked environment using logical connections via wire and/or wireless communications to one or more remote computers, such as a remote computer 1348. The remote computer 1348 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer 1302, although, for purposes of brevity, only a memory/storage device 1350 is illustrated. The logical connections depicted include wire/wireless connectivity to a local area network (LAN) 1352 and/or larger networks, for example, a wide area network (WAN) 1354. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, for example, the Internet.

When used in a LAN networking environment, the computer 1302 is connected to the LAN 1352 through a wire and/or wireless communication network interface or adaptor 1356. The adaptor 1356 can facilitate wire and/or wireless communications to the LAN 1352, which may also include a wireless access point disposed thereon for communicating with the wireless functionality of the adaptor 1356.

When used in a WAN networking environment, the computer 1302 can include a modem 1358, or is connected to a communications server on the WAN 1354, or has other means for establishing communications over the WAN 1354, such as by way of the Internet. The modem 1358, which can be internal or external and a wire and/or wireless device, connects to the system bus 1308 via the input device interface 1342. In a networked environment, program modules depicted relative to the computer 1302, or portions thereof, can be stored in the remote memory/storage device 1350. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.

The computer 1302 is operable to communicate with wire and wireless devices or entities using the IEEE 802 family of standards, such as wireless devices operatively disposed in wireless communication (e.g., IEEE 802.11 over-the-air modulation techniques). This includes at least Wi-Fi (or Wireless Fidelity), WiMax, and Bluetooth™ wireless technologies, among others. Thus, the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, n, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wire networks (which use IEEE 802.3-related media and functions).

FIG. 14 illustrates a block diagram of an exemplary communications architecture 1400 suitable for implementing various embodiments as previously described. The communications architecture 1400 includes various common communications elements, such as a transmitter, receiver, transceiver, radio, network interface, baseband processor, antenna, amplifiers, filters, power supplies, and so forth. The embodiments, however, are not limited to implementation by the communications architecture 1400.

As shown in FIG. 14, the communications architecture 1400 comprises includes one or more clients 1402 and servers 1404. The clients 1402 may implement the client device 1110, 1210. The servers 1404 may implement the server device 1250. The clients 1402 and the servers 1404 are operatively connected to one or more respective client data stores 1408 and server data stores 1410 that can be employed to store information local to the respective clients 1402 and servers 1404, such as cookies and/or associated contextual information.

The clients 1402 and the servers 1404 may communicate information between each other using a communication framework 1406. The communications framework 1406 may implement any well-known communications techniques and protocols. The communications framework 1406 may be implemented as a packet-switched network (e.g., public networks such as the Internet, private networks such as an enterprise intranet, and so forth), a circuit-switched network (e.g., the public switched telephone network), or a combination of a packet-switched network and a circuit-switched network (with suitable gateways and translators).

The communications framework 1406 may implement various network interfaces arranged to accept, communicate, and connect to a communications network. A network interface may be regarded as a specialized form of an input output interface. Network interfaces may employ connection protocols including without limitation direct connect, Ethernet (e.g., thick, thin, twisted pair 10/100/1000 Base T, and the like), token ring, wireless network interfaces, cellular network interfaces, IEEE 802.11a-x network interfaces, IEEE 802.16 network interfaces, IEEE 802.20 network interfaces, and the like. Further, multiple network interfaces may be used to engage with various communications network types. For example, multiple network interfaces may be employed to allow for the communication over broadcast, multicast, and unicast networks. Should processing requirements dictate a greater amount speed and capacity, distributed network controller architectures may similarly be employed to pool, load balance, and otherwise increase the communicative bandwidth required by clients 1402 and the servers 1404. A communications network may be any one and the combination of wired and/or wireless networks including without limitation a direct interconnection, a secured custom connection, a private network (e.g., an enterprise intranet), a public network (e.g., the Internet), a Personal Area Network (PAN), a Local Area Network (LAN), a Metropolitan Area Network (MAN), an Operating Missions as Nodes on the Internet (OMNI), a Wide Area Network (WAN), a wireless network, a cellular network, and other communications networks.

Some embodiments may be described using the expression “one embodiment” or “an embodiment” along with their derivatives. These terms mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. Further, some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.

It is emphasized that the Abstract of the Disclosure is provided to allow a reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein,” respectively. Moreover, the terms “first,” “second,” “third,” and so forth, are used merely as labels, and are not intended to impose numerical requirements on their objects.

What has been described above includes examples of the disclosed architecture. It is, of course, not possible to describe every conceivable combination of components and/or methodologies, but one of ordinary skill in the art may recognize that many further combinations and permutations are possible. Accordingly, the novel architecture is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims.

Claims

1. A computer-implemented method, comprising:

receiving category information having multiple categories defined for a geographic area of a digital map, each of the multiple categories having a category value;
selecting at least one color to represent two or more categories of the multiple categories; and
generating, by circuitry, an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories.

2. The computer-implemented method of claim 1, comprising selecting a base color for a first category of the multiple categories.

3. The computer-implemented method of claim 1, comprising selecting a color shade for a base color, the base color to represent a first category of the multiple categories, and the color shade of the base color to represent a second category of the multiple categories.

4. The computer-implemented method of claim 1, comprising selecting a first color for a first category of the multiple categories, and a second color for a second category of the multiple categories.

5. The computer-implemented method of claim 1, comprising blending a first color for a first category of the multiple categories with a second color for a second category of the multiple categories to form a blended color to represent both the first and second categories of the multiple categories.

6. The computer-implemented method of claim 1, comprising selecting the at least one color from a color gradient, with one end of the color gradient to represent a maximum value of a category range or multiple category ranges, and another end of the color gradient to represent a minimum value of the category range or multiple category ranges, with intermediate shades along the color gradient scaled based on the maximum and minimum values.

7. The computer-implemented method of claim 1, comprising presenting the annotated digital map on an electronic display.

8. An apparatus, comprising:

processor circuitry; and
a map application operative on the processor circuitry to manage a digital map, the map application comprising: a map manager component to receive category information having multiple categories defined for a geographic area of a digital map, each of the multiple categories having a category value; a map color component to select at least one color to represent two or more categories of the multiple categories; and a map generator component to generate an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories.

9. The apparatus of claim 8, the map manager component to receive map information for the annotated digital map from a server.

10. The apparatus of claim 8, the map color component to select a base color for a first category of the multiple categories, and a color shade for the base color for a second category of the multiple categories.

11. The apparatus of claim 8, the map color component to select a first color for a first category of the multiple categories, and a second color for a second category of the multiple categories, and blend the first color and the second color to form a blended color to represent both the first and second categories of the multiple categories.

12. The apparatus of claim 8, the map color component to select the at least one color from a color gradient, with one end of the color gradient to represent a maximum value of a category range or multiple category ranges, and another end of the color gradient to represent a minimum value of the category range or multiple category ranges, with intermediate shades along the color gradient scaled based on the maximum and minimum values.

13. The apparatus of claim 8, the map generator component to generate the annotated digital map for a user interface view of an application program.

14. The apparatus of claim 8, comprising a memory unit coupled to the processor circuit, a memory controller coupled to the memory unit, and a communications interface.

15. At least one computer-readable storage medium comprising instructions that, when executed, cause a system to:

receive category information having multiple categories defined for a geographic area of a digital map, each of the multiple categories having a category value;
select at least one color to represent two or more categories of the multiple categories;
generate an annotated digital map, the annotated digital map to comprise the digital map annotated with variations of the at least one color to represent the two or more categories of the multiple categories; and
present the annotated digital map on an electronic display.

16. The computer-readable storage medium of claim 15, comprising instructions that when executed cause the system to select a base color for a first category of the multiple categories.

17. The computer-readable storage medium of claim 15, comprising instructions that when executed cause the system to select a color shade for a base color, the base color to represent a first category of the multiple categories, and the color shade of the base color to represent a second category of the multiple categories.

18. The computer-readable storage medium of claim 15, comprising instructions that when executed cause the system to select a first color for a first category of the multiple categories, and a second color for a second category of the multiple categories.

19. The computer-readable storage medium of claim 15, comprising instructions that when executed cause the system to blend a first color for a first category of the multiple categories with a second color for a second category of the multiple categories to form a blended color to represent both the first and second categories of the multiple categories.

20. The computer-readable storage medium of claim 15, comprising instructions that when executed cause the system to select the at least one color from a color gradient, with one end of the color gradient to represent a maximum value of a category range or multiple category ranges, and another end of the color gradient to represent a minimum value of the category range or multiple category ranges, with intermediate shades along the color gradient scaled based on the maximum and minimum values.

Patent History
Publication number: 20150070379
Type: Application
Filed: Apr 8, 2014
Publication Date: Mar 12, 2015
Applicant: MICROSOFT CORPORATION (Redmond, WA)
Inventors: Kevin FAN (Seattle, WA), Alexandre DA VEIGA (Bellevue, WA), Jai SRINIVASAN (Bellevue, WA)
Application Number: 14/247,580
Classifications
Current U.S. Class: Using Gui (345/594)
International Classification: G06T 11/00 (20060101); G06F 3/0484 (20060101);