GeoPandas库使用入门教程
文章目录
前言
Geopandas库扩展了Pandas的内容,使Python可以对几何类型进行空间操作,其大部分用法同Pandas一致。在教程开始之前,先导入最基本的库
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
使用步骤
1.文件导入\导出与数据结构
使用read_file()可以导入任何的空间矢量数据,主要有shp和GeoJson两种。具体用法为geopandas.read_file(filename, bbox=None, mask=None, rows=None, **kwargs)
- filename 文件路径
- bbox 按照给定的条件筛选几何要素,仅加载与边框相交的数据
- mask 过滤与给定条件相交要素
- rows 要加载的行数
- ignore_geometry = Ture 返回dataframe
- ignore_fields [],选择不加载这几列
下面为导入Shp文件,注意如果文件中有中文字符,则需要指定编码方式为‘gbk’,否则会乱码
stop = gpd.read_file(r'D:\ArcGis\2021_3\时间可达性2021\whsta.shp',encoding = 'gbk')
stop.head(5)

对同样的数据使用Pandas导入
df = pd.read_excel(r'武汉市地铁站点_2021_3(集合).xlsx')
df.head()

对比两个数据,可以看到GeoDataFrame数据多了一个几何列(geometry),记录数据的属性和坐标信息,几何列可以有多列,而活动几何(active geometry)列只能有一列,如果有关于对空间的方法,则自动作用到 active geometry列。如果想要改变活动几何列,则使用GeoDataFrame.set_geometry()方法
使用下面的方法可以将dataframe数据转换为Geodataframe数据
point = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.GCJ02_loc, df.GCJ02_lat))
options函数可以设置几何列显示的小数点位数,默认5位
gpd.options.display_precision = 5
数据导出
使用GeoDataFrame.to_file()方法可以导出为不多不同的格式,还可以使用GeoDataFrame.to_postgis方法将数据上传到PostGis数据库,元组或列表可以保存在Geopandas中,然而保存为Geopackage或者shp时可能报错。
world = world.set_geometry('borders')
#保存为shp形状文件
world['borders'].to_file(r'D:\Python\Geopython\Geopandas\世界地图\世界地图.shp')
#保存为geojson形状文件
world['borders'].to_file(r'世界地图.geojson', driver='GeoJSON')
2.绘制地图
基本功能
GeoPandas绘制地图使用matplotlib的接口,类似于DataFrame的plot()方法,其中的任何选项都可以在这里传递
#导入世界地图数据和城市数据
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
cities = gpd.read_file(gpd.datasets.get_path('naturalearth_cities'))
#画图
world.plot()


分区统计图
绘制分区统计图,根据关联的值确定形状的颜色,只需要将column设定为指定变量的列,
world = world[(world.pop_est>0) & (world.name!="Antarctica")]#筛选出人口大于0和非南极洲的地区
world['gdp_per_cap'] = world.gdp_md_est / world.pop_est#计算各个地区的人均gdp.dataframe.column返回对应列的series
world.plot(column='gdp_per_cap')#根据人均gdp绘制地图,区别颜色

制作图例
创建图例,使用面向对象的方法
fig, ax = plt.subplots(1, 1)
world.plot(column='pop_est', ax=ax, legend=True)#其中图例为颜色条

上面的图例并不好看,因此需要对图例进行美化,这段代码没看太懂,类似于fig与ax
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig, ax = plt.subplots(1, 1)
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.1)
world.plot(column='pop_est', ax=ax, legend=True, cax=cax)

图片果然变得好看了呢,Sci风!
还可以将颜色条放在下面,并且设置颜色条的名称
fig, ax = plt.subplots(1, 1)
world.plot(column='pop_es

本文详细介绍了如何使用GeoPandas库进行文件导入导出、数据结构处理、地图绘制、投影管理、几何操作、集合操作以及聚合与连接。通过实例演示,学习者能掌握关键技巧如添加图例、修改颜色和管理CRS。

1540

被折叠的 条评论
为什么被折叠?



