defgetAvgAreaByAttribute(ds, clause):
lyr_name = ds.GetLayer(0).GetName()
sql_query = f'''SELECT AVG(OGR_GEOM_AREA) as avg_area
FROM {lyr_name}
WHERE {clause}'''
res_lyr = ds.ExecuteSQL(sql_query)
avg_area = res_lyr[0].GetField('avg_area')
ds.ReleaseResultSet(res_lyr)# 清除查询结果return avg_area
关于SetSpatialAttribute()这个函数:只要与filter geometry相交的geometries都会被返回。(This function set the geometry to be used as a spatial filter when fetching features via the OGR_L_GetNextFeature() function. Only features that geometrically intersect the filter geometry will be returned.)