【问题标题】:Converting latitude and longitude转换纬度和经度
【发布时间】:2012-12-30 19:31:34
【问题描述】:

以下数据框表示经纬度十进制坐标。我希望使用 + 和 - 来显示十进制度是北、南、东还是西(在纬度和经度列中)。

因此,如果十进制度数为 N,则纬度将为正。 ...如果十进制度为 S,则纬度将为负。 ...如果十进制度为 E,则经度为正 如果十进制度为 W,则经度为负数。

a <- c(1:3)
Lat <- c(54.5, 55.2, 10.1)
NS <- c("N","N","S")
Long <- c(1.2, 0.5, 1.3)
EW <- c("W","E","W")
df1 <- data.frame(a,Lat,NS,Long,EW)

我将如何在 R 中做到这一点?任何建议将不胜感激。

【问题讨论】:

标签: r


【解决方案1】:

使用ifelse:

df1 <- within(df1, {
             Lat <- ifelse(NS=="N", Lat, -Lat)
             Long <- ifelse(EW=="E", Long, -Long)
})

df1
  a   Lat NS Long EW
1 1  54.5  N -1.2  W
2 2  55.2  N  0.5  E
3 3 -10.1  S -1.3  W

我使用within() 来减少打字量。

【讨论】:

    【解决方案2】:

    查看 NMEA 转换:http://www.nmea.org/ 但是,您可以在 for() 方法中执行此操作以获取一个位置

    【讨论】:

      【解决方案3】:

      很简单,ifelse:

      df2 <- data.frame(a=df1$a, Lat=ifelse(df1$NS=="N", df1$Lat, -1*df1$Lat), 
                                 Long=ifelse(df1$EW=="E", df1$Long, -1*df1$Long))
      
      df2
        a   Lat  Long
      1 1  54.5 -1.2
      2 2  55.2  0.5
      3 3 -10.1 -1.3
      

      【讨论】:

        猜你喜欢
        • 2021-10-20
        • 2012-04-25
        • 1970-01-01
        • 2020-09-02
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        • 2021-09-26
        • 1970-01-01
        相关资源
        最近更新 更多