数据结构论坛

首页 » 分类 » 分类 » Python空间数据计算3GeoPan
TUhjnbcbe - 2021/6/26 15:19:00
北京扁平疣医院哪最好 http://pf.39.net/bdfyy/zjdy/

前文再续,书接上一回。

我们简单介绍一下geopandas的数据结构。

1、DataFrame与Series

geopandas做为Pandas的一个扩展,它的数据结构肯定是依附与pandas的,而Pandas的核心数据结构就是DataFrame与Series。

这个两个概念,如果属性pandas的同学,自然不必多说,我这里仅做一个简单介绍,详细的内容大家自行去网上了解学习:

首先,我们可以用一个二维矩阵,或者一个二维表格,来进行类比,DataFrame就是一个二维矩阵或者二维表格:

这个二维表里面的每一列,就可以看成是一个Series。

在一个表格里面,如果我们要范围其中某一行,是如何访问的呢?

(思考题,领导要的第三行数据,到底是CC还是DD?)

(答:普通人是CC,码农是DD,因为码农是从0开始数数的[手动狗头,请勿当真])。

码农参加拓展真实情况:

一般来说,每一行都会有一个标识,这个标识需要是在整个表中是独一无二的,这样在指定的时候,才不会出现歧义,在pandas的DataFrame里面,这个东西叫做index(索引),如下所示:

默认的索引自然就是数字行号,而DataFrame可以自由设置任何一种内容为index,这里就不做演示了,大家可以去查看pandas相关教程文档。

前面说到这个DataFrame的每一列都是一个Series,对应在Python的数据结构里面,一个Series,就是一个带有index的list:

list类似于Java里面的集合,它可以存放任意类型的数据,用下标进行访问,比如一个人的信息,组成成一个list,比如:

这个list里面,可以是数字、字符串、图片对象、文件对象、视频对象、还可以包含另外一个list……

那么Series也是一样,本身就是一个一维的list,可以存放任意对象,不过一般来说,每个Series的类型都是一样的。

结合index之后,Series就可以表示为Python里面的字典结构:{index:[]}

如下所示:

{"name":[……]}

{"age":[……]}

{"sex":[……]}

geopandas做为pandas的扩展库,就在pandas的DataFrame上增加了一个geometry字段:

同时把DataFrame派生为GeoDataFrame;把Series派生为GeoSeries,继承了DataFrame和Series的所有特性和能力。

pandas上面具备的所有DataFrame和Series的能力,比如查询、转换、聚合、切片等等,在GeoDataFrame和GeoSeries都一应俱全,属性上面的操作,大家自行查阅pandas的相关文档即可,这里就不做赘述了。

2、GeoDataFrame和GeoSeries里面的geometry对象。

如果我们直接show出geometry的内容,是这个样子的:

熟悉GIS的同学,肯定对这种格式很熟悉,这种格式称为wkt

WKT(Well-knowntext)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。wkt是一种ascii码描述的文本标记语言,可以用明文表示空间对象,所以在PostGIS里面,也默认采用这种格式来进行显示。但是如果我们直接显示GeoDataFrame的geometry对象:里面的类型个geometry,也就是说,这是一个对象,而不是一个文本字符串。在GeoDataFrame里面,记录空间对象,用的是shapely里面的对象结构shapely库继承自GEOS以及JTS的空间描述,是一个用于在Python中进行地理空间处理的库,主要定义了一系列操作和分析笛卡尔坐标系中的几何对象。(没有三维能力)我们通过help简单扫一眼,就可以看见这个类了:下面我们可以通过两个例子,来看看如何自定义空间对象:首先对点的定义,我们可以直接用过shapely.geometry包下面的Point类进行初始化。我们可以看见,初始化之后,得到的是一个shapely.geometry.point.Point对象。如果是面和线,我们也可以通过wkt字符串来初始化:

GeoDataFrame和GeoSeries,除了完全具备pandas的能力以外,还需要一些特殊的空间操作的能力。下面演示一个小案例:

如果裸装绘制行政区划,虽然也能看,但是效果也就这样了,在制图表达的时候,我们可以在外面加一个边界背景——最简单的就是做一个发光的效果:

在geopandas里面,也就是几行代码的事情,如下所示:

打完收工。

godxia

1
查看完整版本: Python空间数据计算3GeoPan