首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为每个数据集指定一个名称

为每个数据集指定一个名称
EN

Stack Overflow用户
提问于 2013-06-04 06:48:48
回答 1查看 60关注 0票数 0

所以我有一个代码

代码语言:javascript
运行
复制
print
latOne = dL[1][3] 
lonOne = dL [1][4] 
x = [calculateDistance(latOne, lonOne, latTwo, lonTwo ) for latTwo, lonTwo in zip(latitude, longitude)]
print x

这将在带有输出的列表中生成距离值

代码语言:javascript
运行
复制
[0.0, 3043.004178666758, 21558.2996208357, 40246.748450913066, 40908.82213277263, 43786.0579097594, 67781.1426515405, 79693.11338661514, 65046.35819797423, 92804.01912347642]

现在每个距离都是基于来自一个单独的点(它有一个定义的名称)的坐标,即

代码语言:javascript
运行
复制
Sydney (-20.7, 100) 
Melbourne (-20, 120)

所以我的代码取距离ok,并生成距离列表。我想要做的是设置结构,以便打印距离及其相关的点名称。也就是说,从悉尼取经纬度,计算距离,然后输出

代码语言:javascript
运行
复制
Distance to Syndey is output ..., Distance to Melbourne is output, and so on.

如果你需要更多我的代码来帮助,请让我知道。

编辑:

下面是完整的脚本代码。

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2013-06-04 07:41:17

首先,您应该真正了解一下geopy.distance以及它的许多其他内置功能。是的,你已经写了他们的算法之一,但它可能会有其他你会发现你需要的东西。

所以你会想要在这里使用字典。如果你能保存一个站点的纬度和经度,它将使你的生活变得非常非常容易!

代码语言:javascript
运行
复制
points = [[row[3],row[4]] for row in dL]
stations = [row[1] for row in dL]
my_dict = dict(zip(stations,points))

现在您有了一个字典,您可以通过站点名称来调用您的纬度和经度,并以一种便于以后回忆的方式存储它。我认为这就是完成代码所需的全部内容。如果不是,请评论,以便我可以相应地编辑它。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16907099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档