基础操作

读、写、看

  1. # 读文件
  2. gdf = geopandas.GeoDataFrame.from_file("shp文件路径", encoding='gb18030')
  3. gdf = geopandas.read_file("package.gpkg", layer='countries')
  4. gdf = geopandas.read_file("shp文件路径")
  5. # 显示
  6. gdf.head() #输出属性表
  7. gdf.plot() #画
  8. gdf.show()
  9. # 保存
  10. gdf.to_file("countries.geojson", driver='GeoJSON')
  11. gdf.to_file("countries.shp")

遍历

  1. for i in range(0, len(gdf) ):
  2. geo = gdf.geometry[i] #获取空间属性,即GeoSeries
  3. name = gdf.NAME[i] #获得属性数据,即字段

索引

  1. # 可用:.loc .iloc .cs索引方法

其他

  1. # 投影转换
  2. tmp_gdf = gdf.to_crs(crs)
  3. new_gdf = gdf1.to_crs(gdf2.crs) #gdf1和gdf2统一坐标系
  4. # 求面积
  5. df = df.to_crs({'init': 'epsg:32650'}) #转成投影坐标后,才能算出正确的面积(示例,转为墨卡托投影)
  6. df['area'] = df.apply(lambda row: row.geometry.area, axis=1)
  7. # 合并两个数据
  8. new_df = df1.append(df2)

简单操作实例

简单创造、构造空间属性、添加其他属性

  1. from shapely.geometry
  2. import Polygon;
  3. from geopandas import GeoSeries,GeoDataFrame
  4. # 创造Polygon
  5. p1 = Polygon([(0, 0), (1, 0), (1, 1)])
  6. p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
  7. p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
  8. # 构造空间属性,即GeoSeries
  9. g = GeoSeries([p1, p2, p3])
  10. g.show() #显示
  11. g.buffer(0.5) #缓冲区
  12. g.boundary #边界
  13. g.centroid #质心
  14. # 添加属性
  15. gdf = GeoDataFrame({'属性名' : [1, 2, ..]}, geometry=g)