2012-04-03 20 views
1

Meine Aufgabe ist es, die Rundreise Entfernung von der Startstelle zu allen Veranstaltungsorten, die ich von Facebook in Meilen und zurück zum Start ergriffen habe, zu berechnen. Mein Code so weit:Berechnung der Rundreise Entfernung in Python

import json 
import re 
from urllib import urlopen 
import math 

def getLatRad(latitude): 
    return float(latitude) * (math.pi/180.0) 
def getLongRad(longitude): 
    return float(longitude) * (math.pi/180.0) 
tuplist =[] 
finaltuplist = [] 
#start_latitude = float(input('Pls enter the latitude co-ordinate of your starting location:')) 
#start_longitude = float(input('Pls enter the longitude co-ordinate of your starting location:')) 
start_latitude = 41.721194054071 
start_longitude = -73.934258235003 
longRad1= getLongRad(start_longitude) 
latRad1 = getLatRad(start_latitude) 
def main(): 

    eventids = [ 
       '264100516989470', 
       '129843580476568', 
       '158475914271199', 
       ] 
    for event in eventids: 
     f = urlopen('http://graph.facebook.com/%s' % event) 
     d = json.load(f) 
     name = d['name'] 
     longitude = d["venue"]["longitude"] 
     latitude = d["venue"]["latitude"] 
     tuplist.append((name,longitude,latitude)) 
    for coordinates in tuplist: 
     longRad2= getLongRad(coordinates[1]) 
     latRad2= getLatRad(coordinates[2]) 
     dlon = longRad2 - longRad1 
     dlat = latRad2 - latRad1 
     a = math.sin(dlat/2)**2 + math.cos(latRad1) * math.cos(latRad2) * math.sin(dlon/2)**2 
     c = 2 * math.asin(math.sqrt(a)) 
     m = 3960 * c 
     sum = m + m 
     print sum 
if __name__ == '__main__': 
    main() 

Diese so weit ist, wie ich weiß, wie auf meinem eigenen zu tun. Gibt es eine Chance, dass mir jemand in die richtige Richtung zeigen könnte, anstatt die einzelnen Entfernungen vom Startort zu berechnen?

+3

Haben Sie vor, die "optimale" Rundfahrtdistanz aller Punkte, die Hin- und Rückfahrt in einer bestimmten Reihenfolge oder "irgendeine" Hin- und Rückfahrt zu berechnen, die alle Punkte erreicht? – ybakos

+0

+1 für Ybakos beantworten. Wenn Sie ein Verkäuferproblem haben, müssen Sie sich eine Heuristik einfallen lassen, oder? – tartar

+0

Ich würde vermuten, dass die Ereignisse eine Kalenderordnung haben (wahrscheinlich die der IDs in der EventIDs-Array, so dass es kein Konzept von "Optimum" im Zusammenhang mit diesem Problem gibt. – Endophage

Antwort

1

So zerlegen Sie Ihr Problem gegen Ihre Lösung. Derzeit können Sie den Abstand zwischen start und event1 ermitteln, aber Sie können die Entfernung zwischen event1 und event2 nicht erhalten. Sie können auch die Entfernung zwischen Start und Event2 ermitteln. Was müssen Sie in Ihrer Berechnung ändern, um die Entfernung von event1 zu event2 zu erhalten?

Einfüg.Nummer Ausarbeitung Anfrage:

latRad1 = getLatRad (start_latitude) longRad1 = getLongRad (start_longitude)

dlon = longRad2 - longRad1 a = math.sin (dlat/2) ** 2 + math.cos (latRad1) * math.cos (latRad2) * math.sin (dlon/2) ** 2

Die oberen 2 sind außerhalb Ihrer for-Schleife und werden nicht geändert (das habe ich bemerkt). Wenn Sie daher an einen neuen Ort fahren, um die Entfernung zu berechnen, berechnen Sie diese immer noch mit den Startkoordinaten.

+0

können Sie bitte erarbeiten? – matture

Verwandte Themen