R中的纬度和经度坐标

时间:2017-05-26 13:00:56

标签: r google-maps

我有一列合并的纬度和经度坐标,格式如下:

coordinates
(-73.2566,44.51513)

我正在尝试获取格式

lat     long
73.2566  44.51512

我知道这似乎是一个相对简单的问题,但我似乎无法找到解决方案。我已经尝试使用gsub()函数但是没有摆脱括号。

3 个答案:

答案 0 :(得分:2)

尝试使用这个简单的功能(需要使用google api):

google_api <- "https://maps.googleapis.com/maps/api/geocode/json"
geocode <- function(address, verbose=FALSE) {
library(httr)
r <- GET(google_api, query=list(address=address))
stop_for_status(r)
result <- content(r)
first <- result$results[[1]]
df <- as.data.frame(list(lat=first$geometry$location$lat, 
lon=first$geometry$location$lng))
return(df)
}

#example
geocode("Suzhou New Matro")
       lat      lon
1 31.31015 120.6221

使用google api,函数geocode()会为每个城市返回您需要的格式的坐标

答案 1 :(得分:1)

> library(stringr)
> library(magrittr)
> "(-73.2566, 44.51513)" %>% # take coord as string
+   str_replace_all("[()]", "") %>% # replace parantheses
+   str_split_fixed(", ", n=2) %>% # split up based on comma and space after
+   as.data.frame %>% # turn this to a data frame
+   transmute(lat=V1, long=V2) # rename the variables
       lat      long
1 -73.2566  44.51513

如果您有这些值的向量,可以通过执行此for (i in coords)轻松调整,其中最后data.frame将使用类似bind_rows的内容重复添加到数据集中

答案 2 :(得分:1)

这可能太简单了,但

> coordinates=c(-73.2566,44.51513)
> coordinates
[1] -73.25660  44.51513
> lat=coordinates[1]
> lat
[1] -73.2566
> long=coordinates[2]
> long
[1] 44.51513

https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/ggmap/ggmapCheatsheet.pdf

有一个ggmap包