mirror of
https://github.com/enzet/map-machine.git
synced 2025-05-21 13:06:25 +02:00
Fix code style.
This commit is contained in:
parent
b02b7cc4ab
commit
e5671fcf8f
12 changed files with 52 additions and 27 deletions
|
@ -1,6 +1,7 @@
|
|||
"""
|
||||
Construct Röntgen nodes and ways.
|
||||
"""
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from hashlib import sha256
|
||||
from typing import Any, Dict, Iterator, List, Optional, Set
|
||||
|
@ -17,9 +18,7 @@ from roentgen.flinger import Flinger
|
|||
from roentgen.icon import (
|
||||
DEFAULT_SMALL_SHAPE_ID, Icon, IconSet, ShapeExtractor, ShapeSpecification
|
||||
)
|
||||
from roentgen.osm_reader import (
|
||||
Map, OSMMember, OSMNode, OSMRelation, OSMWay, Tagged
|
||||
)
|
||||
from roentgen.osm_reader import Map, OSMNode, OSMRelation, OSMWay, Tagged
|
||||
from roentgen.point import Point
|
||||
from roentgen.scheme import DEFAULT_COLOR, LineStyle, Scheme
|
||||
from roentgen.util import MinMax
|
||||
|
@ -48,7 +47,7 @@ def line_center(nodes: List[OSMNode], flinger: Flinger) -> np.array:
|
|||
"""
|
||||
boundary: List[MinMax] = [MinMax(), MinMax()]
|
||||
|
||||
for node in nodes: # type: OSMNode
|
||||
for node in nodes:
|
||||
boundary[0].update(node.coordinates[0])
|
||||
boundary[1].update(node.coordinates[1])
|
||||
center_coordinates = np.array((boundary[0].center(), boundary[1].center()))
|
||||
|
@ -84,7 +83,7 @@ def glue(ways: List[OSMWay]) -> List[List[OSMNode]]:
|
|||
result: List[List[OSMNode]] = []
|
||||
to_process: Set[OSMWay] = set()
|
||||
|
||||
for way in ways: # type: OSMWay
|
||||
for way in ways:
|
||||
if way.is_cycle():
|
||||
result.append(way.nodes)
|
||||
else:
|
||||
|
@ -95,7 +94,7 @@ def glue(ways: List[OSMWay]) -> List[List[OSMNode]]:
|
|||
glued: Optional[OSMWay] = None
|
||||
other_way: Optional[OSMWay] = None
|
||||
|
||||
for other_way in to_process: # type: OSMWay
|
||||
for other_way in to_process:
|
||||
glued = way.try_to_glue(other_way)
|
||||
if glued:
|
||||
break
|
||||
|
@ -170,7 +169,7 @@ class Constructor:
|
|||
Construct Röntgen ways.
|
||||
"""
|
||||
way_number: int = 0
|
||||
for way_id in self.map_.ways: # type: int
|
||||
for way_id in self.map_.ways:
|
||||
ui.progress_bar(
|
||||
way_number,
|
||||
len(self.map_.ways),
|
||||
|
@ -226,7 +225,7 @@ class Constructor:
|
|||
self.roads.append(Road(line.tags, inners, outers, road_matcher))
|
||||
return
|
||||
|
||||
for line_style in line_styles: # type: LineStyle
|
||||
for line_style in line_styles:
|
||||
self.figures.append(
|
||||
StyledFigure(line.tags, inners, outers, line_style)
|
||||
)
|
||||
|
@ -308,7 +307,7 @@ class Constructor:
|
|||
continue
|
||||
inner_ways: List[OSMWay] = []
|
||||
outer_ways: List[OSMWay] = []
|
||||
for member in relation.members: # type: OSMMember
|
||||
for member in relation.members:
|
||||
if member.type_ == "way":
|
||||
if member.role == "inner":
|
||||
if member.ref in self.map_.ways:
|
||||
|
@ -317,7 +316,7 @@ class Constructor:
|
|||
if member.ref in self.map_.ways:
|
||||
outer_ways.append(self.map_.ways[member.ref])
|
||||
else:
|
||||
print(f'Unknown member role "{member.role}".')
|
||||
logging.warning(f'Unknown member role "{member.role}".')
|
||||
if outer_ways:
|
||||
inners_path: List[List[OSMNode]] = glue(inner_ways)
|
||||
outers_path: List[List[OSMNode]] = glue(outer_ways)
|
||||
|
@ -334,7 +333,7 @@ class Constructor:
|
|||
key=lambda x: -self.map_.nodes[x].coordinates[0],
|
||||
)
|
||||
|
||||
for node_id in sorted_node_ids: # type: int
|
||||
for node_id in sorted_node_ids:
|
||||
processed: Set[str] = set()
|
||||
|
||||
node_number += 1
|
||||
|
|
|
@ -7,6 +7,9 @@ from roentgen.osm_reader import OSMNode, Tagged
|
|||
from roentgen.road import Lane
|
||||
from roentgen.scheme import LineStyle, RoadMatcher, Scheme
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
class Figure(Tagged):
|
||||
"""
|
||||
|
@ -182,7 +185,7 @@ def is_clockwise(polygon: List[OSMNode]) -> bool:
|
|||
:param polygon: list of OpenStreetMap nodes
|
||||
"""
|
||||
count: float = 0
|
||||
for index, node in enumerate(polygon): # type: int, OSMNode
|
||||
for index, node in enumerate(polygon):
|
||||
next_index: int = 0 if index == len(polygon) - 1 else index + 1
|
||||
count += (polygon[next_index].coordinates[0] - node.coordinates[0]) * (
|
||||
polygon[next_index].coordinates[1] + node.coordinates[1]
|
||||
|
@ -214,7 +217,7 @@ def get_path(nodes: List[OSMNode], shift: np.array, flinger: Flinger) -> str:
|
|||
"""
|
||||
path: str = ""
|
||||
prev_node: Optional[OSMNode] = None
|
||||
for node in nodes: # type: OSMNode
|
||||
for node in nodes:
|
||||
flung = flinger.fling(node.coordinates) + shift
|
||||
path += ("L" if prev_node else "M") + f" {flung[0]},{flung[1]} "
|
||||
prev_node = node
|
||||
|
|
|
@ -7,7 +7,7 @@ import re
|
|||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional, Set
|
||||
from xml.dom.minidom import Document, Element, Node, parse
|
||||
from xml.dom.minidom import Document, Element, parse
|
||||
|
||||
import numpy as np
|
||||
import svgwrite
|
||||
|
@ -183,10 +183,10 @@ class ShapeExtractor:
|
|||
)
|
||||
with svg_file_name.open() as input_file:
|
||||
content: Document = parse(input_file)
|
||||
for element in content.childNodes: # type: Element
|
||||
for element in content.childNodes:
|
||||
if element.nodeName != "svg":
|
||||
continue
|
||||
for node in element.childNodes: # type: Node
|
||||
for node in element.childNodes:
|
||||
if isinstance(node, Element):
|
||||
self.parse(node)
|
||||
|
||||
|
|
|
@ -13,6 +13,9 @@ from roentgen.icon import ShapeExtractor
|
|||
from roentgen.osm_reader import STAGES_OF_DECAY
|
||||
from roentgen.scheme import Scheme, Matcher
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
class MapCSSWriter:
|
||||
def __init__(
|
||||
|
@ -71,7 +74,7 @@ class MapCSSWriter:
|
|||
|
||||
return selector
|
||||
|
||||
def write(self, output_file) -> None:
|
||||
def write(self, output_file: Path) -> None:
|
||||
"""
|
||||
Construct icon selectors for MapCSS 0.2 scheme.
|
||||
"""
|
||||
|
|
|
@ -17,7 +17,7 @@ from roentgen.figure import Road
|
|||
from roentgen.flinger import Flinger
|
||||
from roentgen.icon import ShapeExtractor
|
||||
from roentgen.osm_reader import Map, OSMNode
|
||||
from roentgen.point import Occupied, Point
|
||||
from roentgen.point import Occupied
|
||||
from roentgen.road import Intersection, RoadPart
|
||||
from roentgen.scheme import Scheme
|
||||
|
||||
|
@ -100,7 +100,7 @@ class Painter:
|
|||
nodes = sorted(constructor.points, key=lambda x: -x.priority)
|
||||
steps: int = len(nodes)
|
||||
|
||||
for index, node in enumerate(nodes): # type: int, Point
|
||||
for index, node in enumerate(nodes):
|
||||
if node.get_tag("natural") == "tree" and (
|
||||
"diameter_crown" in node.tags or "circumference" in node.tags
|
||||
):
|
||||
|
@ -110,13 +110,13 @@ class Painter:
|
|||
)
|
||||
node.draw_main_shapes(self.svg, occupied)
|
||||
|
||||
for index, point in enumerate(nodes): # type: int, Point
|
||||
for index, point in enumerate(nodes):
|
||||
ui.progress_bar(
|
||||
steps + index, steps * 3, step=10, text="Drawing extra icons"
|
||||
)
|
||||
point.draw_extra_shapes(self.svg, occupied)
|
||||
|
||||
for index, point in enumerate(nodes): # type: int, Point
|
||||
for index, point in enumerate(nodes):
|
||||
ui.progress_bar(
|
||||
steps * 2 + index, steps * 3, step=10, text="Drawing texts"
|
||||
)
|
||||
|
@ -181,7 +181,7 @@ class Painter:
|
|||
)
|
||||
building_shade.add(path)
|
||||
for nodes in building.inners + building.outers:
|
||||
for i in range(len(nodes) - 1): # type: int
|
||||
for i in range(len(nodes) - 1):
|
||||
flung_1 = self.flinger.fling(nodes[i].coordinates)
|
||||
flung_2 = self.flinger.fling(nodes[i + 1].coordinates)
|
||||
command = (
|
||||
|
@ -260,7 +260,7 @@ class Painter:
|
|||
"""
|
||||
Draw gradient sectors for directions.
|
||||
"""
|
||||
for node in constructor.points: # type: Point
|
||||
for node in constructor.points:
|
||||
|
||||
angle = None
|
||||
is_revert_gradient: bool = False
|
||||
|
|
|
@ -3,6 +3,9 @@ import subprocess
|
|||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
def rasterize(from_: Path, to_: Path, area: str = "", dpi: float = 90) -> None:
|
||||
"""
|
||||
|
|
|
@ -11,6 +11,9 @@ from roentgen.flinger import Flinger
|
|||
from roentgen.osm_reader import OSMNode
|
||||
from roentgen.vector import Line, angle, norm, turn_by_angle
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
@dataclass
|
||||
class Lane:
|
||||
|
|
|
@ -303,7 +303,7 @@ class Scheme:
|
|||
"""
|
||||
if key in self.tags_to_write or key in self.tags_to_skip:
|
||||
return True
|
||||
for prefix in self.prefix_to_write + self.prefix_to_skip: # type: str
|
||||
for prefix in self.prefix_to_write + self.prefix_to_skip:
|
||||
if key[: len(prefix) + 1] == f"{prefix}:":
|
||||
return True
|
||||
return False
|
||||
|
@ -319,7 +319,7 @@ class Scheme:
|
|||
return False
|
||||
if key in self.tags_to_write:
|
||||
return True
|
||||
for prefix in self.prefix_to_write: # type: str
|
||||
for prefix in self.prefix_to_write:
|
||||
if key[: len(prefix) + 1] == f"{prefix}:":
|
||||
return True
|
||||
return False
|
||||
|
|
|
@ -7,6 +7,9 @@ from roentgen.workspace import workspace
|
|||
from roentgen.raster import rasterize
|
||||
from roentgen.tile import Tile
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
class Handler(BaseHTTPRequestHandler):
|
||||
|
||||
|
|
|
@ -24,6 +24,9 @@ from roentgen.scheme import Scheme
|
|||
from roentgen.util import MinMax
|
||||
from roentgen.ui import BoundaryBox
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
@dataclass
|
||||
class Tiles:
|
||||
|
@ -267,7 +270,7 @@ class Tile:
|
|||
)
|
||||
painter.draw(constructor)
|
||||
|
||||
print(f"Writing output SVG {output_file_name}...")
|
||||
logging.info(f"Writing output SVG {output_file_name}...")
|
||||
with output_file_name.open("w") as output_file:
|
||||
svg.write(output_file)
|
||||
|
||||
|
@ -301,5 +304,7 @@ def ui(options) -> None:
|
|||
tiles.draw(directory, Path(options.cache))
|
||||
tiles.draw_image(Path(options.cache))
|
||||
else:
|
||||
logging.fatal("Specify either --coordinates, or --tile.")
|
||||
logging.fatal(
|
||||
"Specify either --coordinates, --boundary-box, or --tile."
|
||||
)
|
||||
sys.exit(1)
|
||||
|
|
|
@ -3,6 +3,9 @@ Vector utility.
|
|||
"""
|
||||
import numpy as np
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
def angle(vector: np.array):
|
||||
"""
|
||||
|
|
|
@ -3,6 +3,9 @@ File and directory path in the project.
|
|||
"""
|
||||
from pathlib import Path
|
||||
|
||||
__author__ = "Sergey Vartanov"
|
||||
__email__ = "me@enzet.ru"
|
||||
|
||||
|
||||
def check_and_create(directory: Path) -> Path:
|
||||
"""Create directory if it doesn't exist and return it."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue