def compassAngleTo(self, other, adjust=True, wrap=False):
        '''Return the angle from North for the direction vector between
           this and an other point.

           Suitable only for short, non-near-polar vectors up to a few
           hundred Km or Miles.  Use method C{initialBearingTo} for
           larger distances.

           @param other: The other point (C{LatLon}).
           @keyword adjust: Adjust the longitudinal delta by the
                            cosine of the mean latitude (C{bool}).
           @keyword wrap: Wrap and L{unroll180} longitudes and longitudinal
                          delta (C{bool}).

           @return: Compass angle from North (C{degrees360}).

           @raise TypeError: The B{C{other}} point is not C{LatLon}.

           @note: Courtesy Martin Schultz.

           @see: U{Local, flat earth approximation
                 <https://www.EdWilliams.org/avform.htm#flat>}.
        '''
        self.others(other)
        return compassAngle(self.lat,
                            self.lon,
                            other.lat,
                            other.lon,
                            adjust=adjust,
                            wrap=wrap)
예제 #2
0
    rDeg = (angle - deg) * 60
    if rDeg < 0:
        rDeg = rDeg * -1
    mins = int(rDeg)
    sec = (rDeg - mins) * 60
    return (deg, mins, sec)



def lox(la0, lo0, la1, lo1):
    # cf https://fr.wikipedia.org/wiki/Loxodromie
    latm = (lat0 + lat1) / 2
    tanRv = ((lon1 - lon0) / (lat1 - lat0)) * cos(latm)
    rV = atan(tanRv)
    return rV


print(toTuple(48.164788333))
print(toTuple(-4.046563333))
print(toTuple(48.16503))
print(toTuple(-4.04674))


loxodromy = degrees(lox(lat0, lon0, lat1, lon1))
cAngle = compassAngle(lat0, lon0, lat1, lon1)
st()
print("%.5f\t%.5f" % (loxodromy, cAngle))



예제 #3
0
파일: coords2.py 프로젝트: erichardy/pilote
        # print (line)
        data = line.split(' ')
        lat = float(data[0])
        lon = float(data[1])
        track = float(data[2])
        coords.append(
            (lat, lon, (lat - 50.0) * 1000, (lon + 5.0) * 10000, track))
pangle = 0.0
panglea = 0.0
ptrack = 0.0
for i in range(0, len(coords) - 1):
    lat0 = radians(coords[i][0])
    lon0 = radians(coords[i][1])
    lat1 = radians(coords[i + 1][0])
    lon1 = radians(coords[i + 1][1])
    angle = compassAngle(lat0, lon0, lat1, lon1)

    lat0a = radians(coords[i][2])
    lon0a = radians(coords[i][3])
    lat1a = radians(coords[i + 1][2])
    lon1a = radians(coords[i + 1][3])
    anglea = compassAngle(lat0a, lon0a, lat1a, lon1a)
    track = coords[i + 1][4]

    print("%f (%f)\t%f (%f)\t%f (%f)" %
          (angle, angle - pangle, anglea, anglea - panglea, track,
           track - ptrack))
    pangle = angle
    panglea = anglea
    ptrack = track
    # print('\n')
예제 #4
0
파일: coords1.py 프로젝트: erichardy/pilote
        m = float(l[3:] + '.' + r)
    vDeg = deg + (m / 60)
    return radians(vDeg)


fich = "ggppss3"

coords = []

with open(fich) as fp:
    for line in iter(fp.readline, ''):
        # print (line)
        datax = line.split(' ')[2]
        # print(datax)
        # $GPGLL or $GPGGA
        if datax[:6] == '$GPGLL':
            data = datax.split(',')
            lat_raw = (data[1], data[2])
            lon_raw = (data[3], data[4])
            print(lat_raw)
            print(toRad(lat_raw))
            print(lon_raw)
            print(toRad(lon_raw))
            print('\n')
            coords.append((toRad(lat_raw), toRad(lon_raw)))

for i in range(0, len(coords) - 1):
    angle = compassAngle(coords[i][0], coords[i][1], coords[i + 1][0],
                         coords[i + 1][1])
    print(angle)