我有以下代码,它将使用Google maps api计算任意两点之间的距离。
代码:
def calculateDistance(sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude):
sourceCoordinates = sourceLatitude, sourceLongitude
destinationCoordinates = destinationLatitude, destinationLongitude
url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=driving&language=en-EN&sensor=false".format(str(sourceCoordinates),str(destinationCoordinates))
result= simplejson.load(urllib.urlopen(url))
resulting_distance = result['rows'][0]['elements'][0]['distance']['text']
print "The distance is: " + resulting_distance
我有一个TSV文件,如下所示:
Longitude Latitude
-4.143452 5.342044
-3.913602 5.341612
-3.967045 5.263331
... ...
... ...
我有一个读取TSV的下面方法
def readTSV():
with open('TSVFile.txt','r') as f:
myList = zip(*(line.strip().split('\t') for line in f))
现在,列表“myList”包含tsv文件中列表中的所有值。
我的问题是如何将这些值列表传递给“ calculateDistance ”方法,以便覆盖列表中每个值的组合?更确切地说,我需要计算列表中从一个点到每个其他点的距离。
答案 0 :(得分:0)
您可以简单地使用列表理解:
distances = [[calculateDistance(sLa, sLo, dLa, dLo) for (dLa, dLo) in myList] for (sLa, sLo) in myList]
以下是使用曼哈顿距离的结果:
>>> myList = [(1,1),(3,2),(5,1)]
>>> def calculateDistance(a,b,c,d):
... return abs(a-c)+abs(b-d)
...
>>> [[calculateDistance(sLa, sLo, dLa, dLo) for (dLa, dLo) in myList] for (sLa, sLo) in myList]
[[0, 3, 4], [3, 0, 3], [4, 3, 0]]