如何根据经纬度判断该地点所处的省份?(更新版)

如何根据经纬度判断该地点所处的省份?(更新版)

这是之前的一篇推文,之前只发了推文但是没有直播,所以今天整理了下重新发一下,明天直播讲解。本文使用上市公司位置的数据集讲解了如何通过地理计算根据经纬度坐标判断该位置所处的省份或者区县。

今天我的琼琼小伙伴给我发了一个数据集,是 2001 年到 2018 年所有上市公司的经纬度数据。她想知道每个公司所处的省份,我就帮她计算了一下。

视频讲解

首先我们先把加载相关的 R 包、设定绘图主题和读取一份中国省份分布的数据,读入之后将坐标系转换为 lcc 坐标系:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

最新版本的 sf 包在打印 crs 的时候采用上面的形式,不过对 crs 的设置依然支持 proj4strings(也就是这个:+proj=laea +lat_0=23 +lon_0=113 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs)。

再读取待处理的上市公司经纬度数据以及将这个数据转换成和 cnmap 同样 crs 的 sf 对象:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

然后就可以进行省份归类啦,需要注意,进行地理计算的时候,各个 sf 对象应该是同一 crs 的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

绘图展示:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

是不是觉得绘图区域有点窄?可以使用下面的方法调整:

1
2
3
4
# 查看 cnmap 的 bbox
st_bbox(cnmap)
#> xmin ymin xmax ymax
#> 986092.1 1051812.0 5976378.0 6595443.7

然后就可以根据 xmin 和 xmax 设定绘图区域了:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

然后选择我们需要的几个变量保存即可:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

再例如深圳各个区的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

然后就可以选择想要的变量保存了:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

不过上面做的事情意义不大哈哈,因为可以很容易获取上市公司的信息数据,我这里提供一份:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

这份数据是使用我之前在Stata 网络数据爬取:JSON篇中介绍的 cnstock2 命令(Stata)爬取的。

知识星球附件链接:https://t.zsxq.com/6meyJyJ

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×