Esempio n. 1
0
def node_list():
    n1 = Node(7.41275611, 46.922925, 1)
    n2 = Node(7.41275612, 46.922925, 2)
    n3 = Node(7.41275613, 46.922925, 3)
    n4 = Node(8.412797, 46.922942, 4)
    n5 = Node(8.412797, 46.922941, 5)
    return [n1, n2, n3, n4, n5]
Esempio n. 2
0
 def _feature_to_nodes(feature):
     nodes = []
     coordinates = feature['geometry']['coordinates']
     if isinstance(coordinates, tuple):
         nodes.append(Node(coordinates[1], coordinates[0], 0))
     else:
         for coordinate in coordinates:
             nodes.append(Node(coordinate[1], coordinate[0], 0))
     return nodes
Esempio n. 3
0
    def _calculate_tile_centres(self):
        centers = []
        left_down = self.tile.bbox.node_left_down()
        right_down = self.tile.bbox.node_right_down()
        left_up = self.tile.bbox.node_left_up()

        distance_row = left_down.get_distance_in_meter(left_up)
        column = 0.5
        row = 0.5

        while distance_row > self._step_distance:
            current_node_row = left_down.step_to(left_up,
                                                 self._step_distance * row)
            distance_column = left_down.get_distance_in_meter(right_down)
            while distance_column > self._step_distance:
                current_node_column = left_down.step_to(
                    right_down, self._step_distance * column)
                new_node = Node(current_node_row.latitude,
                                current_node_column.longitude)
                centers.append(new_node)
                distance_column = current_node_column.get_distance_in_meter(
                    right_down)
                column += 1
            distance_row = current_node_row.get_distance_in_meter(left_up)
            column = 0.5
            row += 1
        return centers
Esempio n. 4
0
 def _generate_street(data):
     streets = []
     for feature in data['features']:
         coordinates = feature['geometry']['coordinates']
         nodes = []
         for coordinate in coordinates:
             nodes.append(Node(coordinate[1], coordinate[0]))
         streets.append(Street(nodes))
     return streets
Esempio n. 5
0
def big_node_list():
    return [
        Node(47.09572760391754, 9.354246854782108, 0.0),
        Node(47.09569108531167, 9.353826284408573, 0.0),
        Node(47.095734907638715, 9.353978633880619, 0.0),
        Node(47.091450260764105, 9.347023665904997, 0.0),
        Node(47.09598323415865, 9.353849887847904, 0.0),
        Node(47.09582072636252, 9.354110956192018, 0.0),
        Node(47.095880982062205, 9.353635311126713, 0.0),
        Node(47.09582255229281, 9.353581666946415, 0.0)
    ]
Esempio n. 6
0
 def _get_centre(nodes):
     sum_lat = 0
     sum_lon = 0
     for node in nodes:
         sum_lat += node.latitude
         sum_lon += node.longitude
     length = len(nodes)
     centre_latitude = sum_lat / length
     centre_longitude = sum_lon / length
     return Node(centre_latitude, centre_longitude, 0)
Esempio n. 7
0
    def _merge(sub_graph):
        node_count = len(sub_graph)
        latitude_sum = 0
        longitude_sum = 0
        for node in sub_graph:
            latitude_sum += node.latitude
            longitude_sum += node.longitude

        latitude = latitude_sum / node_count
        longitude = longitude_sum / node_count
        merged = Node(latitude, longitude, 0)
        return merged
Esempio n. 8
0
    def get_node(self, pixel):
        x = pixel[0]
        y = pixel[1]
        x_count = self.image.size[0]
        y_count = self.image.size[1]
        y_part = (y_count - y) / float(y_count)
        x_part = x / float(x_count)

        lat_diff = float(self.bbox.top) - float(self.bbox.bottom)
        lon_diff = float(self.bbox.right) - float(self.bbox.left)

        lat = float(self.bbox.bottom) + lat_diff * y_part
        lon = float(self.bbox.left) + lon_diff * x_part

        return Node(lat, lon)
Esempio n. 9
0
    def _calculate_tile_centres(self):
        centers = []

        # [out:csv(::lat,::lon)][timeout:25];node["public_transport"="platform"]({{bbox}});out;
        self.api = OverpassApi()
        data = self.api.get(self.tile.bbox,
                            self.tags,
                            nodes=True,
                            ways=False,
                            relations=False,
                            responseformat='csv(::lat,::lon)')
        data = list(map(lambda cc: Node(float(cc[0]), float(cc[1])), data[1:]))
        print(data)

        return data
Esempio n. 10
0
    def _generate_street(data):
        streets = []
        for feature in data['features']:
            coordinates = feature['geometry']['coordinates']
            nodes = []
            for coordinate in coordinates:
                try:
                    lat, lon = coordinate[1], coordinate[0]
                except TypeError:
                    logger.exception()
                    logger.warn("feature was: {}, coordinate was: {}".format(feature, coordinate))
                else:
                    nodes.append(Node(lat, lon))

            streets.append(Street(nodes))
        return streets
Esempio n. 11
0
    def get_node(self, pixel=(0, 0)):
        x = pixel[0]
        y = pixel[1]
        image_size_x, image_size_y = self.image_api.get_image_size(self.bbox)
        y_part = 0
        x_part = 0
        if image_size_x > 0 and image_size_y > 0:
            y_part = (image_size_y - y) / float(image_size_y)
            x_part = x / float(image_size_x)

        lat_diff = float(self.bbox.top) - float(self.bbox.bottom)
        lon_diff = float(self.bbox.right) - float(self.bbox.left)

        lat = float(self.bbox.bottom) + lat_diff * y_part
        lon = float(self.bbox.left) + lon_diff * x_part

        return Node(lat, lon)
Esempio n. 12
0
def main(args):
    coords = [args.coord[i:i + 2] for i in range(0, len(args.coord), 2)]
    coords = list(map(lambda c: Node(*c), coords))
    bbox = Bbox.from_nodes(coords[0], coords[1])
    if args.tags:
        tags = map(lambda kv: Tag(key=kv[0], value=kv[1]),
                   map(lambda kv: kv.split('=', 1), args.tags.split(',')))
        walker = OsmObjectWalker(Tile(image_api=WmsApi(), bbox=bbox),
                                 tags,
                                 square_image_length=100)
    else:
        walker = CoordWalker(Tile(image_api=WmsApi(), bbox=bbox),
                             coords,
                             square_image_length=100)

    tiles = walker.get_tiles()
    for n, t in enumerate(tiles):
        centre_node = t.get_centre_node()
        name = "fetch/{0:02.8}_{1:02.8}.png".format(centre_node.latitude,
                                                    centre_node.longitude)
        t.image.save(name, "PNG")
        print(name)
Esempio n. 13
0
 def get_centre_node(self):
     diff_lat = self.bbox.node_right_up().latitude - self.bbox.node_left_down().latitude
     diff_lon = self.bbox.node_right_up().longitude - self.bbox.node_left_down().longitude
     node = Node(self.bbox.node_left_down().latitude + diff_lat / 2,
                 self.bbox.node_left_down().longitude + diff_lon / 2)
     return node
Esempio n. 14
0
 def node_left_down(self):
     return Node(self.bottom, self.left)
Esempio n. 15
0
 def node_left_up(self):
     return Node(self.top, self.left)
Esempio n. 16
0
 def node_right_up(self):
     return Node(self.top, self.right)
Esempio n. 17
0
 def node_right_down(self):
     return Node(self.bottom, self.right)
Esempio n. 18
0
def same_node():
    return Node(46.78351333884473, 8.159137666225423, 10)
Esempio n. 19
0
def test_not_in_bbox(rappi):
    bbox = rappi
    node = Node(48.0, 8.8)
    assert bbox.in_bbox(node) == False
Esempio n. 20
0
def test_in_bbox(rappi):
    bbox = rappi
    node = Node(47.22, 8.82)

    assert bbox.in_bbox(node) == True
Esempio n. 21
0
def test_reduce_not_same_points(same_node):
    node = Node(46.78351333884473, 8.159137666225423, 0)
    merger = NodeMerger([node, same_node])
    merged_nodes = merger.reduce()
    assert len(merged_nodes) == 1
Esempio n. 22
0
def test_node_equality(node1):
    node = Node('47.0', '8.0', 10)
    assert node == node1
Esempio n. 23
0
def test_instantiate_string():
    node = Node('47.0', '8.0', 10)
    assert node.latitude == 47.0
    assert node.longitude == 8.0
    assert node.osm_id == 10
Esempio n. 24
0
def test_instantiate():
    node = Node(47.0, 8.0, 10)
    assert node.latitude == 47.0
    assert node.longitude == 8.0
    assert node.osm_id == 10
Esempio n. 25
0
def node1():
    return Node('47.0', '8.0', 10)
Esempio n. 26
0
def node():
    return Node(47.0912, 9.3470236659, 0)
Esempio n. 27
0
def node2():
    return Node('47.1', '8.1', 10)