Parses the structure and extracts elements for lowest and highest zooms for each rule.
(drules)
| 6 | import drules_struct_pb2 |
| 7 | |
| 8 | def read_drules(drules): |
| 9 | """Parses the structure and extracts elements for lowest and highest zooms |
| 10 | for each rule.""" |
| 11 | result = {} |
| 12 | |
| 13 | for rule in drules.cont: |
| 14 | zooms = [None, None] |
| 15 | for elem in rule.element: |
| 16 | if elem.scale >= 0: |
| 17 | if zooms[1] is None or elem.scale > zooms[1].scale: |
| 18 | zooms[1] = elem |
| 19 | if zooms[0] is None or elem.scale < zooms[0].scale: |
| 20 | zooms[0] = elem |
| 21 | |
| 22 | if zooms[0] is not None: |
| 23 | name = str(rule.name) |
| 24 | if name in result: |
| 25 | if result[name][0].scale < zooms[0].scale: |
| 26 | zooms[0] = result[name][0] |
| 27 | if result[name][1].scale > zooms[1].scale: |
| 28 | zooms[1] = result[name][1] |
| 29 | result[name] = zooms |
| 30 | return result |
| 31 | |
| 32 | def zooms_string(z1, z2): |
| 33 | """Prints 'zoom N' or 'zooms N-M'.""" |