diff --git a/doc/grid.svg b/doc/grid.svg index 3b6f1fe..921baed 100644 --- a/doc/grid.svg +++ b/doc/grid.svg @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/map_machine/doc/moire_manager.py b/map_machine/doc/moire_manager.py index e24f14e..3363828 100644 --- a/map_machine/doc/moire_manager.py +++ b/map_machine/doc/moire_manager.py @@ -154,7 +154,7 @@ class MapMachineMoire(Default, ABC): elif command == "map": cli.add_map_arguments(parser) elif command == "element": - cli.add_element_arguments(parser) + cli.add_draw_arguments(parser) elif command == "mapcss": cli.add_mapcss_arguments(parser) else: diff --git a/map_machine/element/element.py b/map_machine/element/element.py index 35dd4d8..d3b927c 100644 --- a/map_machine/element/element.py +++ b/map_machine/element/element.py @@ -1,12 +1,14 @@ -import sys +import argparse from pathlib import Path from map_machine.element.grid import Grid from map_machine.osm.osm_reader import Tags, OSMNode -def draw_node(): - pass +def draw_node(tags: Tags, path: Path): + grid: Grid = Grid(x_step=0.0003, show_credit=False, margin=0.5) + grid.add_node(tags, 0, 0) + grid.draw(path) def draw_way(): @@ -24,13 +26,15 @@ def draw_area(tags: Tags, path: Path): node, ] grid.add_way(tags, nodes) - grid.draw(path) -if __name__ == "__main__": - tags: str = sys.argv[1] - path: str = sys.argv[2] - draw_area( - {x.split("=")[0]: x.split("=")[1] for x in tags.split(",")}, Path(path) - ) +def draw_element(options: argparse.Namespace): + + tags_description: Tags = { + x.split("=")[0]: x.split("=")[1] for x in options.tags.split(",") + } + if options.type == "area": + draw_area(tags_description, Path(options.output_file)) + elif options.type == "node": + draw_node(tags_description, Path(options.output_file)) diff --git a/map_machine/main.py b/map_machine/main.py index 6462851..64aefba 100644 --- a/map_machine/main.py +++ b/map_machine/main.py @@ -58,8 +58,8 @@ def main() -> None: mapcss.generate_mapcss(arguments) - elif arguments.command == "element": - from map_machine.element.node import draw_element + elif arguments.command == "draw": + from map_machine.element.element import draw_element draw_element(arguments) diff --git a/map_machine/ui/cli.py b/map_machine/ui/cli.py index e55906d..8cdd0c1 100644 --- a/map_machine/ui/cli.py +++ b/map_machine/ui/cli.py @@ -18,7 +18,7 @@ COMMAND_LINES: dict[str, list[str]] = { ], "icons": ["icons"], "mapcss": ["mapcss"], - "element": ["element", "--node", "amenity=bench,material=wood"], + "draw": ["draw", "node", "amenity=bench,material=wood"], "tile": ["tile", "--coordinates", "50.000,40.000"], } COMMANDS: list[str] = [ @@ -85,9 +85,9 @@ def parse_arguments(args: list[str]) -> argparse.Namespace: help="run tile server", ) ) - add_element_arguments( + add_draw_arguments( subparser.add_parser( - "element", + "draw", description="Draw map element separately.", help="draw OSM element: node, way, relation", ) @@ -274,11 +274,11 @@ def add_server_arguments(parser: argparse.ArgumentParser) -> None: ) -def add_element_arguments(parser: argparse.ArgumentParser) -> None: +def add_draw_arguments(parser: argparse.ArgumentParser) -> None: """Add arguments for element command.""" - parser.add_argument("-n", "--node") - parser.add_argument("-w", "--way") - parser.add_argument("-r", "--relation") + parser.add_argument("type") + parser.add_argument("tags") + parser.add_argument("-o", "--output-file", default="out/element.svg") def add_render_arguments(parser: argparse.ArgumentParser) -> None: diff --git a/map_machine/ui/completion.py b/map_machine/ui/completion.py index 558b9b6..270c360 100644 --- a/map_machine/ui/completion.py +++ b/map_machine/ui/completion.py @@ -68,7 +68,7 @@ def completion_commands() -> str: cli.add_tile_arguments(parser) cli.add_map_arguments(parser) elif command == "element": - cli.add_element_arguments(parser) + cli.add_draw_arguments(parser) elif command == "mapcss": cli.add_mapcss_arguments(parser) else: diff --git a/tests/test_command_line.py b/tests/test_command_line.py index 585cc55..7ce8c89 100644 --- a/tests/test_command_line.py +++ b/tests/test_command_line.py @@ -111,21 +111,21 @@ def test_mapcss() -> None: assert (out_path / "icons" / "LICENSE").is_file() -def test_element() -> None: - """Test `element` command.""" +def test_draw() -> None: + """Test `draw` command.""" run( - COMMAND_LINES["element"], - b"INFO Element is written to out/element.svg.\n", + COMMAND_LINES["draw"], + LOG + b"INFO Map is drawn to out/element.svg.\n", ) assert (OUTPUT_PATH / "element.svg").is_file() -def test_unwrapped_element() -> None: +def test_unwrapped_draw() -> None: """Test `element` command from inside the project.""" arguments: argparse.Namespace = parse_arguments( - ["map_machine"] + COMMAND_LINES["element"] + ["map_machine"] + COMMAND_LINES["draw"] ) - from map_machine.element.node import draw_element + from map_machine.element.element import draw_element draw_element(arguments)