diff --git a/roentgen/constructor.py b/roentgen/constructor.py
index 8ecf97f..5e3a85f 100644
--- a/roentgen/constructor.py
+++ b/roentgen/constructor.py
@@ -170,20 +170,20 @@ class Constructor:
Construct Röntgen ways.
"""
way_number: int = 0
- for way_id in self.map_.way_map: # type: int
+ for way_id in self.map_.ways: # type: int
ui.progress_bar(
way_number,
- len(self.map_.way_map),
+ len(self.map_.ways),
step=10,
text="Constructing ways",
)
way_number += 1
- way: OSMWay = self.map_.way_map[way_id]
+ way: OSMWay = self.map_.ways[way_id]
if not self.check_level(way.tags):
continue
self.construct_line(way, [], [way.nodes])
- ui.progress_bar(-1, len(self.map_.way_map), text="Constructing ways")
+ ui.progress_bar(-1, len(self.map_.ways), text="Constructing ways")
def construct_line(
self,
@@ -294,8 +294,8 @@ class Constructor:
"""
Construct Röntgen ways from OSM relations.
"""
- for relation_id in self.map_.relation_map:
- relation: OSMRelation = self.map_.relation_map[relation_id]
+ for relation_id in self.map_.relations:
+ relation: OSMRelation = self.map_.relations[relation_id]
tags = relation.tags
if not self.check_level(tags):
continue
@@ -306,11 +306,11 @@ class Constructor:
for member in relation.members: # type: OSMMember
if member.type_ == "way":
if member.role == "inner":
- if member.ref in self.map_.way_map:
- inner_ways.append(self.map_.way_map[member.ref])
+ if member.ref in self.map_.ways:
+ inner_ways.append(self.map_.ways[member.ref])
elif member.role == "outer":
- if member.ref in self.map_.way_map:
- outer_ways.append(self.map_.way_map[member.ref])
+ if member.ref in self.map_.ways:
+ outer_ways.append(self.map_.ways[member.ref])
else:
print(f'Unknown member role "{member.role}".')
if outer_ways:
@@ -325,8 +325,8 @@ class Constructor:
node_number: int = 0
sorted_node_ids: Iterator[int] = sorted(
- self.map_.node_map.keys(),
- key=lambda x: -self.map_.node_map[x].coordinates[0],
+ self.map_.nodes.keys(),
+ key=lambda x: -self.map_.nodes[x].coordinates[0],
)
missing_tags = Counter()
@@ -334,9 +334,9 @@ class Constructor:
for node_id in sorted_node_ids: # type: int
node_number += 1
ui.progress_bar(
- node_number, len(self.map_.node_map), text="Constructing nodes"
+ node_number, len(self.map_.nodes), text="Constructing nodes"
)
- node: OSMNode = self.map_.node_map[node_id]
+ node: OSMNode = self.map_.nodes[node_id]
flung = self.flinger.fling(node.coordinates)
tags = node.tags
@@ -379,4 +379,4 @@ class Constructor:
if key not in icon_set.processed
)
- ui.progress_bar(-1, len(self.map_.node_map), text="Constructing nodes")
+ ui.progress_bar(-1, len(self.map_.nodes), text="Constructing nodes")
diff --git a/roentgen/osm_reader.py b/roentgen/osm_reader.py
index 4b6c046..58356db 100644
--- a/roentgen/osm_reader.py
+++ b/roentgen/osm_reader.py
@@ -59,6 +59,9 @@ class OSMNode(Tagged):
@classmethod
def from_xml_structure(cls, element, is_full: bool = False) -> "OSMNode":
+ """
+ Parse node from OSM XML `` element.
+ """
node = cls()
attributes = element.attrib
node.id_ = int(attributes["id"])
@@ -114,6 +117,9 @@ class OSMWay(Tagged):
@classmethod
def from_xml_structure(cls, element, nodes, is_full: bool) -> "OSMWay":
+ """
+ Parse way from OSM XML `` element.
+ """
way = cls(int(element.attrib["id"]))
if is_full:
way.visible = element.attrib["visible"]
@@ -188,6 +194,9 @@ class OSMRelation(Tagged):
@classmethod
def from_xml_structure(cls, element, is_full: bool) -> "OSMRelation":
+ """
+ Parse relation from OSM XML `` element.
+ """
attributes = element.attrib
relation = cls(int(attributes["id"]))
if is_full:
@@ -245,39 +254,39 @@ class Map:
"""
def __init__(self):
- self.node_map: Dict[int, OSMNode] = {}
- self.way_map: Dict[int, OSMWay] = {}
- self.relation_map: Dict[int, OSMRelation] = {}
+ self.nodes: Dict[int, OSMNode] = {}
+ self.ways: Dict[int, OSMWay] = {}
+ self.relations: Dict[int, OSMRelation] = {}
self.authors: Set[str] = set()
self.time: MinMax = MinMax()
self.boundary_box: List[MinMax] = [MinMax(), MinMax()]
- def add_node(self, node: OSMNode):
+ def add_node(self, node: OSMNode) -> None:
"""
Add node and update map parameters.
"""
- self.node_map[node.id_] = node
+ self.nodes[node.id_] = node
if node.user:
self.authors.add(node.user)
self.time.update(node.timestamp)
self.boundary_box[0].update(node.coordinates[0])
self.boundary_box[1].update(node.coordinates[1])
- def add_way(self, way: OSMWay):
+ def add_way(self, way: OSMWay) -> None:
"""
Add way and update map parameters.
"""
- self.way_map[way.id_] = way
+ self.ways[way.id_] = way
if way.user:
self.authors.add(way.user)
self.time.update(way.timestamp)
- def add_relation(self, relation: OSMRelation):
+ def add_relation(self, relation: OSMRelation) -> None:
"""
Add relation and update map parameters.
"""
- self.relation_map[relation.id_] = relation
+ self.relations[relation.id_] = relation
class OverpassReader:
@@ -321,6 +330,8 @@ class OverpassReader:
class OSMReader:
"""
OpenStreetMap XML file parser.
+
+ See https://wiki.openstreetmap.org/wiki/OSM_XML
"""
def __init__(
@@ -375,7 +386,7 @@ class OSMReader:
if element.tag == "way" and self.parse_ways:
self.map_.add_way(
OSMWay.from_xml_structure(
- element, self.map_.node_map, self.is_full
+ element, self.map_.nodes, self.is_full
)
)
if element.tag == "relation" and self.parse_relations:
diff --git a/test/test_osm_reader.py b/test/test_osm_reader.py
index fa8a681..030500a 100644
--- a/test/test_osm_reader.py
+++ b/test/test_osm_reader.py
@@ -19,8 +19,8 @@ def test_node() -> None:
"""
)
- assert 42 in map_.node_map
- node: OSMNode = map_.node_map[42]
+ assert 42 in map_.nodes
+ node: OSMNode = map_.nodes[42]
assert node.id_ == 42
assert np.allclose(node.coordinates, np.array([10, 5]))
@@ -38,8 +38,8 @@ def test_node_with_tag() -> None:
"""
)
- assert 42 in map_.node_map
- node: OSMNode = map_.node_map[42]
+ assert 42 in map_.nodes
+ node: OSMNode = map_.nodes[42]
assert node.id_ == 42
assert np.allclose(node.coordinates, np.array([10, 5]))
assert node.tags["key"] == "value"
@@ -56,8 +56,8 @@ def test_way() -> None:
"""
)
- assert 42 in map_.way_map
- way: OSMWay = map_.way_map[42]
+ assert 42 in map_.ways
+ way: OSMWay = map_.ways[42]
assert way.id_ == 42
@@ -76,7 +76,7 @@ def test_nodes() -> None:
"""
)
- way: OSMWay = map_.way_map[2]
+ way: OSMWay = map_.ways[2]
assert len(way.nodes) == 1
assert way.nodes[0].id_ == 1
assert way.tags["key"] == "value"
@@ -100,8 +100,8 @@ def test_relation() -> None:
"""
)
- assert 3 in map_.relation_map
- relation: OSMRelation = map_.relation_map[3]
+ assert 3 in map_.relations
+ relation: OSMRelation = map_.relations[3]
assert relation.id_ == 3
assert relation.tags["key"] == "value"
assert len(relation.members) == 1