Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
	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)
Esempio n. 4
0
    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)
Esempio n. 5
0
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
Esempio n. 6
0
	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")
Esempio n. 7
0
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)
Esempio n. 8
0
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
Esempio n. 9
0
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
Esempio n. 10
0
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)
Esempio n. 11
0
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: