Amend task folder (untested).

debian-sid
Tom Payne 15 years ago
parent f298797e30
commit 48792a5645

@ -195,7 +195,7 @@ examples/2008-07-28-XPG-KVE-02.kmz: examples/2008-07-28-XPG-KVE-02.igc examples/
-x examples/2008-07-28-XPG-KVE-02.gpx
examples/2008-09-05-CGP-XAGC-01-ebessos.kmz: examples/2008-09-05-CGP-XAGC-01-ebessos.igc
$(IGC2KMZ) -z 2 -o $@ \
$(IGC2KMZ) -z 3 -o $@ \
-i $< \
-t examples/2008-09-05-CGP-XAGC-01-ebessos.gpx

@ -706,6 +706,48 @@ class Flight(object):
return folder
def make_task_folder(globals, task):
# TODO add description
style_url = globals.stock.check_hide_children_style.url()
folder = kml.Folder(name='Task', styleUrl=style_url)
style_url = globals.stock.xc_style.url()
done = set()
for tp in task.tps:
key = tp.name
if key in done:
continue
else:
done.add(key)
point = kml.Point(coordinates=[tp.coord])
folder.add(kml.Placemark(point, name=tp.name, styleUrl=style_url))
done = set()
for tp in task.tps:
key = (tp.name, tp.radius)
if key in done:
continue
else:
done.add(key)
coordinates = kml.coordinates.circle(tp.coord, tp.radius)
line_string = kml.LineString(coordinates, tessellate=1)
folder.add(kml.Placemark(line_string, styleUrl=style_url))
for i in xrange(0, len(task.tps) - 1):
tp0 = task.tps[i]
tp1 = task.tps[i + 1]
coord0 = tp0.coord.coord_at(tp0.coord.initial_bearing_to(tp1.coord),
tp0.radius)
theta = tp1.coord.initial_bearing_to(tp0.coord)
coord1 = tp1.coord.coord_at(theta, tp1.radius)
line_string1 = kml.LineString(coordinates=[coord0, coord1],
tessellate=1)
coords = [coord1.coord_at(theta - math.pi / 12.0, 400.0),
coord1,
coord1.coord_at(theta + math.pi / 12.0, 400.0)]
line_string2 = kml.LineString(coordinates=coords, tessellate=1)
multi_geometry = kml.MultiGeometry(line_string1, line_string2)
folder.add(kml.Placemark(multi_geometry, styleUrl=style_url))
return kmz.kmz(folder)
def flights2kmz(flights, roots=[], tz_offset=0, task=None):
stock = Stock()
globals = util.OpenStruct()
@ -751,6 +793,8 @@ def flights2kmz(flights, roots=[], tz_offset=0, task=None):
result = kmz.kmz()
result.add_siblings(stock.kmz)
result.add_roots(*roots)
if globals.task:
result.add_siblings(make_task_folder(globals, globals.task))
for flight in flights:
result.add_siblings(flight.to_kmz(globals))
return result

@ -85,14 +85,14 @@ class Turnpoint(object):
desc = desc_tag.text.encode('utf_8') if desc_tag else None
lat = float(element.get('lat'))
lon = float(element.get('lon'))
ele_tag = element.findtag('ele')
ele_tag = element.find('ele')
ele = int(ele_tag.text) if ele_tag else 0
time_tag = element.find('time')
if time_tag:
dt = datetime.datetime.strptime(time_tag.text, '%Y-%m-%dT%H:%M:%SZ')
else:
dt = None
coord = Coord(lat, lon, ele, dt)
coord = Coord.deg(lat, lon, ele, dt)
radius_tag = element.find('extensions/radius')
radius = int(radius_tag.text) if radius_tag else 400
enter = element.find('extensions/exit') is None
@ -127,4 +127,4 @@ class Task(object):
@classmethod
def from_file(cls, file):
element = parse(file)
return cls.from_element(element)
return cls.from_element(element.find('/rte'))

Loading…
Cancel
Save