Exemplo n.º 1
0
def condition_g(rows, speeds, angles, index, maxSpeed):
    '''
    assess condition (g) from the text
    '''

    if index > 1 and index < len(rows) - 1:

        dist1 = geo.haversineDistance(
            rows[index][5], rows[index][6], rows[index - 2][5],
            rows[index - 2][6]) + geo.haversineDistance(
                rows[index + 1][5], rows[index + 1][6], rows[index][5],
                rows[index][6])
        dist2 = geo.haversineDistance(
            rows[index - 1][5], rows[index - 1][6], rows[index - 2][5],
            rows[index - 2][6]) + geo.haversineDistance(
                rows[index + 1][5], rows[index + 1][6], rows[index - 1][5],
                rows[index - 1][6])

        distTol = geo.haversineDistance(rows[index - 1][5], rows[index - 1][6],
                                        rows[index - 2][5], rows[index - 2][6])
        distTol += geo.haversineDistance(rows[index][5], rows[index][6],
                                         rows[index - 1][5],
                                         rows[index - 1][6])
        distTol += geo.haversineDistance(rows[index + 1][5],
                                         rows[index + 1][6], rows[index][5],
                                         rows[index][6])
        distTol = max(DistRes, 0.1 * distTol)

        if dist1 < dist2 - distTol:
            return index - 1, 'g'

        if dist2 < dist1 - distTol:
            return index, 'g'

    return condition_h(rows, speeds, angles, index, maxSpeed)
Exemplo n.º 2
0
def condition_h(rows, speeds, angles, index, maxSpeed):
    '''
    assess condition (h) from the text
    '''
    
    if index > 1 and index < len(rows) - 1:

        dist1 = geo.haversineDistance(rows[index][5], rows[index][6], rows[index-2][5], rows[index-2][6]) + geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index][5], rows[index][6])
        dist2 = geo.haversineDistance(rows[index-1][5], rows[index-1][6], rows[index-2][5], rows[index-2][6]) + geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index-1][5], rows[index-1][6])

        PD1 = geo.haversineDistance(rows[index-1][5], rows[index-1][6], rows[index-2][5], rows[index-2][6]) / dist2
        PD2 = geo.haversineDistance(rows[index][5], rows[index][6], rows[index-2][5], rows[index-2][6]) / dist1

        PT1 = geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index-1][1], rows[index-1][2], rows[index-1][3], rows[index-1][4])) / geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index+1][1], rows[index+1][2], rows[index+1][3], rows[index+1][4]))
        PT2 = geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index][1], rows[index][2], rows[index][3], rows[index][4])) / geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index+1][1], rows[index+1][2], rows[index+1][3], rows[index+1][4]))

        if abs(PD1-PT1) > 0.1 + abs(PD2-PT2):
            return index-1, 'h'
        if abs(PD2 - PT2) > 0.1 + abs(PD1 - PT1):
            return index, 'h'

    return -1, 'i'
Exemplo n.º 3
0
def condition_g(rows, speeds, angles, index, maxSpeed):
    '''
    assess condition (g) from the text
    '''

    if index > 1 and index < len(rows) - 1:
    
        dist1 = geo.haversineDistance(rows[index][5], rows[index][6], rows[index-2][5], rows[index-2][6]) + geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index][5], rows[index][6])
        dist2 = geo.haversineDistance(rows[index-1][5], rows[index-1][6], rows[index-2][5], rows[index-2][6]) + geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index-1][5], rows[index-1][6])

        distTol = geo.haversineDistance(rows[index-1][5], rows[index-1][6], rows[index-2][5], rows[index-2][6])
        distTol += geo.haversineDistance(rows[index][5], rows[index][6], rows[index-1][5], rows[index-1][6])
        distTol += geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index][5], rows[index][6])
        distTol = max(DistRes, 0.1*distTol)

        if dist1 < dist2 - distTol:
            return index-1, 'g'

        if dist2 < dist1 - distTol:
            return index, 'g'

    return condition_h(rows, speeds, angles, index, maxSpeed)
Exemplo n.º 4
0
def condition_h(rows, speeds, angles, index, maxSpeed):
    '''
    assess condition (h) from the text
    '''
    
    if index > 1 and index < len(rows) - 1:

        dist1 = geo.haversineDistance(rows[index][5], rows[index][6], rows[index-2][5], rows[index-2][6]) + geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index][5], rows[index][6])
        dist2 = geo.haversineDistance(rows[index-1][5], rows[index-1][6], rows[index-2][5], rows[index-2][6]) + geo.haversineDistance(rows[index+1][5], rows[index+1][6], rows[index-1][5], rows[index-1][6])

        PD1 = geo.haversineDistance(rows[index-1][5], rows[index-1][6], rows[index-2][5], rows[index-2][6]) / dist2
        PD2 = geo.haversineDistance(rows[index][5], rows[index][6], rows[index-2][5], rows[index-2][6]) / dist1

        PT1 = geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index-1][1], rows[index-1][2], rows[index-1][3], rows[index-1][4])) / geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index+1][1], rows[index+1][2], rows[index+1][3], rows[index+1][4]))
        PT2 = geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index][1], rows[index][2], rows[index][3], rows[index][4])) / geo.deltaTime((rows[index-2][1], rows[index-2][2], rows[index-2][3], rows[index-2][4]), (rows[index+1][1], rows[index+1][2], rows[index+1][3], rows[index+1][4]))

        if abs(PD1-PT1) > 0.1 + abs(PD2-PT2):
            return index-1, 'h'
        if abs(PD2 - PT2) > 0.1 + abs(PD1 - PT1):
            return index, 'h'

    return -1, 'i'
Exemplo n.º 5
0
def trackSpeed(prevHeader, header):
    '''
    computes the speed, including rounding tolerance from the reference,
    for the track at <header>.
    return None if some necessary data is missing
    '''

    # check that all required data is present:
    if None in [header.latitude(), header.longitude(), prevHeader.latitude(), prevHeader.longitude()]:
        return None
    if None in [header.year(), header.month(), header.day(), header.time(), prevHeader.year(), prevHeader.month(), prevHeader.day(), prevHeader.time()]:
        return None

    dist = geo.haversineDistance(prevHeader, header)
    DTime = geo.deltaTime(prevHeader, header)
    speed = (dist - DistRes) / max(DTime, TimeRes)

    return speed
Exemplo n.º 6
0
def trackSpeed(prev_row, row):
    '''
    computes the speed, including rounding tolerance from the reference,
    for the track at <row>.
    return None if some necessary data is missing
    '''

    # check that all required data (full timestamp + lat + long) is present:
    if None in [row[1], row[2], row[3], row[4], row[5], row[6]]:
        return None
    if None in [prev_row[1], prev_row[2], prev_row[3], prev_row[4], prev_row[5], prev_row[6] ]:
        return None

    dist = geo.haversineDistance(prev_row[5], prev_row[6], row[5], row[6])
    DTime = geo.deltaTime((prev_row[1], prev_row[2], prev_row[3], prev_row[4]), (row[1], row[2], row[3], row[4]))
    speed = (dist - DistRes) / max(DTime, TimeRes)

    return speed
Exemplo n.º 7
0
def trackSpeed(prev_row, row):
    '''
    computes the speed, including rounding tolerance from the reference,
    for the track at <row>.
    return None if some necessary data is missing
    '''

    # check that all required data (full timestamp + lat + long) is present:
    if None in [row[1], row[2], row[3], row[4], row[5], row[6]]:
        return None
    if None in [prev_row[1], prev_row[2], prev_row[3], prev_row[4], prev_row[5], prev_row[6] ]:
        return None

    dist = geo.haversineDistance(prev_row[5], prev_row[6], row[5], row[6])
    DTime = geo.deltaTime((prev_row[1], prev_row[2], prev_row[3], prev_row[4]), (row[1], row[2], row[3], row[4]))
    speed = (dist - DistRes) / max(DTime, TimeRes)

    return speed
Exemplo n.º 8
0
def condition_h(headers, speeds, angles, index, maxSpeed):
    '''
    assess condition (h) from the text
    typeo in text, implementation incomplete
    '''
    
    if index > 1 and index < len(headers) - 1:

        dist1 = geo.haversineDistance(headers[index], headers[index-2]) + geo.haversineDistance(headers[index + 1], headers[index])
        dist2 = geo.haversineDistance(headers[index-1], headers[index-2]) + geo.haversineDistance(headers[index + 1], headers[index-1])

        PD1 = geo.haversineDistance(headers[index-1], headers[index-2]) / dist2
        PD2 = geo.haversineDistance(headers[index], headers[index-2]) / dist1

        PT1 = geo.deltaTime(headers[index-2], headers[index-1]) / geo.deltaTime(headers[index-2], headers[index+1])
        PT2 = geo.deltaTime(headers[index-2], headers[index]) / geo.deltaTime(headers[index-2], headers[index+1])

        if abs(PD1-PT1) > 0.1 + abs(PD2-PT2):
            return index-1, 'h'
        if abs(PD2 - PT2) > 0.1 + abs(PD1 - PT1):
            return index, 'h'

    return -1, 'i'