COMPUTING CONTOUR MAP USING TOPOLOGICAL CASES AND CLASSIFIER CASES
20250251254 ยท 2025-08-07
Inventors
Cpc classification
G06F18/24147
PHYSICS
International classification
G01C21/00
PHYSICS
Abstract
A computing device including one or more processing devices configured to receive raster data including raster data values. The processing devices obtain classifier grid data including classification values selected from among two or more classes. The processing devices generate a contour map by, for each of the classes, generating contour segments connecting pairs of grid locations included in the raster data. Generating the contour segments includes computing respective topological cases of cells of a superimposed grid, which includes cells of the raster data that are associated with respective classification values. Generating the contour segments further includes computing respective classifier cases of the cells. The contour segments are computed based on the topological cases and classifier cases of the cells and are combined into contours. The contour map is computed as a visual representation of the contours. The processing devices output the contour map for display at a display device.
Claims
1. A computing device comprising: one or more processing devices configured to: receive raster data including a plurality of raster data values; obtain classifier grid data including a plurality of classification values selected from among two or more classes; generate a contour map at least in part by: for each of the classes, generating a set of contour segments connecting respective pairs of grid locations included in the raster data, wherein generating the set of contour segments includes: computing respective topological cases of a plurality of cells of a superimposed grid, wherein the superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data; computing respective classifier cases of the cells of the superimposed grid; and computing the contour segments based at least in part on the topological cases and classifier cases of the cells; combining the contour segments into a plurality of contours; and computing the contour map as a visual representation of the plurality of contours; and output the contour map for display at a display device.
2. The computing device of claim 1, wherein: in the superimposed grid, the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis; and each of the cells of the superimposed grid is a 22 cell of raster data values.
3. The computing device of claim 2, wherein: for each of the classes, the one or more processing devices are configured to generate two or more respective sets of contour segments; and the two or more sets of contour segments correspond to different contour levels of the raster data values.
4. The computing device of claim 3, wherein, for each of the cells of the superimposed grid, the corresponding topological case indicates which of the raster data values included in the cell are greater than a current contour level.
5. The computing device of claim 2, wherein, for each of the cells of the superimposed grid, the corresponding classifier case indicates which of a plurality of neighboring-cell classification values are equal to the classification value of the cell.
6. The computing device of claim 5, wherein the one or more processing devices are configured to compute the contour segments at least in part by: based at least in part on the topological cases, computing a plurality of internal contour segments located within respective cells of the superimposed grid; and based at least in part on the topological cases and the classifier cases, computing a plurality of edge segments located along horizontal or vertical boundaries of respective cells of the superimposed grid.
7. The computing device of claim 6, wherein the one or more processing devices are further configured to: compute a plurality of intersections between respective contour segments and the horizontal or vertical boundaries of corresponding cells; and compute the internal contour segments based at least in part on the intersections.
8. The computing device of claim 2, wherein the one or more processing devices are further configured to add a padding value border to the classifier grid data prior to computing the superimposed grid.
9. The computing device of claim 1, wherein: the contour map visually represents the contours as closed polygons; and the contour map indicates the two or more classes associated with the contours in a visually distinguishable manner.
10. The computing device of claim 1, wherein: the contour map is a weather map; the raster data is temperature data, precipitation quantity data, wind speed data, pressure data, humidity data, air quality data, pollen data, visibility data, dew point data, or wind chill data; and the classifier grid data is precipitation type data, cloud cover data, or advisory data.
11. A method for use with a computing device, the method comprising: receiving raster data including a plurality of raster data values; obtaining classifier grid data including a plurality of classification values selected from among two or more classes; generating a contour map at least in part by: for each of the classes, generating a set of contour segments connecting respective pairs of grid locations included in the raster data, wherein generating the set of contour segments includes: computing respective topological cases of a plurality of cells of a superimposed grid, wherein the superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data; computing respective classifier cases of the cells of the superimposed grid; and computing the contour segments based at least in part on the topological cases and classifier cases of the cells; combining the contour segments into a plurality of contours; and computing the contour map as a visual representation of the plurality of contours; and outputting the contour map for display at a display device.
12. The method of claim 11, wherein: in the superimposed grid, the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis; and each of the cells of the superimposed grid is a 22 cell of raster data values.
13. The method of claim 12, further comprising, for each of the classes, generating two or more respective sets of contour segments, wherein the two or more sets of contour segments correspond to different contour levels of the raster data values.
14. The method of claim 13, wherein, for each of the cells of the superimposed grid, the corresponding topological case indicates which of the raster data values included in the cell are greater than a current contour level.
15. The method of claim 12, wherein, for each of the cells of the superimposed grid, the corresponding classifier case indicates which of a plurality of neighboring-cell classification values are equal to the classification value of the cell.
16. The method of claim 15, wherein computing the contour segments includes: based at least in part on the topological cases, computing a plurality of internal contour segments located within respective cells of the superimposed grid; and based at least in part on the topological cases and the classifier cases, computing a plurality of edge segments located along horizontal or vertical boundaries of respective cells of the superimposed grid.
17. The method of claim 16, further comprising: computing a plurality of intersections between respective contour segments and the horizontal or vertical boundaries of corresponding cells; and computing the internal contour segments based at least in part on the intersections.
18. The method of claim 12, further comprising adding a padding value border to the classifier grid data prior to computing the superimposed grid.
19. The method of claim 11, wherein: the contour map visually represents the contours as closed polygons; and the contour map indicates the two or more classes associated with the contours in a visually distinguishable manner.
20. A computing device comprising: one or more processing devices configured to: receive raster data including a plurality of raster data values; obtain classifier grid data including a plurality of classification values selected from among two or more classes; add a padding value border to the classifier grid data prior to computing the superimposed grid; generate a contour map at least in part by: computing a superimposed grid in which the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis, wherein: the superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data; and each of the cells of the superimposed grid is a 22 cell of raster data values; for each of the classes, generating a set of contour segments connecting respective pairs of grid locations included in the raster data, wherein generating the set of contour segments includes: computing respective topological cases of a plurality of cells of the superimposed grid; computing respective classifier cases of the cells of the superimposed grid at least in part by, for each of the cells, computing which of a plurality of neighboring-cell classification values are equal to the classification value of the cell; and computing the contour segments based at least in part on the topological cases and classifier cases of the cells; combining the contour segments into a plurality of contours; and computing the contour map as a visual representation of the plurality of contours; and output the contour map for display at a display device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
DETAILED DESCRIPTION
[0014] In some contour maps, multiple types of data are displayed together. The numerical values that are bucketed into contours in such contour maps can be raster (gridded) data. For example, the values included in the raster data can correspond to pixels in an image. Classification data can be represented in the contour map in addition to the raster data. The classification data includes discrete values that are also associated with locations on the map. For example, in a weather map, the raster data can indicate precipitation intensity and the classification data can indicate precipitation type. When raster data and classification data are displayed together in a contour map, the areas delineated by the contour lines are further divided to indicate the different classification values. Thus, the contour map shows classified contours.
[0015] In one previous approach to generating contour maps that also show classification data, the raster data is masked by overlaying the classification data. This masking generates multiple copies of the grid of raster data that correspond to the different classification values. A contouring algorithm is then run separately on each of the masked raster data sets. However, this approach frequently produces gaps between contours that correspond to different classification values. In addition, this approach can produce contour ramps where different classification values meet within a single contour level. The masking approach accordingly tends to produce contour maps that inaccurately represent the underlying data.
[0016] In another previous approach, contours are generated separately for the raster data values and for the classification values. Polygon clipping is then performed to clip the raster data contours based on the classification values. Unlike the raster grid masking approach, the polygon clipping approach generates accurate contours. However, the polygon clipping approach is computationally inefficient, since it includes a search for intersecting line segments that has a time complexity of O(N.sup.2).
[0017]
[0018] In the example air travel setting of
[0019] The contour map 66 can additionally or alternatively be presented for mid-flight viewing at the aircraft 2. In the example of
[0020] The contour map 66 can additionally or alternatively be displayed to personnel located at a ground station or control tower. For example, a client computing device 10D located in an air traffic control tower 19 can be configured to receive the contour map 66 and display the contour map 66 to an air traffic controller.
[0021] Although the example of
[0022] In order to address the shortcomings of the existing techniques for generating contour maps with classification values, the following devices and methods are provided.
[0023] The one or more processing devices 12, as shown in
[0024] The one or more processing devices 12 are further configured to obtain classifier grid data 30. The classifier grid data 30 includes a plurality of classification values 32 selected from among two or more classes 36. The classification values 32 are associated with respective classification grid locations 34, which, for example, can be expressed as coordinate pairs over the same grid used for the raster data 20.
[0025] The one or more processing devices 12 are further configured to generate a contour map 66 at which the raster data 20 and the classifier grid data 30 are depicted. The process by which the one or more processing devices 12 compute the contour map 66 is discussed in further detail below. The one or more processing devices 12 are further configured to output the contour map 66 for display at a display device 18. In some examples, the display device 18 at which the contour map 66 is displayed is located at a client computing device, whereas the contour map 66 is computed at a server computing device.
[0026]
[0027] In some examples, the contour map 66 can be some type of map other than a weather map. For example, the raster data 20 used to generate the contour map 66 can indicate elevation data. In such examples, the classifier grid data 30 can indicate classification values 32 in classes 36 such as land use type.
[0028] Returning to the example of
[0029] As a preliminary stage to the computation of the contour segments 60, the one or more processing devices 12 are configured to compute reprojected classifier grid data 40. To compute the reprojected classifier grid data 40, the one or more processing devices 12 are configured to sample interpolated values of the classifier grid data 40 at locations that are offset from the classification grid locations 34 by half a pixel horizontally and half a pixel vertically. The resulting sampled classifier grid has one less row and one less column than the grid in which the classifier grid data 40 is arranged.
[0030] The one or more processing devices 12 are further configured to compute padded reprojected classifier grid data 42 from the reprojected classifier grid data 40. The padded reprojected classifier grid data 42 is computed by adding a padding value border 44 around the outside of the reprojected classifier grid data 40. The padding value border 44 is a one-pixel-thick border of padding classification values that are different from any of the classification values 32 included in the classifier grid data 30. Thus, the padding classification values are distinguishable from the classification values 32.
[0031] The one or more processing devices 12 are further configured to compute a superimposed grid 46. The superimposed grid 46 includes a plurality of cells 48 of the raster data 20 that are associated with respective classification values 32 included in the classifier grid data 30. The superimposed grid 46 is computed by superimposing the padded reprojected classifier grid data 42 and the raster data 20.
[0032] An example superimposed grid 46 is shown in
[0033] As discussed in further detail below, the one or more processing devices 12 are configured to iterate over the plurality of cells 48 when the contour segments 60 are computed. In the example of
[0034] Returning to the example of
[0035] The one or more processing devices 12 are further configured to compute respective classifier cases 52 of the cells 48 of the superimposed grid 46.
[0036]
[0037] As shown in the example of
[0038] In the following discussion of the intersections 80, a local coordinate system is defined in which the upper lefthand corner of the current cell 48A is indicated as (0, 0), the upper righthand corner is indicated as (0, 1), the lower lefthand corner is indicated as (1, 0), and the lower righthand corner is indicated as (1, 1). In this example, for the cells 48 other than the upper-leftmost cell 48 in the superimposed grid 46, the local coordinate system differs from the global coordinate system discussed above. These corners are labeled UL, UR, LL, and LR respectively.
[0039] Returning to the example of
[0040] Returning to the example of
[0041] Topological case 0: the cell has no internal contour segments.
[0042] Topological case 1: (upper left grid value greater than contour level) [0043] add a contour segment from Top to Left [0044] if leftNeighborDifferent, add a contour segment from Left to UL [0045] if topNeighborDifferent, add a contour segment from UL to Top
[0046] Topological case 2: (upper right grid value greater than contour level) [0047] add a contour segment from Right to Top [0048] if topNeighborDifferent, add a contour segment from Top to UR [0049] if rightNeighborDifferent, add a contour segment from UR to Right
[0050] Topological case 3: (upper left and upper right grid values greater than contour level) [0051] add a contour segment from Right to Left [0052] if leftNeighborDifferent, add a contour segment from Left to UL [0053] if topNeighborDifferent, add a contour segment from UL to UR [0054] if rightNeighborDifferent, add a contour segment from UR to Right
[0055] Topological case 4: (lower left grid value greater than contour level) [0056] add a contour segment from Left to Bottom [0057] if bottomNeighborDifferent, add a contour segment from Bottom to LL [0058] if leftNeighborDifferent, add a contour segment from LL to Left
[0059] Topological case 5: (upper left and lower left grid values greater than contour level) [0060] add a contour segment from Top to Bottom [0061] if bottomNeighborDifferent, add a contour segment from Bottom to LL [0062] if leftNeighborDifferent, add a contour segment from LL to UL [0063] if topNeighborDifferent, add a contour segment from UL to Top
[0064] Topological case 6: (upper right and lower left grid values greater than contour level). This is one of two saddle cases, and there are two possible ways to create contours for this case: opposing corners can be connected or kept separate.
[0065] If the contours form a diagonal line across the cell: [0066] add a contour segment from Left to Top [0067] if topNeighborDifferent, add a contour segment from Top to UR [0068] if rightNeighborDifferent, add a contour segment from UR to Right [0069] add a contour segment from Right to Bottom [0070] if bottomNeighborDifferent, add a contour segment from Bottom to LL [0071] if leftNeighborDifferent, add a contour segment from LL to Left
[0072] Otherwise, if contours at opposing corners are kept separate: [0073] add a contour segment from Right to Top [0074] if topNeighborDifferent, add a contour segment from Top to UR [0075] if rightNeighborDifferent, add a contour segment from UR to Right
[0076] Then, [0077] add a contour segment from Left to Bottom [0078] if bottomNeighborDifferent, add a contour segment from Bottom to LL [0079] if leftNeighborDifferent, add a contour segment from LL to Left
[0080] Topological case 7: (upper left, upper right, and lower left grid values greater than contour level) [0081] add a contour segment from Right to Bottom [0082] if bottomNeighborDifferent, add a contour segment from Bottom to LL [0083] if leftNeighborDifferent, add a contour segment from LL to UL [0084] if topNeighborDifferent, add a contour segment from UL to UR [0085] if rightNeighborDifferent, add a contour segment from UR to Right
[0086] Topological case 8: (lower right grid value greater than contour level) [0087] add a contour segment from Bottom to Right [0088] if rightNeighborDifferent, add a contour segment from Right to LR [0089] if bottomNeighborDifferent, add a contour segment from LR to Bottom
[0090] Topological case 9: (upper left and lower right grid values greater than contour level). This is the other of two saddle cases, and there are two possible ways to create contours for this case: opposing corners can be connected or kept separate.
[0091] If the contours form a diagonal line across the cell: [0092] add a contour segment from Top to Right [0093] if rightNeighborDifferent, add a contour segment from Right to LR [0094] if bottomNeighborDifferent, add a contour segment from LR to Bottom [0095] add a contour segment from Bottom to Left [0096] if leftNeighborDifferent, add a contour segment from Left to UL [0097] if topNeighborDifferent, add a contour segment from UL to Top
[0098] Otherwise, if contours at opposing corners are kept separate: add a contour segment from Top to Left [0099] if leftNeighborDifferent, add a contour segment from Left to UL [0100] if topNeighborDifferent, add a contour segment from UL to Top
[0101] Then, [0102] add a contour segment from Bottom to Right [0103] if rightNeighborDifferent, add a contour segment from Right to LR [0104] if bottomNeighborDifferent, add a contour segment from LR to Bottom
[0105] Topological case 10: (upper right and lower right grid values greater than contour level) [0106] add a contour segment from Bottom to Top [0107] if topNeighborDifferent, add a contour segment from Top to UR [0108] if rightNeighborDifferent, add a contour segment from UR to LR [0109] if bottomNeighborDifferent, add a contour segment from LR to Bottom
[0110] Topological case 11: (upper left, upper right, and lower right grid values greater than contour level) [0111] add a contour segment from Bottom to Left [0112] if leftNeighborDifferent, add a contour segment from Left to UL [0113] if topNeighborDifferent, add a contour segment from UL to UR [0114] if rightNeighborDifferent, add a contour segment from UR to LR [0115] if bottomNeighborDifferent, add a contour segment from LR to Bottom
[0116] Topological case 12: (lower left and lower right grid values greater than contour level) [0117] add a contour segment from Left to Right [0118] if rightNeighborDifferent, add a contour segment from Right to LR [0119] if bottomNeighborDifferent, add a contour segment from LR to LL [0120] if leftNeighborDifferent, add a contour segment from LL to Left
[0121] Topological case 13: (upper left, lower left, and lower right grid values greater than contour level) [0122] add a contour segment from Top to Right [0123] if rightNeighborDifferent, add a contour segment from Right to LR [0124] if bottomNeighborDifferent, add a contour segment from LR to LL [0125] if leftNeighborDifferent, add a contour segment from LL to UL [0126] if topNeighborDifferent, add a contour segment from UL to Top
[0127] Topological case 14: (upper right, lower left, and lower right grid values greater than contour level) [0128] add a contour segment from Left to Top [0129] if topNeighborDifferent, add a contour segment from Top to UR [0130] if rightNeighborDifferent, add a contour segment from UR to LR [0131] if bottomNeighborDifferent, add a contour segment from LR to LL [0132] if leftNeighborDifferent, add a contour segment from LL to Left
[0133] Topological case 15: (all four grid values greater than contour level) [0134] if topNeighborDifferent, add a contour segment from UL to UR [0135] if rightNeighborDifferent, add a contour segment from UR to LR [0136] if bottomNeighborDifferent, add a contour segment from LR to LL [0137] if leftNeighborDifferent, add a contour segment from LL to UL
[0138] By referring to the topological cases 50 and classifier cases 52 of each of the cells 48 in the superimposed grid 46 as described in the above pseudocode, the one or more processing devices 12 are configured to compute each of the contour segments 60 included in the contour segment set 62. This contour segment set 62 is specific to a contour level 70 of the plurality of contour levels 70, and to a class 36 of the plurality of classes 36 from among which the classification values 32 are selected. The one or more processing devices 12 are configured to compute respective contour segment sets 62 for each of the classes 36. For each unique combination of a contour level 70 and a class 36, the one or more processing devices 12 are configured to compute respective topological cases 50 and classifier cases 52 for the cells 48 of the superimposed grid 46 and are further configured to compute the contour segment set 62 for that class 36 based at least in part on the topological cases 50 and the classifier cases 52 using the techniques discussed above.
[0139] Returning to the example of
[0140] Subsequently to computing the contour map 66, the one or more processing devices 12 are further configured to output the contour map 66 for display at a display device 18. The display device 18 can be located in the same physical computing device as the one or more processing devices 12 that are configured to compute the contour map 66 or can alternatively be located in another physical computing device. In some examples, the contour map 66 is computed at a server computing device and transmitted to client computing device that includes the display device 18.
[0141]
[0142] In the example of
[0143]
[0144] In some examples, the contour map generated with the method 100 is a weather map. In such examples, the raster data can be temperature data, precipitation quantity data, wind speed data, pressure data, humidity data, air quality data, pollen data, visibility data, dew point data, or wind chill data. In addition, the classifier grid data can precipitation type data, cloud cover data, or advisory data. Other types of weather data can also be used as the raster data or classifier grid data.
[0145] At step 106, the method 100 further includes generating a contour map. Steps 108, 110, 112, 114, 116, and 118 are performed when the contour map is generated at step 106. At step 108, for each of the classes from which the classification values are selected, generating the contour map includes generating a set of contour segments connecting respective pairs of grid locations included in the raster data.
[0146] In some examples, for each of the classes, two or more respective sets of contour segments can generated at step 108. The two or more sets of contour segments generated in such examples correspond to different contour levels of the raster data values. Accordingly, the contour segment sets are generated at corresponding iterations associated with buckets of the raster data values.
[0147] In some examples, one or more of the sets of contour segments can be empty. For example, a set of contour segments can be empty when there is no overlap between a given classifier class and the region where the raster data is at a minimum requested contour level. As another example, the contour set can be empty when the raster data includes no values greater than the minimum requested contour level, such as when the raster data indicates precipitation quantity data over a mapped area in which no precipitation occurs.
[0148] Generating the contour segments at step 108 includes, at step 110, computing respective topological cases of a plurality of cells of a superimposed grid. For each of the cells of the superimposed grid, the corresponding topological case indicates which of the raster data values included in the cell are greater than a current contour level for which the contour segments are generated in a current iteration.
[0149] The superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data. According to some examples, in the superimposed grid, the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis. In such examples, each of the cells of the superimposed grid is a 22 cell of raster data values, which are associated with classification values included in the classifier grid data. A padding value border is added to the classifier grid data in some examples prior to computing the superimposed grid. In examples in which the padding value border is added, the padding value border includes a plurality of classification values that differ from those of the two or more classes of the classifier grid data, thereby distinguishing the padding values from the other classification values.
[0150] At step 112, generating the contour segments at step 108 further includes computing respective classifier cases of the cells of the superimposed grid. For each of the cells of the superimposed grid, the corresponding classifier case indicates which of a plurality of neighboring-cell classification values are equal to the classification value of the cell. The neighboring-cell classification values are the classification values of the cells above, below, to the left of, and to the right of a current cell.
[0151] At step 114, step 108 further includes computing the contour segments based at least in part on the topological cases and classifier cases of the cells. As discussed below, computing the contour segments for a contour level includes computing internal contour segments and/or edge segments that indicate a boundary of the contour level.
[0152] At step 116, generating the contour map at step 106 further includes combining the contour segments into a plurality of contours. For each of the contour levels computed for each class, the contour segments included in the corresponding contour segment set computed at step 108 are combined by connecting the contour segments end-to-end.
[0153] At step 118, generating the contour map at step 106 further includes computing the contour map as a visual representation of the plurality of contours. In some examples, the contour map visually represents the contours as closed polygons. The contour map also indicates the two or more classes associated with the contours in a visually distinguishable manner. Thus, the different classes and the contour levels within those classes are both represented in the contour map.
[0154] At step 120, the method 100 further includes outputting the contour map for display at a display device. The display device can be included in the same computing device at which the contour map is computed. Alternatively, the display device can be included in a different computing device such as a client computing device.
[0155]
[0156] In some examples, step 108 further includes, at step 128, computing a plurality of edge segments located along horizontal or vertical boundaries of respective cells of the superimposed grid. The edge segments are computed based at least in part on the topological cases and the classifier cases. Accordingly, for each of the classes, internal contour segments and/or edge segments are computed for each of the plurality of contour levels.
[0157] Using the devices and methods discussed above, a contour map representing raster data and classifier grid data is generated. The contour map is generated in a manner that avoids artifacts that occur when masking is used, such as gaps and ramps between the contours associated with different classes. In addition, the contour map is generated using techniques that are less computationally intensive than polygon clipping. Thus, the contour map is computed in a computationally efficient manner while preserving accuracy.
[0158] The methods and processes described herein are tied to a computing system of one or more computing devices. In particular, such methods and processes can be implemented as a computer-application program or service, an application-programming interface (API), a library, and/or other computer-program product.
[0159]
[0160] Computing system 200 includes a logic processor 202 volatile memory 204, and a non-volatile storage device 206. Computing system 200 can further include a display subsystem 208, input subsystem 210, communication subsystem 212, and/or other components not shown in
[0161] Logic processor 202 includes one or more physical devices configured to execute instructions. For example, the logic processor can be configured to execute instructions that are part of one or more applications, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions can be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result.
[0162] The logic processor can include one or more physical processors configured to execute software instructions. Additionally or alternatively, the logic processor can include one or more hardware logic circuits or firmware devices configured to execute hardware-implemented logic or firmware instructions. Processors of the logic processor 202 can be single-core or multi-core, and the instructions executed thereon can be configured for sequential, parallel, and/or distributed processing. Individual components of the logic processor optionally can be distributed among two or more separate devices, which can be remotely located and/or configured for coordinated processing. Aspects of the logic processor can be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration. In such a case, these virtualized aspects are run on different physical logic processors of various different machines.
[0163] Non-volatile storage device 206 includes one or more physical devices configured to hold instructions executable by the logic processors to implement the methods and processes described herein. When such methods and processes are implemented, the state of non-volatile storage device 206 can be transformede.g., to hold different data.
[0164] Non-volatile storage device 206 can include physical devices that are removable and/or built in. Non-volatile storage device 206 can include optical memory, semiconductor memory, and/or magnetic memory, or other mass storage device technology. Non-volatile storage device 206 can include nonvolatile, dynamic, static, read/write, read-only, sequential-access, location-addressable, file-addressable, and/or content-addressable devices. It will be appreciated that non-volatile storage device 206 is configured to hold instructions even when power is cut to the non-volatile storage device 206.
[0165] Volatile memory 204 can include physical devices that include random access memory. Volatile memory 204 is typically utilized by logic processor 202 to temporarily store information during processing of software instructions. It will be appreciated that volatile memory 204 typically does not continue to store instructions when power is cut to the volatile memory 204.
[0166] Aspects of logic processor 202, volatile memory 204, and non-volatile storage device 206 can be integrated together into one or more hardware-logic components. Such hardware-logic components can include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.
[0167] The terms module, program, and engine can be used to describe an aspect of computing system 200 typically implemented in software by a processor to perform a particular function using portions of volatile memory, which function involves transformative processing that specially configures the processor to perform the function. Thus, a module, program, or engine can be instantiated via logic processor 202 executing instructions held by non-volatile storage device 206, using portions of volatile memory 204. It will be understood that different modules, programs, and/or engines can be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same module, program, and/or engine can be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms module, program, and engine can encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc.
[0168] When included, display subsystem 208 can be used to present a visual representation of data held by non-volatile storage device 206. The visual representation can take the form of a graphical user interface (GUI). As the herein described methods and processes change the data held by the non-volatile storage device, and thus transform the state of the non-volatile storage device, the state of display subsystem 208 can likewise be transformed to visually represent changes in the underlying data. Display subsystem 208 can include one or more display devices utilizing virtually any type of technology. Such display devices can be combined with logic processor 202, volatile memory 204, and/or non-volatile storage device 206 in a shared enclosure, or such display devices can be peripheral display devices.
[0169] When included, input subsystem 210 can comprise or interface with one or more user-input devices such as a keyboard, mouse, touch screen, camera, or microphone.
[0170] When included, communication subsystem 212 can be configured to communicatively couple various computing devices described herein with each other, and with other devices. Communication subsystem 212 can include wired and/or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem can be configured for communication via a wired or wireless local- or wide-area network, broadband cellular network, etc. In some embodiments, the communication subsystem can allow computing system 200 to send and/or receive messages to and/or from other devices via a network such as the Internet.
[0171] Further, the disclosure comprises configurations according to the following clauses.
[0172] Clause 1. A computing device comprising: one or more processing devices configured to: receive raster data including a plurality of raster data values; obtain classifier grid data including a plurality of classification values selected from among two or more classes; generate a contour map at least in part by: for each of the classes, generating a set of contour segments connecting respective pairs of grid locations included in the raster data, wherein generating the set of contour segments includes: computing respective topological cases of a plurality of cells of a superimposed grid, wherein the superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data; computing respective classifier cases of the cells of the superimposed grid; and computing the contour segments based at least in part on the topological cases and classifier cases of the cells; combining the contour segments into a plurality of contours; and computing the contour map as a visual representation of the plurality of contours; and output the contour map for display at a display device.
[0173] Clause 2. The computing device according to Clause 1, wherein: in the superimposed grid, the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis; and each of the cells of the superimposed grid is a 22 cell of raster data values.
[0174] Clause 3. The computing device according to Clause 2, wherein: for each of the classes, the one or more processing devices are configured to generate two or more respective sets of contour segments; and the two or more sets of contour segments correspond to different contour levels of the raster data values.
[0175] Clause 4. The computing device according to Clause 3, wherein, for each of the cells of the superimposed grid, the corresponding topological case indicates which of the raster data values included in the cell are greater than a current contour level.
[0176] Clause 5. The computing device according to any of Clauses 2-4, wherein, for each of the cells of the superimposed grid, the corresponding classifier case indicates which of a plurality of neighboring-cell classification values are equal to the classification value of the cell.
[0177] Clause 6. The computing device of Clause 5, wherein the one or more processing devices are configured to compute the contour segments at least in part by: based at least in part on the topological cases, computing a plurality of internal contour segments located within respective cells of the superimposed grid; and based at least in part on the topological cases and the classifier cases, computing a plurality of edge segments located along horizontal or vertical boundaries of respective cells of the superimposed grid.
[0178] Clause 7. The computing device of Clause 6, wherein the one or more processing devices are further configured to: compute a plurality of intersections between respective contour segments and the horizontal or vertical boundaries of corresponding cells; and compute the internal contour segments based at least in part on the intersections.
[0179] Clause 8. The computing device of any of Clauses 2-7, wherein the one or more processing devices are further configured to add a padding value border to the classifier grid data prior to computing the superimposed grid.
[0180] Clause 9. The computing device of any of Clauses 1-8, wherein: the contour map visually represents the contours as closed polygons; and the contour map indicates the two or more classes associated with the contours in a visually distinguishable manner.
[0181] Clause 10. The computing device of any of Clauses 1-9, wherein: the contour map is a weather map; the raster data is temperature data, precipitation quantity data, wind speed data, pressure data, humidity data, air quality data, pollen data, visibility data, dew point data, or wind chill data; and the classifier grid data is precipitation type data, cloud cover data, or advisory data.
[0182] Clause 11. A method for use with a computing device, the method comprising: receiving raster data including a plurality of raster data values; obtaining classifier grid data including a plurality of classification values selected from among two or more classes; generating a contour map at least in part by: for each of the classes, generating a set of contour segments connecting respective pairs of grid locations included in the raster data, wherein generating the set of contour segments includes: computing respective topological cases of a plurality of cells of a superimposed grid, wherein the superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data; computing respective classifier cases of the cells of the superimposed grid; and computing the contour segments based at least in part on the topological cases and classifier cases of the cells; combining the contour segments into a plurality of contours; and computing the contour map as a visual representation of the plurality of contours; and outputting the contour map for display at a display device.
[0183] Clause 12. The method according to Clause 11, wherein: in the superimposed grid, the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis; and each of the cells of the superimposed grid is a 22 cell of raster data values.
[0184] Clause 13. The method according to Clause 12, further comprising, for each of the classes, generating two or more respective sets of contour segments, wherein the two or more sets of contour segments correspond to different contour levels of the raster data values.
[0185] Clause 14. The method according to Clause 13, wherein, for each of the cells of the superimposed grid, the corresponding topological case indicates which of the raster data values included in the cell are greater than a current contour level.
[0186] Clause 15. The method according to any of Clauses 12-14, wherein, for each of the cells of the superimposed grid, the corresponding classifier case indicates which of a plurality of neighboring-cell classification values are equal to the classification value of the cell.
[0187] Clause 16. The method according to Clause 15, wherein computing the contour segments includes: based at least in part on the topological cases, computing a plurality of internal contour segments located within respective cells of the superimposed grid; and based at least in part on the topological cases and the classifier cases, computing a plurality of edge segments located along horizontal or vertical boundaries of respective cells of the superimposed grid.
[0188] Clause 17. The method according to Clause 16, further comprising: computing a plurality of intersections between respective contour segments and the horizontal or vertical boundaries of corresponding cells; and computing the internal contour segments based at least in part on the intersections.
[0189] Clause 18. The method according to any of Clauses 12-17, further comprising adding a padding value border to the classifier grid data prior to computing the superimposed grid.
[0190] Clause 19. The method according to any of Clauses 11-18, wherein: the contour map visually represents the contours as closed polygons; and the contour map indicates the two or more classes associated with the contours in a visually distinguishable manner.
[0191] Clause 20. A computing device comprising: one or more processing devices configured to: receive raster data including a plurality of raster data values; obtain classifier grid data including a plurality of classification values selected from among two or more classes; add a padding value border to the classifier grid data prior to computing the superimposed grid; generate a contour map at least in part by: computing a superimposed grid in which the classifier grid data is offset from the raster data by half a pixel along both a horizontal axis and a vertical axis, wherein: the superimposed grid includes a plurality of cells of the raster data that are associated with respective classification values included in the classifier grid data; and each of the cells of the superimposed grid is a 22 cell of raster data values; for each of the classes, generating a set of contour segments connecting respective pairs of grid locations included in the raster data, wherein generating the set of contour segments includes: computing respective topological cases of a plurality of cells of the superimposed grid; computing respective classifier cases of the cells of the superimposed grid at least in part by, for each of the cells, computing which of a plurality of neighboring-cell classification values are equal to the classification value of the cell; and computing the contour segments based at least in part on the topological cases and classifier cases of the cells; combining the contour segments into a plurality of contours; and computing the contour map as a visual representation of the plurality of contours; and output the contour map for display at a display device.
[0192] And/or as used herein is defined as the inclusive or V, as specified by the following truth table:
TABLE-US-00001 A B A B True True True True False True False True True False False False
[0193] It will be understood that the configurations and/or approaches described herein are exemplary in nature, and that these specific embodiments or examples are not to be considered in a limiting sense, because numerous variations are possible. The specific routines or methods described herein can represent one or more of any number of processing strategies. As such, various acts illustrated and/or described can be performed in the sequence illustrated and/or described, in other sequences, in parallel, or omitted. Likewise, the order of the above-described processes can be changed.
[0194] The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and/or properties disclosed herein, as well as any and all equivalents thereof.