예제 #1
0
 def test_multiple_utm_zones(self):
     nodes = [
         Node.create_node(2, 48.16256981067, 11.5868239213).to_xml(),
         Node.create_node(1, 48.16254537153, 11.58697933476).to_xml(),
         Node.create_node(-3, 48.16255438099, 33.58692204178).to_xml(),
     ]  # wrong zone
     lookup = OsmLookup()
     self.assertRaises(RuntimeError, lookup.load, nodes)
예제 #2
0
 def test_duplicated_latlon(self):
     nodes = [
         Node.create_node(2, 48.16256981067, 11.5868239213).to_xml(),
         Node.create_node(1, 48.16254537153, 11.58697933476).to_xml(),
         Node.create_node(-3, 48.16254537153, 11.58697933476).to_xml(),
     ]
     lookup = OsmLookup(strict=True)
     self.assertRaises(OsmLookupError, lookup.load, nodes)
     self.assertEqual(len(lookup.latlon_to_node_errors), 1)
예제 #3
0
 def test_duplicated_ids_positive(self):
     nodes = [
         Node.create_node(2, 48.16256981067, 11.5868239213).to_xml(),
         Node.create_node(3, 48.16254537153, 11.58697933476).to_xml(),
         Node.create_node(3, 48.16255438099, 11.58692204178).to_xml(),
     ]
     lookup = OsmLookup(strict=True)
     lookup.load(nodes)
     self.assertEqual(len(lookup.latlon_to_node_errors), 0)
예제 #4
0
    def test_load(self):
        nodes = [
            Node.create_node(2, 48.16256981067, 11.5868239213).to_xml(),
            Node.create_node(1, 48.16254537153, 11.58697933476).to_xml(),
            Node.create_node(-3, 48.16255438099, 11.58692204178).to_xml(),
        ]
        lookup = OsmLookup()
        lookup.load(nodes)

        self.assertDictEqual(lookup.latlon_to_node_errors, {})
        self.assertEqual(len(lookup.zone_map), 1)
        self.assertTupleEqual(list(lookup.zone_map.keys())[0], (32, "U"))

        self.assertEqual(len(lookup.latlon_to_node), 3)
        self.assertEqual(len(lookup.node_to_utm), 3)
        self.assertEqual(len(lookup.node_to_latlon), 3)
예제 #5
0
 def test_create(self):
     way = Way.create(
         -3,
         [
             Node.create_node(1, 1, 2),
             Node.create_node(2, 3, 4),
             Node.create_node(3, 5, 6),
         ],
         att={"foo": "bar"},
         tags={"baz": 42},
     )
     self.assertEqual(way.id, -3)
     self.assertEqual(way.action, "modify")
     self.assertEqual(way.visible, "true")
     self.assertDictEqual(way.attr, {"foo": "bar"})
     self.assertListEqual(way.nds, [Nd(1), Nd(2), Nd(3)])
     self.assertListEqual(way.tags, [Tag("rover:id", 3), Tag("baz", 42)])
예제 #6
0
    def test_remove(self):
        nodes = [
            Node.create_node(2, 48.16256981067, 11.5868239213).to_xml(),
            Node.create_node(1, 48.16254537153, 11.58697933476).to_xml(),
            Node.create_node(-3, 48.16255438099, 11.58692204178).to_xml(),
        ]
        lookup = OsmLookup()
        lookup.load(nodes)

        self.assertEqual(len(lookup.latlon_to_node), 3)
        self.assertEqual(len(lookup.node_to_utm), 3)
        self.assertEqual(len(lookup.node_to_latlon), 3)

        lookup.remove(2)
        self.assertEqual(len(lookup.latlon_to_node), 2)
        self.assertEqual(len(lookup.node_to_utm), 2)
        self.assertEqual(len(lookup.node_to_latlon), 2)
예제 #7
0
    def test_add(self):
        node1 = Node.create_node(2, 48.16256981067, 11.5868239213)
        node2 = Node.create_node(1, 48.16254537153, 11.58697933476)

        lookup = OsmLookup()
        lookup.add(2, (node1.lat, node1.lon), (3, 5))
        self.assertEqual(len(lookup.node_to_latlon), 1)
        self.assertEqual(len(lookup.node_to_utm), 1)
        self.assertEqual(len(lookup.latlon_to_node), 1)

        lookup.add(2, (node1.lat, node1.lon), (3, 5))
        self.assertEqual(len(lookup.node_to_latlon), 1)
        self.assertEqual(len(lookup.node_to_utm), 1)
        self.assertEqual(len(lookup.latlon_to_node), 1)

        lookup.add(1, (node2.lat, node2.lon), (3, 7))
        self.assertEqual(len(lookup.node_to_latlon), 2)
        self.assertEqual(len(lookup.node_to_utm), 2)
        self.assertEqual(len(lookup.latlon_to_node), 2)
예제 #8
0
 def test_to_xml(self):
     node = Node.create_node(1, 3, 5)
     node.add_tag("foo", "bar")
     str_xml = b'<node id="1" action="modify" visible="true" lon="5" lat="3"><tag k="rover:id" v="1"/><tag k="foo" v="bar"/></node>'
     self.assertEquals(etree.tostring(node.to_xml()), str_xml)
예제 #9
0
 def test_tags(self):
     node = Node.create_node(1, 3, 5)
     node.add_tag("foo", "bar")
     self.assertListEqual(
         node.tags,
         [Tag("rover:id", 1), Tag("foo", "bar")])
예제 #10
0
 def test_equals(self):
     node1 = Node.create_node(1, 3, 5)
     node2 = Node.create_node(2, 4, 4)
     node3 = Node.create_node(1, 3, 5)
     self.assertEquals(node1, node3)
     self.assertNotEqual(node1, node2)
예제 #11
0
 def test_create_node(self):
     node = Node.create_node(1, 3, 5)
     self.assertEqual(node.id, 1)
     self.assertEqual(node.lat, 3)
     self.assertEqual(node.lon, 5)