使用R将纬度和经度转换为城市名称

使用R将纬度和经度转换为城市名称,r,geocoding,ggmap,R,Geocoding,Ggmap,我有一个文件数据框,里面有巴西一些河流的生化需氧量信息。我想将我拥有的数据(地理坐标)转换为城市名称。我该怎么做?我知道有一个名为“ggmap”的软件包可以帮助我,但我确信它是否正确 以下是数据链接: state river lat long year Contage平均值 1 AL Rio Mundaú-9.60-35.8 2007 5 3 2 AL Rio Mundaú-9.60-35.8 2010 5 2 3 AL-Rio Mundaú-9.60-35.8 2011 9 3.78 4卡纳斯

我有一个文件数据框,里面有巴西一些河流的生化需氧量信息。我想将我拥有的数据(地理坐标)转换为城市名称。我该怎么做?我知道有一个名为“ggmap”的软件包可以帮助我,但我确信它是否正确

以下是数据链接:

state river lat long year Contage平均值
1 AL Rio Mundaú-9.60-35.8 2007 5 3
2 AL Rio Mundaú-9.60-35.8 2010 5 2
3 AL-Rio Mundaú-9.60-35.8 2011 9 3.78
4卡纳斯阿尔区-9.71-35.8 2007 5 2.2
5卡纳斯阿尔区-9.71-35.8 2010 7 2
6卡纳斯阿尔区-9.71-35.8 2011年9月2日11

这可以使用“从光栅提取”功能实现。也可以使用sp软件包中的over功能。下面我采用的方法是使用提取函数完成的:

我首先使用上面提供的数据制作了一个数据框,然后得到了巴西shapefile,并使用它从提供的坐标中提取城市名称。以下是我的代码和注释:

library(raster)
library(sp)

#### Coordinates that will be used to search ###
state = c('AL','AL','AL','AL','AL','AL')
river = c('Rio Mundaú', 'Rio Mundaú', 'Rio Mundaú'  , 'Zona dos Can', 'Zona dos Can', 'Zona dos Canais')
lat = c(-9.60, -9.60, -9.60, -9.71, -9.71, -9.71)
long = c(-35.8, -35.8, -35.8, -35.8, -35.8, -35.8)
year = c(2007, 2010, 2011, 2007, 2010, 2011)
contagem = c(5, 5, 9, 5, 7, 9)
mean = c(3, 2, 3.78, 2.2, 2, 2.11)

brazil_data = data.frame(state, river, lat, long, year, contagem, mean)


### Getting the brazil shapefile
brazil = getData('GADM', country = 'Brazil', level = 3, type = "sp")

### Extracting the attributes from the shapefile for the given points
city_names = extract(brazil, brazil_data[, c("long", "lat")])[,12]

### Adding the city names to the Brazil data frame, with the coordinates
brazil_data$City = city_names
这就是我们最后得到的结果:

> brazil_data
  state           river   lat  long year contagem mean                 City
1    AL      Rio Mundaú -9.60 -35.8 2007        5 3.00 Santa Luzia do Norte
2    AL      Rio Mundaú -9.60 -35.8 2010        5 2.00 Santa Luzia do Norte
3    AL      Rio Mundaú -9.60 -35.8 2011        9 3.78 Santa Luzia do Norte
4    AL    Zona dos Can -9.71 -35.8 2007        5 2.20     Marechal deodoro
5    AL    Zona dos Can -9.71 -35.8 2010        7 2.00     Marechal deodoro
6    AL Zona dos Canais -9.71 -35.8 2011        9 2.11     Marechal deodoro

希望这有帮助

这可以使用“从光栅提取”功能实现。也可以使用sp软件包中的over功能。下面我采用的方法是使用提取函数完成的:

我首先使用上面提供的数据制作了一个数据框,然后得到了巴西shapefile,并使用它从提供的坐标中提取城市名称。以下是我的代码和注释:

library(raster)
library(sp)

#### Coordinates that will be used to search ###
state = c('AL','AL','AL','AL','AL','AL')
river = c('Rio Mundaú', 'Rio Mundaú', 'Rio Mundaú'  , 'Zona dos Can', 'Zona dos Can', 'Zona dos Canais')
lat = c(-9.60, -9.60, -9.60, -9.71, -9.71, -9.71)
long = c(-35.8, -35.8, -35.8, -35.8, -35.8, -35.8)
year = c(2007, 2010, 2011, 2007, 2010, 2011)
contagem = c(5, 5, 9, 5, 7, 9)
mean = c(3, 2, 3.78, 2.2, 2, 2.11)

brazil_data = data.frame(state, river, lat, long, year, contagem, mean)


### Getting the brazil shapefile
brazil = getData('GADM', country = 'Brazil', level = 3, type = "sp")

### Extracting the attributes from the shapefile for the given points
city_names = extract(brazil, brazil_data[, c("long", "lat")])[,12]

### Adding the city names to the Brazil data frame, with the coordinates
brazil_data$City = city_names
这就是我们最后得到的结果:

> brazil_data
  state           river   lat  long year contagem mean                 City
1    AL      Rio Mundaú -9.60 -35.8 2007        5 3.00 Santa Luzia do Norte
2    AL      Rio Mundaú -9.60 -35.8 2010        5 2.00 Santa Luzia do Norte
3    AL      Rio Mundaú -9.60 -35.8 2011        9 3.78 Santa Luzia do Norte
4    AL    Zona dos Can -9.71 -35.8 2007        5 2.20     Marechal deodoro
5    AL    Zona dos Can -9.71 -35.8 2010        7 2.00     Marechal deodoro
6    AL Zona dos Canais -9.71 -35.8 2011        9 2.11     Marechal deodoro

希望这有帮助

成功了!我刚安装了rgeos软件包,它成功了!我只需要安装rgeos软件包。