如何将这些坐标转换为实数?
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)
我在一个数据框中的两列中有类似的东西
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)