基础操作
读、写、看
# 读文件
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
# 创造Polygon
p1 = 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)])
# 构造空间属性,即GeoSeries
g = GeoSeries([p1, p2, p3])
g.show() #显示
g.buffer(0.5) #缓冲区
g.boundary #边界
g.centroid #质心
# 添加属性
gdf = GeoDataFrame({'属性名' : [1, 2, ..]}, geometry=g)