在之前的课程中,我给大家分享过使用 R 语言绘制省市区县地图的方法:
- 使用 R 语言绘制历年中国省市区县地图(小地图版本+长版):https://rstata.duanshu.com/#/brief/course/379d19770956478ebc4d919910fca74c
另外也给大家分享过使用 R 语言进行地理编码以及根据经纬度判断所处省市区县的方法:
- 使用 R 语言进行地理编码:地址解析经纬度、坐标转换 & 根据经纬度判断所处的省市区县:https://rstata.duanshu.com/#/brief/course/6f8633b486ed49e398c486d0d9f0f59a
乡镇地图的绘制
今天我们再来补充讲解下如何绘制乡镇地图以及如何根据经纬度判断所处的乡镇。
附件中的 town4326 文件夹是 WGS84 坐标系下的乡镇地图数据;town_mini 文件夹是经过编辑后的小地图版本的乡镇地图数据;town_long 则是长版本的。
town_mini 和 town_long 都是“+proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs”坐标系的,也就是和之前的地图数据一样。
首先加载相关 R 包并读取数据:
library(tidyverse) |
然后就可以绘图了,这部分细节较多,建议结合视频讲解学习:
library(ggspatial) |
![]()
长版地图的绘制代码类似,数据换成长版的即可:
# 长版 |
![]()
根据经纬度判断所处的乡镇
首先读取乡镇矢量数据:
read_sf("town4326/town4326.shp") -> town |
工企样本.dta 是大概 1 万条工企数据的样本,含有经纬度变量,使用下面的代码就可以判断每个坐标点所处的乡镇了:
haven::read_dta("工企样本.dta") %>% |
如果数据量不大,可以直接用下面的代码判断:
# dfres %>% |
数据量大的时候会非常慢,建议转换成 mycrs 坐标系再运算:
# 建议转换成 mycrs 坐标系再判断: |
点击这里跳转到 RStata 短书平台获取附件:使用 R 语言绘制中国乡镇地图及根据经纬度判断所处的乡镇
评论