R语言获取世界地图替代方案及经纬度识别国家方法咨询
替代废弃rworldmap的SP格式地图方案及坐标转国家方法
一、获取SP格式世界空间多边形地图的替代方案
- GADMTools包:可直接获取SP格式的全球或特定国家行政边界,无需依赖即将移除SP支持的
rnaturalearth。示例代码:
library(GADMTools) # 获取全球低分辨率国家边界(SP格式) countriesSP <- gadm(country = "global", level = 0, type = "sp")
- 旧版本rnaturalearth:若坚持使用
ne_countries,可安装仍保留SP选项的旧版本(如0.1.0),但长期不推荐,官方后续会彻底移除该支持。安装命令:
install.packages("devtools") devtools::install_version("rnaturalearth", version = "0.1.0", repos = "http://cran.us.r-project.org")
- SF转SP格式:如果必须用新版本
rnaturalearth的SF数据,只需一次转换即可得到SP格式,无需深入学习SF操作:
library(rnaturalearth) library(sf) library(sp) # 获取SF格式数据后转SP countries_sf <- ne_countries(scale = 10, returnclass = "sf") countriesSP <- as_Spatial(countries_sf)
二、十进制坐标识别国家的简便方法
无需手动处理空间多边形交集,以下两种方法更高效:
- geonames包反向地理编码:调用GeoNames的免费API(需先在GeoNames官网注册账号),直接根据坐标返回国家信息:
library(geonames) # 设置你的GeoNames用户名 options(geonamesUsername = "your_username") # 示例坐标(纽约:纬度40.7128,经度-74.0060) result <- GNreverse(lat = 40.7128, lng = -74.0060) # 提取国家名称 country_name <- result$countryName
- SP数据空间匹配:用已有的SP地图数据结合
sp包的over()函数快速匹配,无需外部API:
library(sp) # 将目标坐标转为SP点对象(需与地图数据投影一致) coord_points <- SpatialPoints( data.frame(lon = c(-74.0060), lat = c(40.7128)), proj4string = CRS(proj4string(countriesSP)) ) # 匹配对应国家 matched_country <- over(coord_points, countriesSP)$NAME
内容的提问来源于stack exchange,提问作者js27
相关产品推荐
相关产品推荐

