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)
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))
# 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')
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)