R 如何从形状文件中使用纬度和经度查找城市?
我的问题是:我想使用许多经度和纬度数据从shapefile中获取城市名称。某些晶格度和经度不一定位于多边形(城市)的中心,而是位于多边形的某些部分。我的意思是,我不知道这一点属于哪个城市,这就是我想知道的。在形状文件中,具有属于相应城市的每个多边形的名称 我知道谷歌和其他API是付费的和/或有限的。 我更喜欢从shapefile中获取 [链接至巴西圣保罗州的shapfile(城市)(geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_municipais/municipio_2020/UFs/SP/SP_Municipios_2020.zip) 以下是一些例子:R 如何从形状文件中使用纬度和经度查找城市?,r,ggplot2,shapefile,R,Ggplot2,Shapefile,我的问题是:我想使用许多经度和纬度数据从shapefile中获取城市名称。某些晶格度和经度不一定位于多边形(城市)的中心,而是位于多边形的某些部分。我的意思是,我不知道这一点属于哪个城市,这就是我想知道的。在形状文件中,具有属于相应城市的每个多边形的名称 我知道谷歌和其他API是付费的和/或有限的。 我更喜欢从shapefile中获取 [链接至巴西圣保罗州的shapfile(城市)(geoftp.ibge.gov.br/organizacao_do_territorio/malhas_terri
“coord出于某种原因,library
revgeo
(使用光子地理编码器进行反向地理编码)目前不适用于我。您可以尝试以下方法:
library(tidyverse)
library(rjson)
coord %>%
select(lon, lat) %>%
imap(~str_c(.y, "=", .x)) %>%
pmap(~str_c(c(...), collapse = "&")) %>%
str_c("https://photon.komoot.io/reverse?", .) %>%
map(~rjson::fromJSON(file = .x)) %>%
map(~pluck(.x, "features", 1, "properties")) %>%
map_dfr(~.x[c("country", "city", "county", "district", "state")]) %>%
cbind(coord, .)
lon lat country city county district state
1 -48.1766 -21.7946 Brasil Araraquara Região Geográfica Intermediária de Araraquara Vila Melhado São Paulo
2 -50.0780 -21.4209 Brasil Penápolis Região Geográfica Intermediária de Araçatuba Penápolis São Paulo
3 -52.9580 -22.4820 Brasil Rosana Região Geográfica Intermediária de Presidente Prudente Rosana São Paulo
4 -51.3837 -20.8939 Brasil Andradina Região Geográfica Intermediária de Araçatuba Vila Peliciari São Paulo
5 -50.2466 -20.2834 Brasil Fernandópolis Região Geográfica Intermediária de São José do Rio Preto Coester São Paulo
6 -47.0006 -21.4708 Brasil Mococa Região Geográfica Intermediária de Campinas Centro São Paulo
7 -47.8348 -24.4881 Brasil Registro Região Geográfica Intermediária de Sorocaba Vila Paraguai São Paulo
8 -45.0857 -23.4339 Brasil Ubatuba Região Metropolitana do Vale do Paraíba e Litoral Norte Jardim Carolina São Paulo
使用形状文件:
library(sf)
shp_df <- read_sf(data_path)
st_coord <- st_as_sf(coord, coords = c("lon", "lat"), crs = st_crs(shp_df))
coord$city <- shp_df[unlist(st_within(st_coord, shp_df)),]$NM_MUN
coord
lon lat city
1 -48.1766 -21.7946 Araraquara
2 -50.0780 -21.4209 Penápolis
3 -52.9580 -22.4820 Rosana
4 -51.3837 -20.8939 Andradina
5 -50.2466 -20.2834 Fernandópolis
6 -47.0006 -21.4708 Mococa
7 -47.8348 -24.4881 Registro
8 -45.0857 -23.4339 Ubatuba
库(sf)
shp_df你也可以发布多边形的示例吗?并非每个人都愿意使用zip文件,因此提供一些示例可能会让您获得更多答案!!它解决了我的问题。谢谢@det