Basemap绘制中国地图
2022.06.02更新
CHN_adm_shp.zip
网盘下载链接:
链接:https://pan.baidu.com/s/11igf-bfDLuolI5HzEykzMw
提取码:oas6
2017年12月23日更新
使用folium实现中国地图绘制,文章链接:
python/folium绘制中国人口数量热力图(HeatMap)
这篇博文主要实现用Pyhon,Matplotlib/Basemap绘制中国地图,主要是各省份行政图(轮廓图),地形图和人口分布图,其中人口分布可以嵌入到上述图形中。
参考链接:
(1)https://www.zhihu.com/question/49669755
(2)http://basemaptutorial.readthedocs.io/en/latest/backgrounds.html#fillcontinents
1、数据准备:
(1)到http://www.gadm.org/download 下载中国shapefile格式的资料,有读者反应进去不了该网站,可以在我的github下下载https://github.com/ouening/python-code/tree/master/resources下载后的文件名为CHN_adm_shp.zip
,解压后如图:
主要用到的文件是CHN_adm1.shp
,另外CHM_adm1.csv
可以用notepad打开查看一下文件内容
(2)2015Cities-CHINA.xlsx ,包含中国各城市的经纬度,自己网上搜索整理,数据可能过时了,和维基百科查到的数据不太对,但是拿来写个小程序还是足够的)
xlsx可以用excel打开查看一下:
在python中可以导入pandas模块,使用read_excel()
函数方便读取文件
basemap绘图常用函数:
basemap地图背景设置函数:
更多详细的函数介绍请参考
http://matplotlib.org/basemap/users/geography.html
###程序1,各省份轮廓图
import timestart = time.clock()from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
fig = plt.figure()
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])map = Basemap(llcrnrlon=80.33, llcrnrlat=3.01, urcrnrlon=138.16, urcrnrlat=56.123,resolution='h', projection='cass', lat_0 = 42.5,lon_0=120,ax=ax1)shp_info = map.readshapefile("D:\\GoogleDownload\\CHN_adm_shp\\CHN_adm1",'states',drawbounds=True) # CHN_adm1的数据是中国各省区域for info, shp in zip(map.states_info, map.states):proid = info['NAME_1'] # 可以用notepad打开CHN_adm1.csv文件,可以知道'NAME_1'代表各省的名称if proid == 'Guangdong':poly = Polygon(shp,facecolor='g',edgecolor='c', lw=3) # 绘制广东省区域ax1.add_patch(poly)map.shadedrelief() # 绘制阴暗的浮雕图map.drawcoastlines()
end=time.clock()
print(end-start)
plt.show()
###程序2,地形图
import timestart = time.clock()
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import pandas as pd
import numpy as np
posi=pd.read_excel("D:\\Files\\datasets\\2015Cities-CHINA.xlsx") #读取中国城市数据
lat = np.array(posi["lat"][0:120]) # 获取维度之维度值
lon = np.array(posi["lon"][0:120]) # 获取经度值
pop = np.array(posi["pop"][0:120],dtype=float)
size=(pop/np.max(pop))*100 map = Basemap(llcrnrlon=80.33, llcrnrlat=3.01, urcrnrlon=138.16, urcrnrlat=56.123,resolution='h', projection='cass', lat_0 = 42.5,lon_0=120)map.readshapefile("D:\\GoogleDownload\\CHN_adm_shp\\CHN_adm1",'states',drawbounds=True)map.etopo() # 绘制地形图,浮雕样式map.drawcoastlines()x,y = map(lon[2],lat[2]) # 北京市坐标,经纬度坐标转换为该map的坐标a,b = map(lon,lat)# map.scatter(a,b,s=size) # 取消注释此行即可获得中国各地区人口分布示意图map.scatter(x,y,s=200,marker='*',facecolors='r',edgecolors='r') # 绘制首都end=time.clock()print(end-start)plt.show()
###程序3,人口分布图
import urllib
import numpy as np
import matplotlib
matplotlib.rcParams['toolbar'] = 'None'
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.animation import FuncAnimation
import pandas as pd
import seaborn as sns# posi=pd.read_csv("D:\\Files\\datasets\\CitiesLatLon_China.csv")posi=pd.read_excel("D:\\Files\\datasets\\2015Cities-CHINA.xlsx")lat = np.array(posi["lat"][0:120]) # 获取维度之维度值
lon = np.array(posi["lon"][0:120]) # 获取经度值
pop = np.array(posi["pop"][0:120],dtype=float) # 获取人口数,转化为numpy浮点型
gdp = np.array(posi["GDP"][0:120],dtype=float) # 获取人口数,转化为numpy浮点型size=(pop/np.max(pop))*100 # 绘制散点图时图形的大小,如果之前pop不转换为浮点型会没有大小不一的效果# size=(gdp/np.max(gdp))*100 # 绘制散点图时图形的大小,如果之前pop不转换为浮点型会没有大小不一的效果map = Basemap(projection='stere', lat_0=35, lon_0=110,llcrnrlon=82.33, llcrnrlat=3.01, urcrnrlon=138.16, urcrnrlat=53.123,resolution='l',area_thresh=10000,rsphere=6371200.)map.drawcoastlines()
map.drawcountries()
map.drawcounties()
map.readshapefile("D:\\GoogleDownload\\CHN_adm_shp\\CHN_adm1",'states',drawbounds=True)
map.drawmapboundary()parallels = np.arange(0.,90,10.)
map.drawparallels(parallels,labels=[1,0,0,0],fontsize=10) # 绘制纬线meridians = np.arange(80.,140.,10.)
map.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10) # 绘制经线x,y = map(lon,lat)# map.scatter(x,y,edgecolors='r',facecolors='r',marker='*',s=320)map.scatter(x,y,s=size)plt.title("Population Distribution in China")
plt.show()
Basemap绘制中国地图相关推荐
- Python之使用Basemap绘制中国地图
目录 1.下载Basemap 2.安装Basemap 3.参数说明 4.地图包下载及导入 5.颜色填充 1.下载Basemap 本人电脑win7,64位操作系统,使用Jupyter 和 Python3 ...
- 使用raphael.js绘制中国地图
最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作.在本文中,我给大 ...
- qcustomplot绘制热力图瀑布图_使用REmap绘制中国地图
上次我们介绍了使用ggplot2绘制中国热力地图,需要温习的同学可以点击以下链接 使用ggplot2绘制中国地图 .在使用ggplot2绘制的时候,需要进行数据处理的步骤比较多,今天我们介绍一个新的 ...
- Ant Design Charts绘制中国地图并动态添加标记点
绘制中国地图并动态添加标记点,在这里使用的是antd charts绘制,需要求只显示中国地图,并且跟踪物流信息 使用组件地址: 图表 - Plot | Ant Design Charts 这里的引入方 ...
- [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区
最近发生了很多事情,去到了一个新环境学习.但是不论在哪里,我都需要不忘初心,坚持做自己喜欢的事情,在CSDN写博客.教学.爱娜.生活等等. 这篇文章主要是通过Echarts可视化介绍入 ...
- 【Python 实战基础】 如何绘制中国地图展示省份GDP数据
目录 一.实战场景 二.主要知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 循环遍历 三.菜鸟实战 1.创建 python 文件 2.运行结果 一.实战场景 实战场景: 如何绘制中国地图展 ...
- echarts 绘制中国地图(中英文转换)
echarts 绘制中国地图 1.引入echarts npm install echarts import echarts from 'echarts' 2.引入地图china.js(网上自行搜索下载 ...
- vue中使用echarts绘制中国地图
首先需要一个绘制中国地图的json文件(资源还在审核,审核过后会重新贴上来) 1.首先引入echarts和json文件,在需要的地方引即可 import echarts from 'echarts'; ...
- vue使用echarts绘制中国地图
vue使用echarts绘制中国地图 //myMap.vue <div id="geo"></div>//china.js下载地址 https://down ...
最新文章
- 学习如何用平板电脑设计和绘制自己的动漫角色
- libevent -简单的异步IO介绍
- 做一个幸福的“生活家”:谈《心欢喜,灵快乐》
- java 根据类名示例化类_Java即时类| EpochSecond()方法的示例
- PyCharm2019.1.1安装(Ubuntu16.04)
- SQL之COLLATE 子句 排序规则
- Python学习笔记之类(四)
- struts框架搭建及validator示例
- Smart Client Software Factory 初试
- 【软件测试】白盒测试的条件覆盖标准强于判定覆盖(错)
- 大数据有哪些基本特征
- 指标公式c语言源码下载,通达信超级全系列指标公式
- pycharm汉化包下载
- 如何破解域管理员密码
- 华为mate20 pro 专业模式拍照
- 【语义分割】2022-HRViT CVPR
- 【目录】全志F1C100S/F1C200S学习笔记
- php json 原理,基于JSONP原理详解
- AI全栈设计师的能力公式,及如何用AI来增强设计能力
- 普歌—云言团队——最新Git的相关配置,集成IDEA使用
热门文章
- net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting head
- 封神演义人物实力分级点评
- 按键android手机排行榜,【直板全键盘手机推荐】直板键盘手机排行榜
- Es6类数组length属性和扩展方法,find(),findIndex(),fill(),copyWithin(),entries()...用法
- 曝大S汪小菲婚宴初定汪小菲三亚顶级酒店
- 小猿圈python视频_小猿圈分享学习Python的最佳方式
- 梦幻西游 WSG 文件格式分析
- linux ps命令 详细介绍
- Kinect安装与使用(一)
- Hotkeycontrol录制宏