2013-06-03 1 views
0

Так у меня есть кодДавать каждый набор данных имени

print 
latOne = dL[1][3] 
lonOne = dL [1][4] 
x = [calculateDistance(latOne, lonOne, latTwo, lonTwo) for latTwo, lonTwo in zip(latitude, longitude)] 
print x 

это производит значение расстояний в списке с выходом

[0.0, 3043.004178666758, 21558.2996208357, 40246.748450913066, 40908.82213277263, 43786.0579097594, 67781.1426515405, 79693.11338661514, 65046.35819797423, 92804.01912347642] 

Теперь каждое расстояние на основе координат от отдельной точки (который имеет определенное имя) т.е.

Sydney (-20.7, 100) 
Melbourne (-20, 120) 

мой код принимает расстояния ок и производить s список расстояний. Что я хочу сделать, так это настроить структуру так, чтобы расстояния печатались с соответствующими именами точек. т.е. взять латы и тоскует от Сиднея вычислить расстояние, а затем иметь Ouput быть

Distance to Syndey is output ..., Distance to Melbourne is output, and so on. 

Если и нужно больше моего код, чтобы помочь, пожалуйста, дайте мне знать.

EDIT:

вот полный код сценария.

import math 
import csv 
def calculateDistance(latOne, lonOne, latTwo, lonTwo): 


from decimal import Decimal 
latOne, lonOne, latTwo, lonTwo = [Decimal(x) for x in (latOne, lonOne, latTwo,lonTwo)] 
DISTANCE_CONSTANT = 111120.0 
coLat = math.fabs(lonOne - lonTwo) 
alpha = 90 - latTwo 
beta = 90 - latOne 

cosAlpha = math.cos(math.radians(alpha)) 
cosBeta = math.cos(math.radians(beta)) 
sinAlpha = math.sin(math.radians(alpha)) 
sinBeta = math.sin(math.radians(beta)) 
cosC  = math.cos(math.radians(coLat)) 

cos_of_angle_a = (cosAlpha * cosBeta) 
cos_of_angle_b = (sinAlpha * sinBeta * cosC) 
cos_of_angle_c = cos_of_angle_a + cos_of_angle_b 
angle   = math.degrees(math.acos(cos_of_angle_c)) 
distance  = angle * DISTANCE_CONSTANT 
return distance 

stations = [] 
latitude = [] 
longitude = [] 
with open('data.csv', 'rU') as input: 
     dL= list(csv.reader(input)) 
     sL = [row[4] for row in dL[1:]] 
     longitude.extend(sL) 
     sL1 = [row[3] for row in dL[1:]] 
     latitude.extend(sL1) 
     sL2 = [row[1] for row in dL[1:]] 
     stations.extend (sL2) 

data = [] 
print "Station Coordinates" 
for i in range(0, len(latitude)): 
    print str(stations[i]) + "(" + str(latitude[i]) + "," + str(longitude[i]) + ")" 
    ab = str(stations[i]) + "(" + str(latitude[i]) + "," + str(longitude[i]) + ")" 
    data.append(ab) 

print stations   

print 
latOne = dL[1][3] 
lonOne = dL [1][4] 
x = [calculateDistance(latOne, lonOne, latTwo, lonTwo) for latTwo, lonTwo in zip(latitude, longitude)] 
print x 


print 
lessthan, greaterthan = [], [] 
knowndistance = float(raw_input("Please type your radius")) 
for v in x: 
if v <= knowndistance: 
    lessthan.append(v) 
else: 
    greaterthan.append(v) 

print lessthan 
print greaterthan 
+0

А с чем именно вам нужна помощь? это непонятно ... Я много разбираюсь в таких вещах, но я не могу сказать, что вам нужно для помощи ... –

+0

Можете ли вы привести пример того, как выглядит dL? это может быть так же просто, как прокрутка для элемента в dL и сохранение расстояния и соответствующего города в файле –

+0

@ RyanSaxe, а то, что я хочу, поможет с использованием кода. Это получает расстояния, я хочу напечатать расстояния и название станции, на которую принадлежит расстояние. Это яснее? – user2430623

ответ

0

Во-первых, вы должны реально смотреть на geopy.distance, а также много другой его построили в возможностях. Да, вы уже писали один из своих алгоритмов и т. Д., Но, вероятно, у вас будут другие вещи, которые вам понадобятся.

Значит, вы захотите использовать словарь здесь. Если вы можете сохранить широту и долготу станции, подключенной к станции, это сделает вашу жизнь очень простой!

points = [[row[3],row[4]] for row in dL] 
stations = [row[1] for row in dL] 
my_dict = dict(zip(stations,points)) 

теперь у вас есть словарь, вы можете позвонить своей широте и долготе по названию станции и сохранить его таким образом, что вы можете просто вспомнить позже. Я думаю, что это все, что вам нужно, чтобы закончить ваш код. Если это не так, прокомментируйте это, поэтому я могу отредактировать его соответствующим образом.

 Смежные вопросы

  • Нет связанных вопросов^_^