其他
geopandas,用python画地图原来这么简单!
pandas应该是大家非常熟悉的Python第三方库,其主要用于数据整理和分析,这次来介绍pandas的一个近亲-geopandas
geopandas是用来处理地理空间数据的python第三方库,它是在pandas的基础上建立的,完美地融合了pandas的数据类型,并且提供了操作地理空间数据的高级接口,使得在python中进行GIS操作变成可能。
先看个示例,我们在python中显示世界地图
import pandas as pd
import geopandas
import matplotlib.pyplot as plt
%matplotlib inline
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world.plot()
plt.show()
当然除了上面的平面效果,你还可以做出这样的:
还可以给地图着色:
下面言归正传,正式讲解geopandas是如何工作的
前面说过,geopandas沿用了pandas的数据类型,所以geopandas中也有两种数据类型:
GeoSeries GeoDataFrame
Shapefile文件用于描述几何体对象:点,折线与多边形。例如,Shapefile文件可以存储井、河流、湖泊等空间对象的几何位置。除了几何位置,shp文件也可以存储这些空间对象的属性,例如一条河流的名字,一个城市的温度等等。
GeoSeries对应Series,只有一列,里面的每个元素都是代表地理空间图形,有可能是点、线或者面。 GeoDataFrame是包含GeoSeries的数据结构,它是多列的,但其中一列必然是GeoSeries列,这个GeoSeries列被称作GeoDataFrame中的几何列。 GeoDataFrame的其他列,可以是几何图形的名字、属性等信息,比如国家的人口、面积、GDP等等。
import pandas as pdimport geopandasimport matplotlib.pyplot as plt%matplotlib inlineworld = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))world.plot()plt.show()
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
你也可以用read_file方法读取自己的shapefile文件
import pandas as pd
import geopandas
import matplotlib.pyplot as plt
%matplotlib inline
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
# 新增一列,每个国家的中心点
world['centroid_column'] = world.centroid
# 将新增列设置为几何列
world = world.set_geometry('centroid_column')
world.plot()
plt.show()
world.to_file("countries.shp")
world.to_file("countries.geojson", driver='GeoJSON')world.to_file("package.gpkg", layer='countries', driver="GPKG")
import pandas as pd
import geopandas
import matplotlib.pyplot as plt
%matplotlib inline
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
fig, ax = plt.subplots(1, 1)
world.plot(column= 'pop_est', ax=ax, legend=True)
plt.show()
world.plot(column='gdp_per_cap', cmap='OrRd');
world.plot(column='gdp_per_cap', cmap='OrRd', scheme='quantiles');
END
往期精选
numba,让python飞起来!
100行python代码爬取豆瓣《哪吒》短评
Python大数据分析
data creat value
长按二维码关注