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)