我有一个家庭作业,我收到了一份长约 10,000 行的文件。每行有 3 个元素,物种名称、纬度和经度。我需要编写一个函数,它返回在给定位置的特定距离内找到的动物数量,同时考虑 4 个参数:文件名、距离以及位置的纬度和经度。
在一个理想的世界里,我可以进入 shell,并使用文件名、任何距离和任何经纬度调用函数,并计算距离内的动物数量。
我已经成功地导入了文件,并且给了我一些代码示例来帮助计算距离并帮助将文件转换为列表。这是我到目前为止编写的代码:
def LocationCount(filename, distance, Lat1, Lon1):
FIn = open(filename, "r")
for Line in FIn:
def LineToList(Line):
Line = Line.rstrip()
FIn.close()
return Line.split("\t")
def CalculateDistance(Lat1, Lon1, Lat2, Lon2):
Lat1 = float(Lat1)
Lon1 = float(Lon1)
Lat2 = float(Lat2)
Lon2 = float(Lon2)
nDLat = (Lat1 - Lat2) * 0.017453293
nDLon = (Lon1 - Lon2) * 0.017453293
Lat1 = Lat1 * 0.017453293
Lat2 = Lat2 * 0.017453293
nA = (math.sin(nDLat/2) ** 2) + math.cos(Lat1) * math.cos(Lat2) * (math.sin(nDLon/2) ** 2 )
nC = 2 * math.atan2(math.sqrt(nA),math.sqrt( 1 - nA ))
nD = 6372.797 * nC
return nD