Python-GeoPandas地图绘制、专题地图绘制

GeoPandas是一个开源项目,Pandas是Python的一个结构化数据分析的利器,GeoPandas扩展了pandas使用的数据类型,允许对几何类型进行空间操作,其DataFrame结构相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,其目标是使得在python中操作地理数据更方便。

  1. 矢量数据来源
    可以参照我的另一篇文章,将阿里云上GeoJSON的数据利用Python保存到本地磁盘上。
  • 数据地址:

http://datav.aliyun.com/tools/atlas/#&lat=31.80289258670676&lng=104.2822265625&zoom=4

  1. 专题地图资料搜集
    可以利用统计年鉴上的数据或是其他数据制成CSV或是Excel文件,通过矢量数据的一个公共字段来连接。例如我的数据(公共字段为 name):
矢量数据属性表
专题地图数据      来源:2019年河南省统计年鉴

3.1 地图绘制

  • 效果预览
  • 实现代码
# -*- coding: utf-8 -*-"""
@File    : provinceMapMake.py
@Author  : fungis@163.com
@Time    : 2020/04/20 16:49
@notice  : 地图颜色(https://matplotlib.org/tutorials/colors/colormaps.html)
"""import geopandas as gpd
import matplotlib.pyplot as plt# 输入图名
Map_name = '河南省行政区划'
# 加载数据-矢量数据的位置
regions = gpd.GeoDataFrame.from_file('./shp/henanProvince/河南省.shp', encoding='utf-8')
# 加载数据-读取矢量数据的属性表
data = gpd.read_file('./shp/henanProvince/河南省.dbf', encoding='utf-8')
# 复制一份该表的数据
reg02 = data.copy()
# # 专题地图制图
reg02['coords'] = reg02['geometry'].apply(lambda x: x.representative_point().coords[0])reg02.plot(figsize=(8, 6),  # 图像大小column='name',  # 分级设色字段# scheme='quantiles',  # MapClassify-分级类型legend=False,  # 图例cmap='Pastel1_r',  # 渐变色带的名称#Set2edgecolor='k')  # 边框颜色
# 地图标注
for n, i in enumerate(reg02['coords']):plt.text(i[0] - 0.2, i[1], reg02['name'][n], fontsize=8, horizontalalignment="left")  # 标注位置X,Y,标注内容plt.title('Python-{}图'.format(Map_name), fontsize=18, fontweight='bold')
plt.grid(True, alpha=0.5)  # 显示网格,透明度为50%
# plt.show()
plt.savefig('./images/{}.png'.format(Map_name), dpi=300)

3.2专题分级设色图

  • 效果预览
数据来源:2019年河南省统计年鉴

- 实现代码

# -*- coding: utf-8 -*-"""
@File    : 河南省2018年经济发展图.py
@Author  : fungis@163.com
@Time    : 2020/04/20 11:29
@notice  : 参照https://www.cnblogs.com/feffery/p/12381322.html
"""import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt# 加载数据-矢量数据的位置
regions = gpd.GeoDataFrame.from_file('./shp/henanProvince/河南省.shp', encoding='utf-8')# 加载已搜集的excel数据,如果是csv文件用pd.read_csv()方法
data = pd.read_excel('./data-use/henan-data.xlsx')# 处理数据格式(Excel中的name字段中有空格,消除空格)
data['area_name'] = data['name'].str.replace(' ', '')# 连接矢量数据属性表与Excel表格
reg = pd.merge(regions, data, left_on='name', right_on='area_name')
# 复制整张表
reg02 = reg.copy()
# # 专题地图制图
reg02['coords'] = reg02['geometry'].apply(lambda x: x.representative_point().coords[0])reg02.plot(figsize=(8, 6),  # 图像大小column='avg_gdp_2018',  # 分级设色字段scheme='quantiles',  # MapClassify-分级类型legend=True,  # 图例legend_kwds={"loc": "lower left"},cmap='Reds',  # 渐变色带的名称edgecolor='k')  # 边框颜色
# 地图标注
for n, i in enumerate(reg02['coords']):plt.text(i[0] - 0.13, i[1], reg02['area_name'][n])  # 标注位置X,Y,标注内容plt.title('2018年河南省各地级市人均GDP(单位:元)')
plt.grid(True, alpha=0.5)  # 显示网格,透明度为50%
# plt.show()plt.savefig('./images/河南省2018年各地级市GDP.png', dpi=300)
  • 效果预览
数据来源:2019年河南省统计年鉴
  • 实现代码
# -*- coding: utf-8 -*-"""
@File    : 经济发展组合图.py
@Author  : fungis@163.com
@Time    : 2020/04/20 11:29
@notice  :
"""
'''
地图颜色(https://matplotlib.org/tutorials/colors/colormaps.html)
cmaps['Sequential'] = ['Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds','YlOrBr', 'YlOrRd', 'OrRd', 'PuRd', 'RdPu', 'BuPu','GnBu', 'PuBu', 'YlGnBu', 'PuBuGn', 'BuGn', 'YlGn']
'''import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt# 加载数据-矢量数据的位置
regions = gpd.GeoDataFrame.from_file('./shp/henanProvince/河南省.shp', encoding='utf-8')# 加载已搜集的excel数据,如果是csv文件用pd.read_csv()方法
data = pd.read_excel('./data-use/henan-data.xlsx')
# 处理数据格式
data['area_name'] = data['name'].str.replace(' ', '')
# 计算整合数据:人均产值= 产业产值/区域人均
data['data_one'] = data['第一产业'] / data[2018] * 10000
data['data_two'] = data['第二产业'] / data[2018] * 10000
data['data_three'] = data['第三产业'] / data[2018] * 10000
#表格链接-连接矢量数据属性表与Excel表格
reg = pd.merge(regions, data, left_on='name', right_on='area_name')
reg03 = reg.copy()
# 列表 第一个是分级设色的字段,第二个是图名
data_plot = [('avg_gdp_2018', '2018年河南省各市人均GDP(单位:元)'),('data_one', '2018年河南省各市第一产业人均产值(单位:元)'),('data_two', '2018年河南省各市第二产业人均产值(单位:元)'),('data_three', '2018年河南省各市第三产业人均产值(单位:元)')]#图纸大小设置
plt.figure(figsize=(16, 14))
for m, cal in enumerate(data_plot):reg03['coords'] = reg03['geometry'].apply(lambda x: x.representative_point().coords[0])reg03.plot(ax=plt.subplot(2, 2, m + 1),column=cal[0],  # 分级设色字段scheme='Quantiles',  # ['Equal_interval'|'Quantiles'|'Fisher_Jenks']legend=True,#是否显示图例legend_kwds={"loc": "lower left"},#图例的位置cmap='Pastel1',  # 色带的选择edgecolor='k')for n, i in enumerate(reg03['coords']):plt.text(i[0] - 0.13, i[1], reg03['area_name'][n])plt.title(cal[1])plt.grid(True, alpha=0.5)
plt.savefig('./images/河南省2018年经济组合拼接图__Pastel1_Quantiles.png', dpi=300)
  1. 结尾
    喜欢的朋友们可以点个关注,后续将持续更新,精彩无限^ - ^

Python-GeoPandas地图、专题地图绘制相关推荐

  1. python中画地图map的用法_使用basemap和python在地图中绘制海洋

    您需要在您的nc_vars数据集中使用^{} 在contourf之前,插入以下内容nc_new = maskoceans(lons,lats,nc_vars[len(tmax)-1,:,:]) 然后用 ...

  2. 【Python】用pyecharts绘制我国人口分布和迁移地图

    ​  一直很好奇我国人口分布和迁移情况,所以想用Python分析一下.由于我国省份较多,把数据放在地图上展示会更加清晰,故本文用Python中的pyecharts库进行人口分布和迁移绘图展示.    ...

  3. 利用Python的folium包绘制城市道路图!专业地图!

    写在前面 很长一段时间内,我都在研究在线地图的开发者文档,百度地图和高德地图的开发者中心提供了丰富的在线地图服务,虽然有一定的权限限制,但不得不说,还是给我的科研工作提供了特别方便的工具,在博客前面我 ...

  4. python气象数据可视化学习笔记6——利用python地图库cnmaps绘制地图填色图并白化

    文章目录 1. 效果图 2. cnmaps简介及安装 2.1 写在前面 2.2 cnmaps简介和安装 3. 导入库 4. 定义绘图函数 4.1 使用get_adm_maps返回地图边界 4.2 ax ...

  5. Python:地理地图folium标记物icon,圆圈,圆形,热力图,经纬度点之间的线绘制

    python:地理地图folium标记物icon,圆圈,圆形,热力图,经纬度点之间的线绘制 import webbrowser as wb import folium from folium.plug ...

  6. python在地图上画路线_python在openstreetmap地图上绘制路线图的实现

    python在openstreetmap地图上绘制路线图的实现 发布时间:2020-08-28 23:14:52 来源:脚本之家 阅读:111 作者:AAAAAAAKing 利用python进行经纬度 ...

  7. 【定制项目】【M14 监测预警平台】百度地图区域绘制(时间轴)/柱状图/仪表图 - 关键技术 python flask + echarts

    一.项目需求 项目名称:[某监测预警平台]. 项目需求:气候数据:雨量,温湿度,PM,雷达回波,雷电预报等展示到可视化大屏. 项目工期:10个工作日. 二.项目架构 运行环境支持Windows,Lin ...

  8. python绘制彩色地震剖面_在地图上绘制饼图时“爆炸”楔形图(Python,matplotlib)...

    所以我成功地在地图上绘制了饼图作为标记轴向散射,但我遇到了一些问题,一些楔子"爆炸"出了饼图.我似乎在我的代码中找不到原因,也无法在网上找到解释.这段代码基于示例here,一位同事 ...

  9. 地图上绘制任意角度的椭圆_地图上的总椭圆

    地图上绘制任意角度的椭圆 或者,如何选择下班后去海滩的最佳方式 (Or, how to choose the best way to walk to the beach after work) It ...

  10. java echarts 散点图,echarts在地图上绘制散点图(任意点)

    项目需求:在省份地图上绘制散点图,散点位置不一定是哪个城市或哪个区县,即任意点 通过查询官网文档,找到一个与需求类似的Demo:https://www.echartsjs.com/gallery/ed ...

最新文章

  1. Lubuntu下小巧好用的Python编辑工具Geany
  2. TOMCAT的域名配置
  3. 《无线网络:理解和应对互联网环境下网络互连所带来的挑战》——第2章 无线生态系统 2.1无线标准化过程...
  4. python3.5.2使用教程_Python3.5.2-初级教程.docx
  5. nginx 上传 文件超时设置_nginx限制上传大小和超时时间设置说明/php限制上传大小...
  6. 如何在vue项目中使用sass(scss)
  7. c#学习总结(一)---Mr.Zhang
  8. MapReduce之RecordWriter理解
  9. 1亿中国人已被AI批改过作业
  10. 第一模块:开发基础 第1章 练习及作业
  11. 做数据分析的女孩子,职业发展在哪?数据分析枯燥吗?
  12. 单片机的直流电机调速控制系统
  13. Nginx跨域配置详解
  14. ecshop二次开发之电子票
  15. Axure下载安装汉化
  16. 国家信息中心副主任周民:加快形成网络安全的亮剑精神
  17. 7-24 猜数字游戏
  18. C#控件篇 - 图表控件chart - 添加辅助边界线条
  19. feifeicms 火车头文章采集 自动图片本地化
  20. 统计学:统计基本概念

热门文章

  1. 基于javaweb+jsp的房屋租赁管理系统(java+SSM+Layui+Maven+Mysql+Jsp)
  2. Origin: Piper diagram/Trilinear diagram (三线图)
  3. android自定义sidebar,Android仿微信通讯录列表侧边栏效果
  4. html嵌入word文档,网页中嵌入word文档和导出数据到word文档
  5. C语言 Mkl 矩阵乘法,MKL库矩阵乘法
  6. xUtils框架的介绍
  7. 2021年电工(初级)考试资料及电工(初级)考试技巧
  8. 计算机房精密空调术语,机房空调常用单位及计算公式
  9. leaflet 加载海量点位,点击marker 查看详情功能
  10. ubuntu freeradius mysql_初试freeradius