Entfernungsberechnung für große und kleine Distanzen
This commit is contained in:
parent
46295f8139
commit
7d3a113ba3
|
@ -45,6 +45,25 @@ class Page():
|
|||
rotated.append((ox + fc * dx - fs * dy, oy + fs * dx + fc * dy))
|
||||
return rotated
|
||||
|
||||
@staticmethod
|
||||
def rhumb(lat1, lon1, lat2, lon2):
|
||||
# Distance in m
|
||||
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
|
||||
dlon = lon2 - lon1
|
||||
dlat = lat2 - lat1
|
||||
mlat = (lat1 + lat2) / 2
|
||||
return 6371000 * sqrt(dlat**2 + (cos(mlat) * dlon)**2)
|
||||
|
||||
@staticmethod
|
||||
def haversine(lat1, lon1, lat2, lon2):
|
||||
# Great circle distance in nm
|
||||
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
|
||||
dlon = lon2 - lon1
|
||||
dlat = lat2 - lat1
|
||||
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
|
||||
c = 2 * asin(sqrt(a))
|
||||
return c * 3440
|
||||
|
||||
def __init__(self, pageno, cfg, boatdata):
|
||||
self.pageno = pageno
|
||||
self.cfg = cfg
|
||||
|
|
Loading…
Reference in New Issue