下载地图包,并基于python的pyshp库读取.shp数据来获取中国省界的经纬度数据
目前画地图的软件都能很方便的调用省界数据,但是如果想要单独对省界做一些个性化设置,如设置宽度、样式、颜色什么的,就需要将省界数据单独拿出来进行设置了。
软件在画地图时,描述的边界都是一些列经纬度格点的集合。目前常用的存储边界信息的文件格式为.shp格式(虽然我也不太明白为什么要用这种稀罕的格式)。
接下来详细介绍如何通过python获取省界数据
下载边界数据
可以参考如下链接:
https://blog.csdn.net/weixin_36677127/article/details/83314583
https://gadm.org/download_country_v3.html 这个链接进去后,
如下:
点击Shapefile,
下载完成,解压缩,文件信息如下:
从这个文件夹中可以看到尾号为0 1 2 3 的文件,应该是分别表示 国界、省界、市界和县(区)界;
虽然相同尾号的文件有5个,但是最为重要的还是.shp文件。该文件包含了重要的地理边界信息。
读取.shp文件
现在读取的.shp文件的库有很多,
https://mp.weixin.qq.com/s/aAucKybX_FE8aImja_M8VQ 可以参考这个链接
这里使用 pyshp库进行处理
可以参考这个链接:https://blog.csdn.net/GISuuser/article/details/81664223
import shapefile
import numpy as np
from mpl_toolkits.basemap import Basemap
file=shapefile.Reader('gadm36_CHN_shp/gadm36_CHN_1.shp') #读取省界.shp文件
shapes=file.shapes() #获取point
records=file.records() #获取省名称
1
2
3
4
5
6
7
打开shapes文件:
打开第一个shapes的第一个Shape文件,可以看到地理信息保存在points里面,每一个点是一个经纬度二元组。
打开records文件,可以看到一些具体省名称信息:
records=file.records()
records
pro_points=[] #建立省边界列表
pro_names=[] #建立省名称列表
for i in range(len(shapes)):
points=shapes[i].points #h获取经纬度数据
pro_name=file.records()[i][3] #获取省名称
lon =[]
lat =[]
#将每个tuple的lon和lat组合起来
[lon.append(points[i][0]) for i in range(len(points))]
[lat.append(points[i][1]) for i in range(len(points))]
lon=np.array(lon).reshape(-1,1)
lat=np.array(lat).reshape(-1,1)
loc=np.concatenate((lon,lat),axis=1)
pro_points.append(loc)
pro_names.append(pro_name)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
形成的pro_names和pro_points如下:
现在将
lat_min,lat_max=37,55
lon_min,lon_max=115,135
fig = plt.figure(figsize=(18,10))
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])
m=Basemap(projection='cyl',llcrnrlat=lat_min,llcrnrlon=lon_min,
urcrnrlat=lat_max,urcrnrlon=lon_max,resolution='l',ax=ax1)
m.drawcoastlines()
m.drawcountries()
name_list=['Liaoning','Jilin','Beijing','Hebei','Heilongjiang'] #画出这几个省的边界
for name,point in zip(pro_names,pro_points):
if name in name_list:
lon=point[:,0]
lat=point[:,1]
plt.scatter(lon,lat,marker='.',c='k',s=0.5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
将省界数据保存下来
为了方便后面调用,可以考虑所有数据保存为.hdf文件,调用h5py库就好了
import h5py
file_name='province_boundary_lon_lat.hdf' #保存的目标文件名和路径
f=h5py.File(file_name,mode='w') #创建一个hdf文件
for pro_name,points in zip(pro_names,pro_points):
#每一个省份创建一个群组
a=f.create_group(pro_name)
a['longitude']=points[:,0]
a['latitude']=points[:,1]
f.close() #写入完成后,记得关掉。
1
2
3
4
5
6
7
8
9
10
11
12
创建完成以后,由相关hdf软件打开以后,结果如上图
attention !!!
台湾是中国领土不可分割的一部分!
还是在那个网址
一样的下载方式。后面获取台湾边界的经纬度格点的方式和上述一样,这里就不详细介绍了。
由于CSDN似乎不方便上传文件,因此我把刚创建的.hdf文件放在了气象家园里面,
下载链接如下:http://bbs.06climate.com/forum.php?mod=viewthread&tid=91308,
不过下载这个需要金币。如果没有的话,可以私戳我,我免费发给你。
————————————————
版权声明:本文为CSDN博主「fangzuliang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43718675/article/details/93410875
下载地图包,并基于python的pyshp库读取.shp数据来获取中国省界的经纬度数据相关推荐
- 基于python的pyshp库读取.shp数据来获取中国城市边界的经纬度数据,并生成hdf文件
在之前博客中记录了如何获取省界经纬度数据 下面介绍如何获取城市区域的边界经纬度数据,具体思路同上一篇博客 https://blog.csdn.net/weixin_43718675/article/d ...
- python操作文件的库_Python使用pyshp库读取shapefile信息的方法
通过pyshp库,可以读写Shapefile文件,查询相关信息,github地址为 https://github.com/GeospatialPython/pyshp#reading-shapefil ...
- python文件读写用到的库_Python使用pyshp库读取shapefile信息的方法
通过pyshp库,可以读写shapefile文件,查询相关信息,github地址为 import shapefile # 使用pyshp库 file = shapefile.reader(" ...
- python中pyshp_Python使用pyshp库读取shapefile信息的方法
通过pyshp库,可以读写Shapefile文件,查询相关信息,github地址为 import shapefile # 使用pyshp库 file = shapefile.Reader(" ...
- 基于python的npcap库与dpkt库实现抓包及存储
基于python的npcap库与dpkt库实现抓包及存储 import pcap import dpkt import socket import sys import getopt import o ...
- python如何安装wordcloud_基于python的wordcloud库的安装方法
基于python的wordcloud是最近十分流行的一项技术,而在学习这门技术之前,一定要学会安装.下面给大家介绍一下wordcloud的安装步骤. Tip: python第三方组件有很多都是whl文 ...
- NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)
NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分) 目录 输出结果 设计思路 相关资料 1.关于代码 2.关于数据集 关于留言 1.留言内容的注意事项 2.如 ...
- Python 基于Python从mysql表读取千万数据实践
基于Python 从mysql表读取千万数据实践 by:授客 QQ:1033553122 场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...
- NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码
NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之情感分析:基于python编程(jieba库)实现中文文本情 ...
最新文章
- android 自定义键盘_Android自定义输入车牌号键盘、车牌简称,数字 ,字母键盘...
- summary+plan
- zcmu1710(dp)
- Sum in the tree
- 游戏模型提取_狐狸在等我中文版 是一款恋爱冒险游戏
- 九妹带你走向 架构师
- MVC常见的控制器,接口,数据层之间的操作
- Win7系统无法复制粘贴怎么解决
- java static final关键字_Java的static与final关键字
- 嵌入式软件设计第10次实验报告
- 黑客攻击公司化:网络犯罪也有商业模式也有CEO
- 轻松搭建Redis缓存高可用集群
- 微信小程序开发--【APP(Object)函数介绍】(三)
- c语言万能头文件用不,万能头文件不能用?
- java voip 的sip服务器搭建_用ASTERISK搭建自己的免费VOIP服务器
- 【老生谈算法】matlab实现Retinex理论的图像去雾算法源码——图像去雾算法
- Mysql实战45讲(二十二)Mysql有那些“饮鸩止渴”提高性能的方法?
- 图表点编辑数据无反应_excel输入数据表格没反应-点击EXCEL插入图表没有反应
- JS获取当前时间的前几天、前几周、前几个月、前几年的时间
- TDA4VM VTM模块使用笔记
热门文章
- mysql 事务权限_0428-mysql(事务、权限)
- css 渐变色_如何设置渐变色的单元格值?
- 1.18.Table API SQL(概念、依赖图、Table程序依赖、扩展依赖)
- Linux 中挖矿病毒处理过程
- Ibatis动态(dynamic)查询
- 04_NoSQL数据库之Redis数据库:set类型和zset类型
- 1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton
- STL之vector,数组线性容器array,list容器,算法find,find_if,bind1st,仿函数
- Linux下crontab(自动重启)的格式备忘
- UART_RECV详细设计方案