我在一个数据框中的两列中有这样的内容。data= pd.read_csv('xxxxxxxxxxxx.dat',delimiter=';',encoding='latin_1')
在python中纬度=60°11.7765经度=024°57.3073。
而我想得到这个。
纬度=60.1177....经度=024.573....。
你问的问题似乎是想简单的替换一些字符,而不是真正的坐标转换。谢谢你的评论,我明白了这种歧义是由于你自己不清楚如何进行转换。在不同类型的坐标中,我们发现DDM(度数十进制分)格式。当你问 "一个实数 "时,你实际上指的是DD格式(十进制度数格式,例如13.41°N).所以在DDM中,坐标纬度:15°41.13 N由3个值和一个参考值组成。
作为 维基百科说,从DDM转换为DD的公式为
decimal degrees = degrees + (minutes/60 + seconds/3600)
我尝试了两个在线转换器(一个 和 两种),看来你写的坐标是DMM格式的。与DDM格式唯一不同的是,这里的秒已经被60除掉了,所以我们可以列出。
也就是说,从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*输出)