【问题标题】:SF: from UTM to latitude/longitudeSF:从 UTM 到纬度/经度
【发布时间】:2021-04-15 18:54:43
【问题描述】:

我有一组 UTM 公制点,我想使用 sf 环境将其转换为纬度和经度小数点。

我拥有的数据集如下所示:

df <- data.frame(longitude=c(4585434,4588904,4586694),
                 latitude=c(430060.8,430960.8,432427.2),
                 street=c("74 JOSEP SERRANO", "30 LLOBERA","4 SANT ILDEFONS"),
                 number=c(45,68,34))

我只能在sp框架下做。

dfevpo <- SpatialPoints(df[, c("longitude","latitude")], proj4string=CRS("+proj=utm +zone=10")) 
longlats <- spTransform(dfevpo, CRS("+proj=longlat")) #transform

longlats.df <- as.data.frame(longlats)
longlats.df$.id <- as.numeric(rownames(longlats.df)) 

但是,生成的 longlats.df 数据集不包括原始数据集中的所有变量。我想顺序是一样的,我可以把它和原来的合并。但是,有没有更直观的方法来做到这一点?理想情况下,我想使用 sf。

【问题讨论】:

    标签: r sf


    【解决方案1】:

    您可以使用以下代码

    library(sp)
    
    df <- data.frame(longitude=c(4585434,4588904,4586694),
                     latitude=c(430060.8,430960.8,432427.2),
                     street=c("74 JOSEP SERRANO", "30 LLOBERA","4 SANT ILDEFONS"),
                     number=c(45,68,34))
    
    #Convert the data frame to SpatialPointsDataFrame
    coordinates (df)= ~longitude + latitude
    
    #Assign a projection to it
    proj4string(df) <- CRS("+proj=utm +zone=10")
    
    #Projection transformation
    longlats <- spTransform(df, CRS("+proj=longlat")) 
    
    #Convert it to data frame
    longlats.df <- as.data.frame(longlats)
    

    如果你想使用sf包来实现整个事情,你可以使用下面的代码

    df <- data.frame(longitude=c(4585434,4588904,4586694),
                     latitude=c(430060.8,430960.8,432427.2),
                     street=c("74 JOSEP SERRANO", "30 LLOBERA","4 SANT ILDEFONS"),
                     number=c(45,68,34))
    
    #Conversion of data frame to sf object
    df_sf <- st_as_sf(x = df,                         
                      coords = c("longitude", "latitude"),
                      crs = "+proj=utm +zone=10")
    
    #Projection transformation
    sfc = st_transform(df_sf, crs = "+proj=longlat +datum=WGS84")
    
    #Convert it to data frame
    sfc_df <- as.data.frame(sfc)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-14
      • 2012-01-10
      • 2015-03-05
      • 2016-06-19
      • 1970-01-01
      • 2013-09-09
      • 2017-11-12
      • 2022-01-15
      相关资源
      最近更新 更多