今天是国庆节,是祖国母亲72华诞,忍不住心潮澎湃,画一幅中国地图,以表拳拳之心。
今天我们使用R语言来绘制中国地图。
Step1:准备工作
这里我们需要提前下载几个R包。
#下载绘制中国地图所需的各种R包
BiocManager::install("maps")
BiocManager::install("mapdata")
BiocManager::install("maptools")
BiocManager::install("sf")
自己提前准备用于画中国地图的GIS数据(http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip),包括国界和省界,共三个文件,(bou2_4p.dbf, bou2_4p.shp, bou2_4p.shx),有需要的也可以联系我,我发送给大家。
Step2:准备画图
#设置目录
setwd("/app/R_packages/china/")
#加载R包
library(maps)
library(mapdata)
library(maptools)
library(sf)
#读取中国行政区地图数据
china_map<-sf::st_read('bou2_4p.shp')
plot(china_map$geometry)
图1.jpg
#给地图加点中国红
plot(china_map$geometry,col="red")
图2.jpg
#china_map数据中包含了925条记录,每条记录中都含有,面积(AREA),周长(PERIMETER),BOU2_4M、BOU2_4M_ID、ADCODE93、ADCODE99、中文名(NAME),几何形状(geometry)等字段,其中中文名(NAME)字段是以GBK编码的,需要iconv函数转化一下才能正常显示。
length(china_map$geometry)
[1] 925
names(china_map)
[1] "AREA" "PERIMETER" "BOU2_4M_" "BOU2_4M_ID" "ADCODE93" "ADCODE99"
[7] "NAME" "geometry"
#利用iconv 格式转换函数来转换各省名称
table(iconv(china_map$NAME, from = "GBK"))
图3.jpg
iconv(china_map$NAME, from = "GBK")
图4.jpg
我们还可以绘制不同省份地图
#河北行政区化图
plot(china_map[7,]$geometry,col="red")
图5.jpg
地图绘制就是这么简单,今后自己也会结合其他信息丰富地图绘制,希望大家多提宝贵意见。最后祝福祖国母亲生日快乐,愿祖国繁荣昌盛。
如果小伙伴有发现本文中地图哪有有错误的,敬请批评指正。中国领土一寸都不能少。
网友评论