使用GeoPandas进行地理空间数据可视化

news/2024/11/28 16:28:42/

大家好,在当今数据驱动的世界中,将信息可视化到地图上可以提供有价值的见解,帮助有效地传达复杂的模式。GeoPandas是一个建立在pandasshapely之上的Python库,使用户能够通过将地理空间数据与各种变量合并来创建令人惊叹的地图。在本文中,我们将使用在印度卡纳塔克邦绘制变量地图的示例来探索GeoPandas的功能。最终,你将具备使用丰富数据叠加创建自己令人印象深刻的地图的知识。

GeoPandas是GeoPandas是一个强大的库,通过添加地理空间数据类型和操作扩展了pandas的功能。它允许我们处理空间数据,如shapefiles,并执行合并、连接和绘图等空间操作。

1.设置环境

在开始之前,请确保你已经在Python环境中安装了GeoPandas及其依赖项。你可以使用pipconda安装GeoPandas,包括pandasmatplotlib在内的依赖项将会自动安装。

pip install geopandas

2.获取Shapefile

在演示中,使用从KGIS网站获取的卡纳塔克邦州的shapefile,其包含空间要素的几何和属性数据。

3.加载和探索Shapefile 

使用GeoPandas,我们可以将卡纳塔克邦的shapefile加载到一个GeoDataFrame中,这实际上是一个带有几何列的pandas DataFrame。几何列存储了shapefile中每个要素的空间信息。

# 导入GeoPandas库
import geopandas as gpd# 加载shapefile
gdf_districts = gpd.read_file('District.shp')

 数据帧

4.绘制地图

使用GeoPandas,创建基本地图就像在GeoDataFrame上调用plot()函数一样简单。这将生成卡纳塔克邦边界的可视化表示。

# 绘制地图
gdf_districts.plot()

 5.将数据与地图合并

要将数据变量添加到我们的地图中,我们需要将GeoDataFrame与包含我们要可视化的变量的另一个DataFrame合并。这个合并过程通常使用一个共同的标识符,比如独特的地理代码或名称来完成。

# 数据将在地图中被可视化
import pandas as pd
df = pd.read_excel("dist_population.xlsx")

 人口数据

我们可以看到我们需要两个数据帧gdf_districtsdf,其中有一个共同的列,即区名,但在两个数据帧中,区名的命名方式不同,因此我们将在merge()函数中传递left_on='KGISDist_1'right_on='District Name'参数并执行left join

# 将shapefile与districts相关的varibale进行合并
# KGISDist_1是我们在gdf_districts数据框架中的地区名称
# District是我们在df数据框架中的地区名称
gdf_merged = gdf_districts.merge(df, left_on='KGISDist_1', right_on='District Name', how='left')

合并后,我们可以看到两个新列出现在末尾District NamePopulation

 合并后的数据帧

6.在地图上绘制变量数据

一旦数据合并,就可以利用GeoPandas的功能在地图上绘制变量。通过选择适当的颜色调色板、图例和标签,可以增强视觉表现效果,将地图变得更加易于阅读和理解,有效地传达有意义的信息。

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np# 定义颜色比例尺
cmap = plt.cm.get_cmap('YlOrRd')  # Red to green colormap (reversed)
cmap.set_bad('white')  # Set NaN values to white
normalize = colors.Normalize(vmin=gdf_merged['Population'].min(), vmax=gdf_merged['Population'].max())# 绘制地图
fig, ax = plt.subplots(figsize=(10, 10))
gdf_districts.plot(ax=ax, facecolor='none', edgecolor='black', linewidth=0.8)  # Plot the district outlines# 根据人口数量填充颜色
infes_values = gdf_merged['Population'].fillna(np.nanmin(gdf_merged['Population']) - 1)  # Replace NaN values with a value lower than min
gdf_districts.plot(ax=ax, column=infes_values, cmap=cmap, linewidth=0, legend=False)# 添加区域标签
for x, y, label in zip(gdf_merged.geometry.centroid.x, gdf_merged.geometry.centroid.y, gdf_merged['KGISDist_1']):ax.text(x, y, label, fontsize=8, ha='center', va='center')# 设置图表标题和轴标签
ax.set_title('Population in Karnataka Districts')
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')# 创建并添加颜色条
sm = plt.cm.ScalarMappable(cmap=cmap, norm=normalize)
sm.set_array([])
cbar = fig.colorbar(sm)
cbar.set_label('Population')# 显示图表
plt.show()

 如图所示人口众多的班加罗尔在地图上看起来像消失了。因为班加罗尔在gdf_districts中被分为“班加罗尔(城市)”和“班加罗尔(乡村)”。但当合并区域时,合并函数有点混乱,在另一个数据帧中找不到完美匹配,这就是矩阵中产生的故障。

GeoPandas提供了各种自定义选项,使你的地图在视觉上更加吸引人。你可以调整颜色、应用主题样式、添加标签和包含其他元素,以提高地图的美学效果和清晰度。

总结

GeoPandas是一个多功能的库,使用户能够通过将地理空间数据与各种变量合并创建令人惊叹的地图。在本文中,我们探讨了使用GeoPandas在印度卡纳塔克邦地图上绘制变量的过程。通过遵循这里概述的步骤,你可以释放地理空间数据可视化的力量,并轻松创建自己引人入胜的地图。所以,继续探索各种可能性,让你的地图通过数据讲述引人入胜的故事。

请记住,GeoPandas的潜力远远超过这个例子。它可以用于分析和可视化来自不同领域的空间数据,使你能够发现隐藏的模式、了解各种关系并根据基于位置的洞见做出明智的决策。


http://www.ppmy.cn/news/703746.html

相关文章

7月2日 32手册

SYS文件夹 1.位带操作 IO口的位操作实现 需要掌握位带的概念,才能实现对IO口的操作 2.向量表 3.Sys_Soft_Reset 函数 软件复位 4.Sys_Standby 函数 三种功耗模式 5.IO 设置函数 http://www.openedv.com/posts/list/32730.htm 引脚输入输出模式详解 6.中断管理函数 …

电脑功能测试

电脑能正常开机嘛 电脑上的键盘能正常使用吗 电脑上的接口能正常使用吗 电脑上的触摸板能正常使用吗 电脑是否能联网 电脑是否能下载软件 电脑界面是否清晰 电脑打字时和显示器上是否一致 电脑光标是否好用 电脑的材质是否有害 电脑的轻重是否合适,外观是否平整 电脑…

计算机安全小品剧本,5分钟安全五人小品剧本

坚持以人为本的发展理念,始终把人民生命安全放在首位,安全生产是不可逾越的红线。 关于安全生产的小品剧本《不容马虎》 时间:当代晚上(夜班时间); 地点:2#站所值班室; 人物描写:马厚咆,男,30岁…

USB-UART防止漏电设计

USB-UART防止漏电设计 USB接入导致的漏电问题 很多情况下,都会使用USB-UART的芯片将系统中的UART接口通过方便的USB线缆与电脑连接。 但有的时候,当设计的硬件系统还未上电开机的时候,USB线缆已经与PC连接并接入硬件系统时,就会…

为什么我电脑一开机显示器不亮要重启显示器才亮

电脑一开机显示器不亮要重启显示器才亮,原因如下: 1、有可能是显示器高压板,过压保护,造成灯管不增压。 2、也可能是二极管开环漏电造成,不能给显示器提供低电平,显示器处于保护状态是不给灯管加压的。 处理…

生活常识——电脑机箱带电,插电脑的手机,屏幕带电解决

文章目录 前言解决 前言 最近把机箱搬到桌子上来了,发现机箱外壳带电麻手,赶紧用测电笔测了下,感应笔亮红灯,机箱带电,插在机箱上的usb线带电,hdmi接口漏电,显示屏金属壳带电,把我吓…

鼠害对计算机硬件的影响,电脑机箱漏电对电脑硬件伤害大吗

电脑机箱漏电是指在电脑接通电源后,手碰到机箱会感到一“麻”,有“电击”的感觉,拿试电笔去测试,发现电笔里的氖气管通红,这就是机箱漏电现象。 机箱漏电是什么意思 机箱漏电会烧坏硬件吗? 机箱漏电 机箱漏…

计算机主机箱上是什么问题,电脑主机箱漏电原因是什么

大家知道人体接触的安全电压低于36度,即可认为对人体安全影响不大,而电脑内部所使用的电压均为小于12V,因此一般的电脑漏电不会对人体造成伤害,但经常碰到机箱有发麻的被电感觉,估计谁也受不了,如果想要解决…