def lonLatToMapbox(p, zoom, origin_tile): n = 2**zoom x = (p.x + 180.0) / 360 * n y = (1 - math.log(math.tan(p.y * math.pi / 180) + (1 / math.cos(p.y * math.pi / 180))) / math.pi) / 2 * n xoff = x - origin_tile[0] yoff = y - origin_tile[1] return geom.FPoint(xoff, yoff).scale(256)
def mapboxToLonLat(p, zoom, origin_tile): n = 2**zoom x = p.x / 256.0 + origin_tile[0] y = p.y / 256.0 + origin_tile[1] x = x * 360.0 / n - 180 y = math.atan(math.sinh(math.pi * (1 - 2.0 * y / n))) y = y * 180 / math.pi return geom.FPoint(x, y)
def coords_callback(clist): for osmid, lon, lat in clist: p = geom.FPoint(lon, lat) if ll_bb is not None and not ll_bb.contains(p): continue p = coords.lonLatToMeters(p).to_point() if bb is not None and not bb.contains(p): continue vertex_map[osmid] = g.add_vertex(p)
def coords_callback(clist): for osmid, lon, lat in clist: p = geom.FPoint(lon, lat) if ll_bb is not None and not ll_bb.contains(p): continue p = coords.lonLatToMeters(p).to_point() if bb is not None and not bb.contains(p): continue vertices.append((osmid, np.double(lon), np.double(lat))) vertex_set.add(osmid)
def to_graph(vtx_df, edges_df): g = graph.Graph() vtx_map = OrderedDict({}) for tup in vtx_df.itertuples(): pt = coords.lonLatToMeters(geom.FPoint(tup.lon, tup.lat)).to_point() vtx_map[tup.osm_id] = g.add_vertex(pt) for tup in edges_df.itertuples(): g.add_bidirectional_edge(vtx_map[tup.src], vtx_map[tup.dst]) return g
if not fname.endswith('_0.jpg'): continue label = fname.split('_0.jpg')[0] example_path = yolo_path + 'images/' + label rect = geom.Rectangle( geom.Point(0, 0), geom.Point(LABEL_WIDTH, LABEL_HEIGHT), ) with open(export_path+label+'_1.json', 'r') as f: detections = json.load(f)[0] objects = [geom.Point(d['left'], d['top']).bounds().add_tol(30) for d in detections] objects = [rect.clip_rect(obj_rect) for obj_rect in objects] crop_objects = [] for obj_rect in objects: start = geom.FPoint(float(obj_rect.start.x) / LABEL_WIDTH, float(obj_rect.start.y) / LABEL_HEIGHT) end = geom.FPoint(float(obj_rect.end.x) / LABEL_WIDTH, float(obj_rect.end.y) / LABEL_HEIGHT) crop_objects.append((start.add(end).scale(0.5), end.sub(start))) crop_lines = ['0 {} {} {} {}'.format(center.x, center.y, size.x, size.y) for center, size in crop_objects] subprocess.call(['cp', export_path+label+'_0.jpg', example_path+'.jpg']) with open(example_path+'.txt', 'w') as f: f.write("\n".join(crop_lines) + "\n") examples.append(example_path+'.jpg') random.shuffle(examples) num_val = len(examples)//10 val_set = examples[0:num_val] train_set = examples[num_val:] with open(yolo_path+'train.txt', 'w') as f: f.write("\n".join(train_set) + "\n")
def lonLatToMeters(p): mx = p.x * ORIGIN_SHIFT / 180.0 my = math.log(math.tan((90 + p.y) * math.pi / 360.0)) / (math.pi / 180.0) my = my * ORIGIN_SHIFT / 180.0 return geom.FPoint(mx, my)
def pixelToLonLat(p, origin, zoom): p = p.sub(geom.FPoint(256, 256)) p = geom.FPoint(p.x, -p.y) p = p.scale(getMetersPerPixel(zoom)) p = metersToLonLat(p.add(lonLatToMeters(origin))) return p
def lonLatToPixel(p, origin, zoom): p = lonLatToMeters(p).sub(lonLatToMeters(origin)) p = p.scale(1 / getMetersPerPixel(zoom)) p = geom.FPoint(p.x, -p.y) p = p.add(geom.FPoint(256, 256)) return p
def metersToLonLat(p): lon = (p.x / ORIGIN_SHIFT) * 180.0 lat = (p.y / ORIGIN_SHIFT) * 180.0 lat = 180 / math.pi * (2 * math.atan(math.exp(lat * math.pi / 180.0)) - math.pi / 2.0) return geom.FPoint(lon, lat)
import sys in_fname = sys.argv[1] out_fname = sys.argv[2] points = [] with open(in_fname, 'r') as f: for line in f: line = line.strip() if not line: continue parts = line.split(',') seqno, lat, lon = int(float(parts[0])), float(parts[1]), float( parts[2]) p = geom.FPoint(lon, lat) p = coords.lonLatToMeters(p).to_point() p.seqno = seqno if len(points) == 0 or points[-1].distance(p) > 3: points.append(p) rect = points[0].bounds() for p in points[1:]: rect = rect.extend(p) rect = rect.add_tol(512) g = osm.read('massachusetts-latest.osm.pbf', bb=rect) r = router.Router(g) positions = r.match(points) with open(out_fname, 'w') as f: for i in range(len(points)): turn_info = r._get_turn_info(points[i], positions[i:]) if turn_info is None: