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

Python 如何将这些坐标转换为实数?,python,coordinates,transform,openstreetmap,geopandas,Python,Coordinates,Transform,Openstreetmap,Geopandas,我在一个数据帧中有两列这样的内容 python中的data=pd.read_csv('xxxxxxxxxxx.dat',分隔符=';',encoding='latin_1') 纬度=60°11.7765 经度=024°57.3073 我想得到这个: 纬度=60.1177。。。。 经度=024.573….您所问的问题似乎需要一些字符的简单替换,而不是坐标的真正转换。多亏了这些评论,我理解这种含糊不清是因为您自己不清楚如何获得转换。 在不同类型的坐标中,我们找到了DDM(度十进制分钟)格式。当您要求

我在一个数据帧中有两列这样的内容 python中的
data=pd.read_csv('xxxxxxxxxxx.dat',分隔符=';',encoding='latin_1')
纬度=60°11.7765 经度=024°57.3073

我想得到这个:

纬度=60.1177。。。。
经度=024.573….

您所问的问题似乎需要一些字符的简单替换,而不是坐标的真正转换。多亏了这些评论,我理解这种含糊不清是因为您自己不清楚如何获得转换。 在不同类型的坐标中,我们找到了DDM(度十进制分钟)格式。当您要求“实数”时,实际上是指DD格式(十进制度数格式,例如13.41°N)。 因此,在DDM中,坐标纬度:15°41.13 N由3个值和一个参考值组成:

  • 度,这里是15度
  • M:几分钟,这里是41分钟
  • S:等一下,这里是13
  • 北或南:北或南(在经度上我们有东或西)
如前所述,从DDM到DD的转换公式为

decimal degrees = degrees + (minutes/60 + seconds/3600)
decimal degrees = degrees + (minutes/60 + seconds/60)
我试过两个在线转换器(和),看起来你写的坐标是DMM格式的。DDM格式的唯一区别在于,此处秒数已除以60,因此我们可以列出:

  • 度,这里是15度
  • M:几分钟,这里是41分钟
  • S:60秒,这里是13秒
  • 北或南:北或南(在经度上我们有东或西)
这意味着从DMM到DD的公式是

decimal degrees = degrees + (minutes/60 + seconds/3600)
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
输入

输出

31.196275

在坐标系中,你不谈论任何基点。规则是,如果是N或E,则结果为正,如果是或W,则结果为负(-1*输出)

请显示用于创建数据帧的代码,以便我们了解数据类型等。您可以对字符串执行
替换
<代码>“60°11.76”。替换(“”,“”)
你真的想要不正确的
60.1177
转换吗?
60°11.7765
看起来像十进制的几分钟,这意味着
11.7765
是几分钟,而不是
.117764度
好吧,我只想把那些值60°11.7765转换成实数,把点放在地图上,Idk如果我用好的话解释一下y@KarlKnechtel我必须道歉。你关于转换的评论是正确的,我被这个问题弄糊涂了。问题是这个家伙甚至不知道最终结果是什么样子,我只是告诉他如何得到他在示例中要求的结果,这是一个简单的字符替换。