【GeoPandas】主要包含两个数据结构,即GeoSeries和GeoDataFrame
空间数据主要由两部分组成,属性数据和空间属性。属性数据即是shp中的属性表,空间属性即为shp中每个单元的几何形状。

  1. 【GeoSeries】用GeoSeries表示空间属性(即geometry,是wkt格式的)
  2. 【GeoDataFrame】可以把GeoDataFrame理解为shp的属性表,但比shp的属性表多一列,这一列就是空间数据(即GeoSeries)


image.png

GeoSeries管理空间属性

【GeoSeries】GeoSeries只管理空间属性,不包含GeoDataFrame中的其他属性。主要包括:点/多点、线/多线、面/多面

(1)方法和属性

  1. GeoSeries.area #面积
  2. GeoSeries.bounds #边界:minx, miny, maxx, maxy
  3. GeoSeries.length #几何的长度
  4. GeoSeries.geom_type #几何类型
  5. GeoSeries.to_crs(src) #改变坐标系
  6. GeoSeries.plot() #制图
  7. GeoSeries.distance(other) #最小距离
  8. GeoSeries.centroid() #质心
  9. GeoSeries.representative_point() #返回在每个几何内部的点,但不返回重心
  10. GeoSeries.exterior #返回线环(LinearRings)的一个GeoSeries,它表示GeoSeries中每个多边形的外边界
  11. GeoSeries.interior #返回内部环序列的一个GeoSeries,它表示GeoSeries中每个多边形的内部环

(2)谓词

  1. GeoSeries.is_empty #返回一个布尔型的Series,对于一个空的几何图形,该值就为True
  2. GeoSeries.is_ring #返回一个布尔型的Series,对于闭合的要素,该值就为True
  3. GeoSeries.is_simple #返回一个布尔型的Series,如果几何体自身不交叉,该值就为True(仅对线串--LineStrings和线环--LineRings有意义)
  4. GeoSeries.is_valid #返回一个布尔型的Series,如果几何体是有效的,该值就为True
  5. GeoSeries.almost_equals(other[,decimal=6]) #返回一个布尔型的Series对象,如果在指定的小数位精度下,每个对象所有点与其他对象大致相等,该值就为True(可见equals())
  6. GeoSeries.contains(other) #返回一个布尔型的Series,如果每个对象的内部包含其他对象的内部和边界,并且它们的边界不相接,该值为True
  7. GeoSeries.crosses(other) #返回一个布尔型的Series,如果每个对象的内部与其他对象的内部相交但不包含,并且相交的部分小于这两个相交对象自身,该值为True
  8. GeoSeries.disjoint(other) #返回一个布尔型的Series,如果每个对象的边界和内部与其他对象的边界和内部都不相交,该值为True
  9. GeoSeries.equals(other) #返回一个布尔型的Series,如果几何对象集合的边界,内部,外部都与其他几何对象一样,该值为True。
  10. GeoSeries.intersects(other) #返回一个布尔型的Series,如果每个对象的边界和内部以其它任何形式与其他对象相交,该值为True。
  11. GeoSeries.touches(other) #返回一个布尔型的Series,如果对象与其他对象至少有一个点相同,且它们的内部任何部分都不相交,该值为True。
  12. GeoSeries.within(other) #返回一个布尔型的Series, 如果每个对象的边界和内部只与其他对象的内部相交(不包括边界和外部),该值为True(与contains()方法相反)

(3)不常用

  1. GeoSeries.xticks(rotation = 90) #x刻度数值旋转90°

GeoDataFrame用表格形式组织地理数据

【GeoDataFrame】包含GeoSeries的表格数据结构

  1. world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres')) #打开geopandas内置数据库中的数据
  2. world.head() #查看数据结构
  3. world.plot() #制图
  4. world = world.rename(columns={'geometry': 'borders'}).set_geometry('borders')   #更改geometry列的名字
  5. world['centroid_column'] = world.centroid # 把质点赋给world的列centroid_column中
  6. world = world.set_geometry('centroid_column') # 把几何列设为centroid_column