This disclosure relates to digital mapping, including labeling for digital geospatial mapping.
In many mapping applications, such as those for aeronautical charts, map features (e.g., labels for map features) can become cluttered and/or overlapping. Prior approaches either delete or ignore labels when labels overlap. These techniques have disadvantages because some relevant information is not shown on the map. Other conventional techniques are not feasible for geographic information system (GIS)/moving map applications for performance reasons. For example, a common preprocessing step is the building of a conflict graph, which is expensive. Conventional techniques for label placement fail to provide a solution that provides necessary information on a map when map features conflict without significantly impacting performance.
The accompanying drawings, which are incorporated in and constitute part of the specification, illustrate embodiments of the disclosure and, together with the general description given above and the detailed descriptions of embodiments given below, serve to explain the principles of the present disclosure. In the drawings:
Features and advantages of the present disclosure will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
In the following description, numerous specific details are set forth to provide a thorough understanding of the disclosure. However, it will be apparent to those skilled in the art that the disclosure, including structures, systems, and methods, may be practiced without these specific details. The description and representation herein are the common means used by those experienced or skilled in the art to most effectively convey the substance of their work to others skilled in the art. In other instances, well-known methods, procedures, components, and circuitry have not been described in detail to avoid unnecessarily obscuring aspects of the disclosure.
References in the specification to “one embodiment,” “an embodiment,” “an exemplary embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to understand that such description(s) can affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the present disclosure provide systems and methods for label placement that provide necessary information on a map when map features conflict without significantly impacting performance. Embodiments of the present disclosure can handle placement of map labels that vary in size, have prioritized label/feature groupings, apply to point, line, and area features, minimize overlap when there is no more open space, and render fast enough for interactive viewing.
One technique of resolving these conflicts is to simply omit labels if conflicts are detected. For example, a single R* tree can be used to perform label conflict/overlap detection. In an embodiment, an R* tree is a data structure that provides fast spatial queries by grouping nearby objects using bounding rectangles. In an embodiment, for conflict detection, whenever a new label is to be drawn, the tree first checks for intersection between the new label and labels that it already contains. If any intersection is found, the new label does not get drawn. If no intersection is found, the label gets drawn and added to the tree.
This technique can be acceptable for many charts because the user can zoom in to see more labels. However, this technique is unacceptable for some cases, especially in military applications such as aeronautical charts, because at certain, “official” map scales, all labels must be shown. Prior solutions for showing all labels on a map involve an undesired amount of computation, such as a large amount of preprocessing.
Embodiments of the present disclosure allow label overlap while minimizing it in a prioritized way. For example, a label placement technique in accordance with an embodiment of the present disclosure was used to place labels in
Embodiments of the present disclosure use several techniques for efficiently placing labels that improve upon prior methods, including utilizing deconfliction (e.g., declutter) groups, specialized placement search algorithms, and cell-based weighting. For example, in an embodiment, a deconfliction group is a named R* tree that handles only a subset of labels. In this way, multiple groups/R* trees can be used to provide a divide and conquer strategy that is both convenient and functional.
In this way, control can be established over which labels will be aware of each other and which labels will ignore each other. In an embodiment, a user can determine group names, and a system (e.g., a controller) takes care of the creation and management of the R* tree for each group. In an embodiment, the system also provides a convenience query for checking a label against all groups. In an embodiment, these automatic parts of the system and the groups themselves are encapsulated in what is called an overlap manager (OM). In an embodiment, the OM can contain all groups, as well as a framework for easy checking against group combinations or all groups.
In an embodiment, two search algorithms can be used. In an embodiment, one search algorithm searches for placements around a point symbol, and the other searches for placements along a line symbol. Both algorithms can use the same OM to do their conflict detection. In an embodiment, for area label placement, a search is not used, and the label is placed at the area's centroid, but the OM can still be used to check for overlap(s). This highlights the modularity of the OM; it can be coupled with many different label placement algorithms.
In dense areas, sometimes there is no open space for the search algorithm to find, and all placement attempts will encounter overlap. In some embodiments, such as with Aero, labels must still be placed in this scenario. Embodiments of the present disclosure use label weighting as a way to set rules for selecting a winner out of placement attempts which all encounter overlap. In an embodiment, a weight is assigned to each deconfliction group based on its importance: the higher the weight, the more important. The OM can then keep a weighted score for each attempted label position based on the groups that it overlaps, and the position with the lowest score can be selected for label placement. In an embodiment, for greater precision, the OM first divides the label into a 2×4 grid of cells. Thus, the score for a given position becomes the sum of scores of all 8 cells.
For example, in an embodiment, given a feature and a label, the search algorithm can attempt every position for the label (e.g., around/along the feature). For each label position, the current label pixel bounds can be divided into cells (e.g., smaller bounds). Each cell can be checked to get weights of whichever groups the cell overlaps, adding them together to get a cell overlap score. All cell scores can be added together to get the total overlap score for the label position. The label position with the lowest total overlap score can then be selected.
An example of creating deconfliction groups will now be discussed. In an embodiment, an Overlap Manager can be configured (e.g., by a developer, controller, predetermined system settings, etc.) by creating classifier names/tags for any deconfliction groups needed and by assigning the weight to each group based on the priorities (e.g., priorities decided by the chart developer, a controller, system settings, etc.). In an embodiment, the classification tags can be as specific as desired, but for the purposes of an example, the following tags can be used (from lowest priority/weight to highest priority/weight): point symbols, line symbols, low priority labels, and high priority labels (e.g., airport labels).
In an embodiment, a tag or tags can be used to determine the deconfliction group(s) to which point symbols will belong (e.g., a “POINT_SYMBOLS” tag). In an embodiment, an overlap manager accordingly initializes a data structure (such as an R* Tree) named POINT_SYMBOLS, to which the point symbols can be added for fast conflict/intersection checking. This data structure can be referred to as a deconfliction group. In an embodiment, the same procedure can be performed for line symbols. For example, in an embodiment, the LINE_SYMBOLS tag/deconfliction group can be used. As illustrated by the POINT_SYMBOLS and LINE_SYMBOLS tags, deconfliction groups can also be used to group labels by geometry. For example, labels that are used to label a single point in a map can be assigned to the POINT_SYMBOLS deconfliction group, and labels that are used to label a line on a map can be assigned to the LINE_SYMBOLS deconfliction group.
Some labels (e.g., area and line labels) may be less prominent on the chart, or more like background in nature, and may be deemed low priority by the chart developer. In an embodiment, a tag, such as a LOW_PRIOITY_LABELS tag, can be used to group such labels. Similarly, a tag, such as HIGH_PRIORITY_LABELS, can be used to group together higher priority labels (e.g., labels that are not grouped with the lower priority labels), and these labels can be assigned a relatively high weight. In an embodiment, for high priority labels, the deconfliction groups to avoid can be specified (e.g., by a developer, controller, predetermined system settings, etc.) for each high priority label. In an embodiment, all high priority labels can be specified to avoid the same deconfliction groups. In an embodiment, each high priority label (or groups of high priority labels) can be specified to avoid different deconfliction groups. For example, in an embodiment, high priority airports labels can be specified to avoid point symbols and line symbols. In an embodiment, the tags-to-avoid can be provided to a space search algorithm. In an embodiment, low priority labels can be ignored by certain label types and thus may be drawn over.
In an embodiment, for each position attempted by the search algorithm (e.g., for an airport label), a check can be made against the given deconfliction groups, and a conflict score can be calculated for the position (e.g., via a call to the Overlap Manager). In the score calculation, the overlap manager can use the weights discussed above to further enforce avoidance of higher priority labels. For example, in an embodiment, conflict with labels from groups of higher weight/priority contributes more to the score. In an embodiment, the label can be placed at the position of the lowest conflict score. In an embodiment, label priorities can be changed later (e.g., by a developer, controller, predetermined system settings, etc.) and labels can be added to a deconfliction group of choice for use in any subsequent deconfliction.
In step 304, the label bounds are divided into cells. For example, in an embodiment, the label bounds refer to an (invisible) pixel-based outline of the label that is being moved to each attempted pixel position of the search algorithm. In other words, the label bounds represent what the label footprint would be at a candidate position. In an embodiment, labels are placed within a maximum geographical (and/or spatial) range around the coordinates of the geographical (and/or spatial) feature, and a location for each label is selected based on conflicts with other labels. In an embodiment, the maximum range for placing a label can be a predetermined ranged (e.g., set by a programmer and/or user). In an embodiment, this predetermined range can be adjustable (e.g., by a programmer and/or a user).
In an embodiment, the label bounds can be divided based on the received feature position and dimensions. In an embodiment, the label bounds can be divided into a predetermined number of cells. In an embodiment, a cell can be assigned a predetermined size, and the label bounds can be divided based on how many cells of the predetermined size can fit inside the label bounds (e.g., larger label bounds can be configured to be divided into more cells than smaller label bounds).
In step 306, groups to check can be selected based on groups in the list of groups to check input in step 302. In an embodiment, each label type can be set to avoid specific other label types, as discussed above. For example, in an embodiment, airports labels can be specified to avoid point symbols and line symbols. In step 308, each label cell can be checked against each selected group. For example, in an embodiment, each cell can be checked to get the weights of whichever groups the cell overlaps. In step 310, the weighted overlap score can be added up. For example, in an embodiment, the weights of all the groups the cell overlaps can be added together to get a cell overlap weight score.
In step 312, a determination is made regarding whether the cell overlap score is zero. If the cell overlap score is zero, the method proceeds to step 314, where a label is drawn at the current position (e.g., because there are no conflicts for the label). If the cell overlap score is nonzero, a conflict for the label is detected, and the method proceeds to step 316. In step 316, a determination is made regarding whether a search limit has been reached. For example, in an embodiment, a search algorithm in accordance with an embodiment of the present disclosure can check every position for the label around/along the feature (e.g., within the maximum geographical range around the coordinates of the geographical feature). In an embodiment, once the last position around/along the feature has been checked, the search limit of step 316 has been reached. In step 318, if the search limit has not been reached, the method proceeds to step 304.
In step 320, if the search limit has been reached, the label is drawn at the position of minimum overlap score. For example, in an embodiment, if there is nowhere to place the feature without some overlap, the cell with the minimum overlap score can be selected. For example, in an embodiment, a label will “draw over” prior labels if there is no open space. In an embodiment, deconfliction group weights and the overlap score can be used to determine which labels to draw over.
In step 322, once the cell with the minimum overlap score is determined, the label is added to the deconfliction group/R* Tree given as “deconfliction group name” in step 302. In the future, when future labels are checked against this deconfliction group/R* Tree, the current label may show up in the deconfliction group/R* Tree query results (R Trees return any objects whose bounding boxes intersect a given query bounding box).
In an embodiment, using information in this database, vector clusters containing geographical (and/or spatial) data can be created using vector cluster software 506 and vector cluster file format 508. In an embodiment, these vector clusters can be passed as input to labeling system 510. In an embodiment, labeling system 510 can be configured to select positions for data from these vector clusters to be drawn on a map (and/or produce the map) using, for example, the methods described above with reference to
Image output from labeling system 510 can be sent to one or more output devices for display. For example, in
For example, in an embodiment, controller 602 can receive input from database 504 (e.g., in vector cluster file format 508) at step 302 of
Labeling system 510 can be implemented using hardware, software, and/or a combination of hardware and software. Labeling system 510 can be implemented using one device or multiple devices. Labeling system 510 can be implemented as a standalone device (e.g., a standalone special purpose labeling device) or can be integrated into a host device (e.g., a special purpose host device or a general purpose computer).
In step 704, geographical feature information (and/or any spatial feature information) for the geographical area (and/or spatial area) is determined. In an embodiment, once the user supplies data indicating the geographical area to labeling system 510, labeling system 510 can search an internal database of geographical feature entries that correspond to this geographical area. For example, in an embodiment, data sources 502 send periodic updates to database 504, which can be used to a create vector cluster, which can be input to labeling system 510. In an embodiment, labeling system 510 can search the vector cluster file for geographical feature entries that correspond to the geographical area. In an embodiment, the geographical features found in this search are stored in memory 608. In an embodiment, labeling system 510 can send a request to database 504 for geographical feature information that corresponds to the geographical area, and database 504 can send a response to labeling system 510 containing geographical feature entries.
In step 706, a symbol and a label for each geographical feature entry (and/or spatial feature entry) are determined. For example, in an embodiment, geographical feature entries contain information that labeling system 510 can use to generate symbols and labels. In an embodiment, geographical feature entries contain key value pairs that labeling system 510 can parse for symbol and label information, as well as geographical coordinates for these key value pairs. In an embodiment, each geographical feature entry corresponds to a single symbol and a single label (e.g., an airport symbol and an airport name).
In step 708, placement for symbols is determined (e.g., placement on a map or chart), and after the placement for each symbol is determined, each symbol is assigned to a deconfliction group. In an embodiment, each symbol is placed at the location of its geographical feature. In an embodiment, labeling system 510 determines the placement for all symbols for the geographical area before determining the placement for the first label. In an embodiment, after the placement for a symbol is determined, the symbol is added to a symbol deconfliction group. In an embodiment, although symbols are allowed to conflict with each other, symbols are added to deconfliction groups so that labels can be instructed to avoid these symbol deconfliction groups. In an embodiment, each symbol deconfliction group is assigned a priority or weight.
In step 710, placements for labels are determined, and after the placement of each label is determined, each label is assigned to a deconfliction group. In an embodiment, placements for these labels can be determined using the method of
In an embodiment, a user and/or programmer can define predetermined deconfliction groups and can assign each deconfliction group a weight. In an embodiment, after a placement for a symbol is determined, the symbol is added to symbol deconfliction group based on information in the geographical feature entry that corresponds to the symbol. For example, in an embodiment, an airport symbol has information in its geographical feature entry indicating that it is an airport, and labeling system 510 can parse this geographical feature entry, determine, based on this parsed information, that the symbol is an airport symbol, and assign the symbol to a deconfliction group for airport symbols based on this determination. In an embodiment, airport information can also be assigned to another group. For example, in an embodiment, an airport could be assigned to a group or point symbols in general (e.g., a group for airports, navaids, and/or waypoints).
In an embodiment, because placements for symbols are determined first, as labeling system 510 is determining a placement location for each label, labeling system 510 can be instructed to avoid placing the label next to symbols that have been placed into specific deconfliction groups. For example, each label can be associated with a geographical feature entry, and, labeling system 510 can parse the geographical feature entry to determine a label type for the label (e.g., labeling system 510 can determine that a label has a label type of “airport label” based on information labeling system 510 parses from the geographical feature entry associated with the label). In an embodiment, labeling system 510 can instruct labels of predefined types to avoid symbols (or other labels that have already been placed) of other predefined types.
Labeling system 510 can then search for areas within the maximum geographical (and/or spatial) range around the coordinates of the geographical feature that are not already occupied by symbols and labels that the label to be placed has been instructed to avoid. If there are no unoccupied places to place the label, labeling system 510 can place the label in the cell that has the minimum weighted overlap score. In an embodiment, once the label has been placed, it is added to a deconfliction group (e.g., based on parsed information in the geographical feature entry associated with the label), and the next label is processed.
In an embodiment, a label position that has the minimum weighted overlap score is selected based on determining: (1) the set of deconfliction groups against which the label should check for intersection (i.e. groups to avoid); (2) whether cells within a label intersect with any polygon in the deconfliction groups (e.g., whether polygonal cells within the label intersect with polygons of symbols and labels that were previously added to the deconfliction groups); and (3) weights for each deconfliction group intersected. Specifically, in an embodiment, to place a single label, the set of one or more label positions (Pmin) that have the minimum weighted overlap can be represented by Equation (1):
Pmin={pi∈P|f(pi)=min{f(p0),f(p1), . . . ,f(pn)}} (1)
In Equation (1), pi is in the sequence of candidate label positions, P={p0, p1, . . . pn}, ordered by distance from the feature being labeled, and f(pi) is the weighted overlap sum of all label cells at position pi. In an embodiment, f(pi) can be represented by Equation (2):
f(pi)=Σj=0qΣk=0rwk×g(cj,dk) (2)
In Equation (2), cell polygon cj is in the set of cell polygons {c0, c1, . . . , cq} (e.g. a grid) into which the label outline polygon (at position pi) is divided. In Equation (2), deconfliction group dk is in the set of deconfliction groups {d0, d1, . . . , dr} that the label has been instructed to avoid, with each group containing a set of outline polygons (of symbols or labels) that have been placed prior to the current placement procedure. In Equation (2), weight wk is in the set of weights {w0, w1, . . . , wr} one weight for each deconfliction group, and g is a binary intersection function that returns 0 if cj and dk do not intersect, or 1 if they do. In this function, cj is said to intersect dk if and only if cj intersects any of the polygons in dk.
In an embodiment, once all labels and symbols have been placed, labeling system 510 can send the placement information to an output device to be rendered and displayed to a user. For example, in an embodiment, output of labeling system 510 can be loaded on one or more aircraft displays 516, GIS software 518, and/or to mission/flight planning applications 524, as illustrated by
Embodiments of the present disclosure provide necessary information on a map when map features conflict without significantly impacting performance, which is especially useful for applications where all labels must be shown on a map, such as Aero. Embodiments of the present disclosure allow near print quality for completely dynamic maps, are computationally efficient, and will greatly reduce cartographic workload when used for print type products.
Embodiments of the present disclosure can move labels around to avoid each other (e.g., depending on their type/group). More labels are usually visible on-screen as a result. Airport and navaid labels, for example, can be placed many pixels away from the features they belong to, in any direction. This allows spaced to be filled that might go unused with standard methods. Due to the possible distance between label and feature, thin pointer lines are drawn between them to keep them visually paired.
It is to be appreciated that the Detailed Description, and not the Abstract, is intended to be used to interpret the claims. The Abstract may set forth one or more but not all exemplary embodiments of the present disclosure as contemplated by the inventor(s), and thus, is not intended to limit the present disclosure and the appended claims in any way.
The present disclosure has been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
The foregoing description of the specific embodiments will so fully reveal the general nature of the disclosure that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present disclosure. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
Any representative signal processing functions described herein can be implemented using computer processors, computer logic, application specific integrated circuits (ASIC), digital signal processors, etc., as will be understood by those skilled in the art based on the discussion given herein. Accordingly, any processor that performs the signal processing functions described herein is within the scope and spirit of the present disclosure.
The above systems and methods may be implemented using a computer program executing on a machine, a computer program product, or as a tangible and/or non-transitory computer-readable medium having stored instructions. For example, the functions described herein could be embodied by computer program instructions that are executed by a computer processor or any one of the hardware devices listed above. The computer program instructions cause the processor to perform the signal processing functions described herein. The computer program instructions (e.g., software) can be stored in a tangible non-transitory computer usable medium, computer program medium, or any storage medium that can be accessed by a computer or processor. Such media include a memory device such as a RAM or ROM, or other type of computer storage medium such as a computer disk or CD ROM. Accordingly, any tangible non-transitory computer storage medium having computer program code that cause a processor to perform the signal processing functions described herein are within the scope and spirit of the present disclosure.
While various embodiments of the present disclosure have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail can be made therein without departing from the spirit and scope of the disclosure. Thus, the breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments.
The United States Government has ownership rights in this invention. Licensing inquiries may be directed to Office of Technology Transfer at US Naval Research Laboratory, Code 1004, Washington, DC 20375, USA; +1.202.767.7230; techtran@nrl.navy.mil, referencing Navy Case Number 108183-US2.
Number | Name | Date | Kind |
---|---|---|---|
7131060 | Azuma | Oct 2006 | B1 |
9361719 | Demura | Jun 2016 | B1 |
10621770 | Docking | Apr 2020 | B1 |
20120143878 | Fendley | Jun 2012 | A1 |
20140267282 | Ren | Sep 2014 | A1 |
20180107346 | Wilson | Apr 2018 | A1 |
20190101397 | Belk | Apr 2019 | A1 |
Number | Date | Country | |
---|---|---|---|
20220082404 A1 | Mar 2022 | US |