当值为数字时,如何将纬度和十进制分钟重新计算为十进制度?

Posted

技术标签:

【中文标题】当值为数字时,如何将纬度和十进制分钟重新计算为十进制度?【英文标题】:How to recalculate latitude and decimal minutes to decimal degrees when values are numeric? 【发布时间】:2017-09-15 12:11:10 【问题描述】:

我在 R 中工作。 我有一个带有 lat 和 long 的 df,读为:

     lat        long
     5542.780  1204.000 
     5540.463  1005.425
     5639.760   958.420
     etc. 

纬度是 55 度,42.780 是十进制分钟。我想用输出把它转换成十进制度:

     lat        long
     55.713    12.06667
     55.67438  10.09042
     56.66267   9.973667
     etc.

我知道这可以通过例如55 + 42.780/60 = 55.713。但我不知道如何为 R 中的整个 df 自动执行此操作,它有大约 79 000 个观察值:) 这一定是一种方法,我已经搜索但找不到解决方案。

【问题讨论】:

Converting geo coordinates from degree to decimal的可能重复 ***.com/questions/14404596/… 谢谢,但没有。由于它使用函数将数据拆分为固定符号,因此我尝试针对我的数据进行调整,但没有成功。我需要一个代码来调整度数数据的拆分位置,如下所示! 【参考方案1】:

我只是实现了您在帖子中提到的计算,以便在完整的数据帧上进行转换。希望这会有所帮助!

df <- read.table(text="lat        long
5542.780  1204.000 
5540.463  1005.425
5639.760   958.420", header=T, sep="")
df

df_converted <- sapply(df, function(x) 
  as.numeric(gsub("(.*)(\\d2\\.\\d+)", "\\1", formatC(as.numeric(x),format='f',digits=3,flag='0'))) + 
    (as.numeric(gsub("(.*)(\\d2\\.\\d+)", "\\2", formatC(as.numeric(x),format='f',digits=3,flag='0')))/ 60))
df_converted

输出是:

          lat      long
[1,] 55.71300 12.066667
[2,] 55.67438 10.090417
[3,] 56.66267  9.973667

【讨论】:

@E.ThereseHarvey 如果解决了您的问题,请不要忘记mark it as the right answer :) 效果很好!非常感谢你!我需要它可以在学位数中调整为 1 或 2 位数字,这真的很棘手。现在也标记为正确,

以上是关于当值为数字时,如何将纬度和十进制分钟重新计算为十进制度?的主要内容,如果未能解决你的问题,请参考以下文章

68如何变为二进制数字 过程

Java 控制台做个十进制和二进制互相转换

在 XSL 中将地理坐标从度-小时-分钟转换为十进制

将整数纬度和经度转换为十进制(用于谷歌地图 api)

如何将十进制格式转换为数字格式

输入时如何将文本字段格式设置为十进制?