2013-09-02 4 views
0

Я пишу программу Python для создания некоторых карт в Google Earth, я использую сценарий своего коллеги, написанный на Perl, и я пришел к точке, где есть эта ортодромия вызов:ортодромия назначение формула для Python

@r = great_circle_destination($long, $lat, $bearing, $dist); 

Что такое эквивалент Python? Есть ли такой модуль:

use Math::Trig ':great_cricle'; 

ответ

1

Я уверен, что в стандартной библиотеке нет такой вещи. Я уверен, что была бы библиотека GIS на основе python, которая имеет подобные функции, но есть много разных способов сделать это вычисление в зависимости от того, какую модель земли вы используете (например, сферическая земля или эллипсоидная земля или что-то более сложное) поэтому вы, вероятно, захотите проверить исходный код модуля Perl и перевести его на python.

Если вы хотите реализовать его самостоятельно, вы можете посмотреть на этой странице формулы для точки назначения данного азимута и расстояния от начальной точки: http://www.movable-type.co.uk/scripts/latlong.html

Оно не должно быть слишком трудно перевести эту формулу к питону:

R = ... Radius of earth ... 
def great_circle_destination(lon1, lat1, bearing, dist): 
    lat2 = math.asin(math.sin(lat1)*math.cos(dist/R) + 
      math.cos(lat1)*math.sin(dist/R)*math.cos(bearing)) 
    lon2 = lon1 + math.atan2(math.sin(bearing)*math.sin(dist/R)*math.cos(lat1), 
       math.cos(dist/R)-math.sin(lat1)*math.sin(lat2) 
    return lon2, lat2 
Смежные вопросы