예제 #1
0
    def _run(data,
             node=None,
             way=None,
             relation=None,
             area=None,
             changeset=None,
             locations=False):
        cnt = count()

        def _m(func):
            if func is None:
                return None

            def _inner(obj):
                next(cnt)
                func(obj)

            return _inner

        handler = o.make_simple_handler(node=_m(node),
                                        way=_m(way),
                                        relation=_m(relation),
                                        area=_m(area),
                                        changeset=_m(changeset))
        apply_func(handler, to_opl(data), locations, tmp_path)

        return next(cnt)
예제 #2
0
 def test_keep_reference(self):
     h = o.make_simple_handler(node=self.node, way=self.way,
                               relation=self.relation, area=self.area)
     with pytest.raises(RuntimeError, match="callback keeps reference"):
           h.apply_file(TEST_DIR / 'example-test.pbf')
     assert self.refkeeper
     while len(self.refkeeper) > 0:
         self.refkeeper.pop()
예제 #3
0
 def test_keep_reference(self):
     h = o.make_simple_handler(node=self.node, way=self.way,
                               relation=self.relation, area=self.area)
     # Does not rise a dangling reference excpetion
     h.apply_file(TEST_DIR / 'example-test.pbf')
     assert self.refkeeper
     while len(self.refkeeper) > 0:
         self.refkeeper.pop()
예제 #4
0
    def _run(factory, data='n1 x-23.3 y28.0'):
        geoms = []
        def _mk_point(node):
            geoms.append(factory.create_point(node))
        handler = o.make_simple_handler(node=_mk_point)
        handler.apply_file(test_data(data))

        assert len(geoms) == 1
        return geoms[0]
예제 #5
0
 def apply(self):
     n_callback = self.nh.callback if self.nh else None
     w_callback = self.wh.callback if self.wh else None
     r_callback = self.rh.callback if self.rh else None
     a_callback = self.ah.callback if self.ah else None
     h = osmium.make_simple_handler(node=n_callback, way=w_callback, relation=r_callback, area=a_callback)
     h.apply_file('data/data.osm.pbf', locations=True)
     if self.wh and self.ah:
         self.remove_duplicate_areas()
예제 #6
0
    def _run(factory):
        opl = test_data(['n1 x0 y0', 'n2 x1 y0', 'n3 x0 y1', 'w23 Nn1,n2,n3,n1 Tarea=yes'])
        geoms = []
        def _mk_area(a):
            geoms.append(factory.create_multipolygon(a))

        handler = o.make_simple_handler(area=_mk_area)
        handler.apply_file(opl, locations=True)

        assert len(geoms) == 1
        return geoms[0]
예제 #7
0
def test_haversine():
    data = ['n1 x0 y0', 'n2 x1 y0', 'n3 x0 y1', 'w1 Nn1,n2,n3']

    results = []
    def call_haversine(w):
        results.append(o.geom.haversine_distance(w.nodes))

    handler = o.make_simple_handler(way=call_haversine)
    handler.apply_buffer('\n'.join(data).encode('utf-8'), 'opl', locations=True)

    assert 1 == len(results)
    assert 268520 == pytest.approx(results[0])
예제 #8
0
 def _run(data,
          node=None,
          way=None,
          relation=None,
          area=None,
          locations=False):
     handler = o.make_simple_handler(node=node,
                                     way=way,
                                     relation=relation,
                                     area=area)
     handler.apply_buffer(to_opl(data).encode('utf-8'),
                          'opl',
                          locations=locations)
예제 #9
0
def main(osmfile):
    nodes = Stats()
    ways = Stats()
    rels = Stats()

    h = o.make_simple_handler(node=nodes, way=ways, relation=rels)

    h.apply_file(osmfile)

    nodes.outstats("Nodes")
    ways.outstats("Ways")
    rels.outstats("Relations")

    return 0
예제 #10
0
 def get_track(self, relation):
     """Returns `Point, Feature(MultiLineStrings)`."""
     tags = relation['tags']
     ids = self.rh.get_ids(relation)
     nh_callback = self.nh.callback if ids['n'] else None
     wh_callback = self.wh.callback if ids['w'] else None
     self.nh.tag_filters = [{'public_transport': 'stop_position'}]
     self.nh.reg = self.nh._reg_filter()
     self.nh.id_filter = ids['n']
     self.wh.id_filter = ids['w']
     h2 = o.make_simple_handler(node=nh_callback, way=wh_callback)
     h2.apply_file(self.osm_file, locations=True)
     pf, mlf = self.get_features(tags)
     return pf, mlf
예제 #11
0
    def _run(factory):
        opl = test_data(['n1 x0 y0', 'n2 x1 y0', 'n3 x0 y1', 'w1 Nn1,n2,n3'])
        geoms = []
        def _mk_way(w):
            geoms.append(factory.create_linestring(w))
            geoms.append(factory.create_linestring(w,
                                          direction=o.geom.direction.BACKWARD))
            geoms.append(factory.create_linestring(w,
                                          use_nodes=o.geom.use_nodes.ALL))

        handler = o.make_simple_handler(way=_mk_way)
        handler.apply_file(opl, locations=True)

        assert len(geoms) == 3
        return geoms
 def test_keep_reference(self):
     h = o.make_simple_handler(node=self.node,
                               way=self.way,
                               relation=self.relation,
                               area=self.area)
     if python_version < (3, 0):
         with self.assertRaisesRegexp(RuntimeError,
                                      "callback keeps reference"):
             h.apply_file('example-test.pbf')
     else:
         with self.assertRaisesRegex(RuntimeError,
                                     "callback keeps reference"):
             h.apply_file('example-test.pbf')
     assert_greater(len(self.refkeeper), 0)
     while len(self.refkeeper) > 0:
         self.refkeeper.pop()
예제 #13
0
 def gather_track_relations(self):
     """Applies `self.rh` to file"""
     h = o.make_simple_handler(relation=self.rh.callback)
     h.apply_file(self.osm_file, locations=True)