[PYTHON] Trouvez le waypoint à partir de la latitude et de la longitude (en tenant compte de la rondeur de la terre).

J'ai trouvé la distance linéaire sur la terre Au fait, j'ai joué avec pendant un moment.

from math import sin, cos, acos, asin, atan2, radians, degrees

def latlng_to_xyz(lat, lng):
    rlat, rlng = radians(lat), radians(lng)
    coslat = cos(rlat)
    return coslat*cos(rlng), coslat*sin(rlng), sin(rlat)

def xyz_to_latlng(x, y, z):
    rlat = asin(z)
    coslat = cos(rlat)
    return degrees(rlat), degrees(atan2(y/coslat, x/coslat))

def halfway_on_sphere(pos0, pos1, z=0.5):
    xyz0, xyz1 = latlng_to_xyz(*pos0), latlng_to_xyz(*pos1)

    theta = acos(sum(x * y for x, y in zip(xyz0, xyz1)))
    sin_th = sin(theta)

    v0 = sin(theta * (1-z)) / sin_th
    v1 = sin(theta * z) / sin_th

    return xyz_to_latlng(*(x * v0 + y * v1 for x, y in zip(xyz0, xyz1)))

Tokyo = 35.68, 139.77
Atlanta = 33.755, -84.39
print(halfway_on_sphere(Tokyo, Atlanta)) # (61.51, -150.67)

J'ai trouvé que le point médian exact entre Tokyo et Atlanta était à environ 40 km au nord-ouest de la ville d'Ankalesi.

Comme vous pouvez le deviner, le troisième argument de la fonction halfway_on_sphere peut être utilisé pour calculer n'importe quel point de division interne. Vous pouvez tracer l'itinéraire global en trouvant les coordonnées par petites étapes. Je pense que le point de division extérieur peut probablement être calculé sans aucun problème.

Recommended Posts

Trouvez le waypoint à partir de la latitude et de la longitude (en tenant compte de la rondeur de la terre).
Trouvez la distance (en tenant compte de la rondeur de la terre) de la latitude et de la longitude.
Obtenez l'adresse à partir de la latitude et de la longitude
Comment obtenir la valeur en pixels du point à partir de l'image satellite en spécifiant la latitude et la longitude
Télécharger les tuiles de l'Institut géographique à partir de la latitude et de la longitude
Obtenez des informations de localisation (latitude et longitude) à partir de l'adresse. Géocodage en Python ~ Géocodeur et pydams ~
Donnez les données de séquence de points de latitude et de longitude et essayez d'identifier la route à partir des données d'OpenStreetMap
Trouvez la «note de passage minimale» à partir de la «note moyenne des candidats», de la «note moyenne des candidats retenus» et de «l'agrandissement» de l'examen d'entrée
Trouvez le chemin critique de PERT en utilisant la recherche de priorité de largeur et la recherche de priorité de profondeur
Découvrez l'âge et le nombre de gains des gouverneurs de préfecture dans tout le pays
Capturer GeneratorQuitter et détecter la fin de l'itération du côté du générateur
Trouver l'intersection d'un cercle et d'une droite (matrice sympy)
Existence du point de vue de Python
Visualisation des données de coordonnées de latitude / longitude (en supposant des données météorologiques) à l'aide de cartopy et matplotlib
[GPS] Calculez la distance, l'angle azimutal et l'angle d'élévation à partir de la latitude et de la longitude GPS à l'aide de pyproj
Retrouvez les termes généraux de la séquence de Tribonacci en algèbre linéaire et Python
Découvrez le nom de la méthode qui l'a appelée à partir de la méthode qui est python
Jugement interne / externe avec Python: obtenez le nom de la ville / ville / village à partir des informations de latitude / longitude de n'importe quel point