GeoPandas库入门教程

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

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()

在这里插入图片描述
World数据的属性

分区统计图

绘制分区统计图,根据关联的值确定形状的颜色,只需要将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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值