如何使用python函数从文本文件导入坐标来计算距离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python函数从文本文件导入坐标来计算距离相关的知识,希望对你有一定的参考价值。

将以下数据保存在名为coordinates.txt的文件中。

A,0,0;B,3,4
C,4,7;D,2,9
E,8,2;F,0,6

该文件的每一行包含一个Point的名称及其X-Y坐标,一个分号,然后是第二个Point的名称及其形式的X-Y坐标:<Name1>:X1,Y1;<Name2>:X2,Y2;

编写脚本以使用下面给出的公式计算距离和城市街区距离:

distance = math.sqrt((x1 - x2)**2 + (y1 - y2)**2) 
City Block Distance = |(X1-X2)|+|(Y1-Y2)|

因此,脚本的输出变为:

  • 从A(0,0)到B(3,4):实际距离5.000;城市街区距离7
  • 从C(4,7)到D(2,9):实际距离2.828;城市街区距离4
  • 从E(8,2)到F(0,6):实际距离8.944;城市街区距离12。

我尝试从excel导入数据,但我是新手,所以不知道如何实现这一目标。

答案

假设您在与Python脚本相同的目录中有coordinates.txt

with open("coordinates.txt", 'r') as coordinates_file:
    for line in coordinates_file:
        # delete trailing new-line character
        line = line.rstrip()
        # unpack points (e.g. "A,0,0")
        point_1, point_2 = line.split(";")
        # name_* is for example "A"; loc*_tmp is a string representation of coords
        name_1, *loc1_tmp = point_1.split(",")
        # change coords to int
        loc1 = [int(loc) for loc in loc1_tmp]
        name_2, *loc2_tmp = point_2.split(",")
        loc2 = [int(loc) for loc in loc2_tmp]
        euclidian_distance = math.sqrt((loc1[0] - loc2[0])**2 + (loc1[1] - loc2[1])**2)
        block_distance = abs(loc1[0] - loc2[0]) + abs(loc1[1] - loc2[1])
        print("The distances between {} and {}:".format(name_1, name_2))
        print("Euclidian distance {}".format(euclidian_distance))
        print("Block distance {}".format(block_distance))

以上是关于如何使用python函数从文本文件导入坐标来计算距离的主要内容,如果未能解决你的问题,请参考以下文章

如何将实时坐标从位置文件发送到python中的不同文件?

如何使用 datetime Python 模块计算距当前日期六个月的日期?

如何在python中使用OCR从图像中获取文本识别器的坐标

从文本文件导入数据时向预先存在的字典键添加值(Python 3)

如何在Oracle中有效地计算坐标之间的距离

iOS--UILabel设置行距和字间距,并根据文本计算高度