基础操作
读、写、看
# 读文件gdf = geopandas.GeoDataFrame.from_file("shp文件路径", encoding='gb18030')gdf = geopandas.read_file("package.gpkg", layer='countries')gdf = geopandas.read_file("shp文件路径")# 显示gdf.head() #输出属性表gdf.plot() #画gdf.show()# 保存gdf.to_file("countries.geojson", driver='GeoJSON')gdf.to_file("countries.shp")
遍历
for i in range(0, len(gdf) ): geo = gdf.geometry[i] #获取空间属性,即GeoSeries name = gdf.NAME[i] #获得属性数据,即字段
索引
# 可用:.loc .iloc .cs索引方法
其他
# 投影转换tmp_gdf = gdf.to_crs(crs)new_gdf = gdf1.to_crs(gdf2.crs) #gdf1和gdf2统一坐标系# 求面积df = df.to_crs({'init': 'epsg:32650'}) #转成投影坐标后,才能算出正确的面积(示例,转为墨卡托投影)df['area'] = df.apply(lambda row: row.geometry.area, axis=1)# 合并两个数据new_df = df1.append(df2)
简单操作实例
简单创造、构造空间属性、添加其他属性
from shapely.geometry import Polygon;from geopandas import GeoSeries,GeoDataFrame# 创造Polygonp1 = Polygon([(0, 0), (1, 0), (1, 1)])p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])# 构造空间属性,即GeoSeriesg = GeoSeries([p1, p2, p3])g.show() #显示g.buffer(0.5) #缓冲区g.boundary #边界g.centroid #质心# 添加属性gdf = GeoDataFrame({'属性名' : [1, 2, ..]}, geometry=g)