如何将这些坐标转换为实数?

How do I convert these coordinates to real numbers?

我在一个数据框中的两列中有类似的东西 data= pd.read_csv('xxxxxxxxxxxx.dat',delimiter=';',encoding='latin_1') 在 python 纬度=60°11.7765 经度=024°57.3073

我想得到这个:

纬度=60.1177.... 经度=024.573....

你问的问题似乎是想简单地替换一些字符,而不是真正的坐标转换。感谢评论,我了解到这种歧义是由于您自己不清楚如何获得转换。 在不同类型的坐标中,我们发现了 DDM(十进制度分)格式。当您要求 "a real number" 时,您实际上指的是 DD 格式(十进制度格式,例如 13.41° N)。 所以在 DDM 中坐标纬度:15°41.13 N 由 3 个值和一个参考组成:

  • D:度数,这里是15
  • M:分钟,这里是41
  • S:秒,这里是13
  • N 或 S:北或南(在经度上我们有东或西)

wikipedia says,从DDM到DD的转换公式为

decimal degrees = degrees + (minutes/60 + seconds/3600)

我试了两个在线转换器(one and two),你写的坐标好像是DMM格式的。与DDM格式唯一不同的是,这里的秒数已经除以60,所以我们可以列出:

  • D:度数,这里是15
  • M:分钟,这里是41
  • S: seconds/60, 这里是 13
  • N 或 S:北或南(在经度上我们有东或西)

也就是说DMM到DD的公式是

decimal degrees = degrees + (minutes/60 + seconds/60)

代码

import pandas as pd

df_csv = pd.read_csv('file.dat',delimiter=';',encoding='UTF_8')
latitude = df_csv['Latitude'].astype('str')
for element in latitude:
    degree= float(element[:element.find('°')])
    minutes = float(element[(element.find('°')+1):(element.find('.'))])
    seconds= float(element[element.find('.'):])
    decimalDegrees=degree + minutes/60 + seconds/60

输入

Lat: 31°11.7765

输出

31.196275

在您的坐标中,您不谈论任何基点。规则是如果是 N 或 E 结果是正数,如果是 S 或 W 结果是负数 (-1 * output)