예제 #1
0
파일: task.py 프로젝트: lordfolken/pycondor
def task_to_xcsoar(df_task, outdir, filename_base):
    filename_out = os.path.join(outdir, filename_base + '.tsk')
    print("Output '%s'" % filename_out)
    with open(filename_out, 'w') as fp:  # codecs.open(..., encoding='...')
        writer = Writer(fp)

        with writer.write_task(type=TaskType.RACING):  # encoding='...'
            for i, tp in df_task.iterrows():
                with writer.write_point(type=tp.Type):
                    writer.write_waypoint(
                        name=tp.Name,
                        latitude=tp.Lat,
                        longitude=tp.Lon
                    )
                    
                    # ToDo: ENHANCEMENT #writer.write_observation_zone(tp.ObservationZone)

                    # ToDo: Add a aerofiles.xcsoar.ObservationZone object
                    #https://github.com/Turbo87/aerofiles/blob/master/aerofiles/xcsoar/writer.py

                    d = {}
                    for key, val in tp.ObservationZone.__dict__.items():
                        d[key] = val

                    writer.write_observation_zone(**d)
예제 #2
0
def write_xcsoar_task(fp, task):
    writer = Writer(fp)

    params = {
        'type': get_task_type(task),
        'task_scored': 0,  # task.task_scored,
        'aat_min_time': 0,  # task.aat_min_time,
        'start_max_speed': 0,  # task.start_max_speed,
        'start_max_height': 0,  # task.start_max_height,
        'start_max_height_ref': 0,  # task.start_max_height_ref,
        'finish_min_height': 0,  # task.finish_min_height,
        'finish_min_height_ref': 0,  # task.finish_min_height_ref,
        'fai_finish': True,  # task.fai_finish,
        'min_points': 0,  # task.min_points,
        'max_points': 0,  # task.max_points,
        'homogeneous_tps': 0,  # task.homogeneous_tps,
        'is_closed': True,  # task.is_closed,
    }
    print(params)

    # Write <Task> tag
    with writer.write_task(**params):

        #  Iterate over turnpoints
        #  for i, turnpoint in enumerate(task):
        for turnpoint in task.turnpoints:
            # print(task.turnpoints)

            # Write <Point> tag
            with writer.write_point(
                    type=get_point_type(task, turnpoint.point_index)):

                print(turnpoint)
                # Write <Waypoint> tag
                writer.write_waypoint(
                    name=turnpoint.name,
                    latitude=turnpoint.latitude,
                    longitude=turnpoint.longitude,
                    id=turnpoint.point_index,
                    comment="",  # turnpoint.comment,
                    altitude=turnpoint.elevation,
                )

                params = get_observation_zone_params(turnpoint)
                writer.write_observation_zone(**params)
예제 #3
0
def write_xcsoar_task(fp, task):
    writer = Writer(fp)

    params = {
        'type': get_task_type(task),
        'task_scored': task.task_scored,
        'aat_min_time': task.aat_min_time,
        'start_max_speed': task.start_max_speed,
        'start_max_height': task.start_max_height,
        'start_max_height_ref': task.start_max_height_ref,
        'finish_min_height': task.finish_min_height,
        'finish_min_height_ref': task.finish_min_height_ref,
        'fai_finish': task.fai_finish,
        'min_points': task.min_points,
        'max_points': task.max_points,
        'homogeneous_tps': task.homogeneous_tps,
        'is_closed': task.is_closed,
    }

    # Write <Task> tag
    with writer.write_task(**params):

        # Iterate over turnpoints
        for i, turnpoint in enumerate(task):

            # Write <Point> tag
            with writer.write_point(type=get_point_type(task, i)):

                # Write <Waypoint> tag
                writer.write_waypoint(
                    name=turnpoint.name,
                    latitude=turnpoint.lat,
                    longitude=turnpoint.lon,
                    id=turnpoint.id,
                    comment=turnpoint.comment,
                    altitude=turnpoint.altitude,
                )

                # Write <ObservationZone> tag
                params = get_observation_zone_params(turnpoint.sector)
                writer.write_observation_zone(**params)
예제 #4
0
파일: task.py 프로젝트: kant/pycondor
def task_to_xcsoar(df_task, outdir, filename_base):
    filename_out = os.path.join(outdir, filename_base + '.tsk')
    print("Output '%s'" % filename_out)
    with open(filename_out, 'w') as fp:  # codecs.open(..., encoding='...')
        writer = Writer(fp)

        with writer.write_task(type=TaskType.RACING):  # encoding='...'
            for i, tp in df_task.iterrows():
                with writer.write_point(type=tp.Type):
                    writer.write_waypoint(name=tp.Name,
                                          latitude=tp.Lat,
                                          longitude=tp.Lon)

                    # ToDo: ENHANCEMENT #writer.write_observation_zone(tp.ObservationZone)

                    # ToDo: Add a aerofiles.xcsoar.ObservationZone object
                    #https://github.com/Turbo87/aerofiles/blob/master/aerofiles/xcsoar/writer.py

                    d = {}
                    for key, val in tp.ObservationZone.__dict__.items():
                        d[key] = val

                    writer.write_observation_zone(**d)
예제 #5
0
def test_write_line_with_latin1(output):
    writer = Writer(output, 'latin1')
    writer.write_line(u'Köln')
    assert writer.fp.getvalue() == b'K\xf6ln\n'
예제 #6
0
def test_write_line_with_latin1(output):
    writer = Writer(output, 'latin1')
    writer.write_line(u'Köln')
    assert writer.fp.getvalue() == b'K\xf6ln\n'
예제 #7
0
def writer(output):
    return Writer(output)