【Python】ogr使用小记

  • 图层的属性筛选
    # 通过属性进行要素筛选
    lyr.SetAttributeFilter(field_name + "=" + str(val))

    # 还原图层值筛选前的状态
    lyr.SetAttributeFilter(None)
  • ogr中的geometry与shapely互相转换
test_poly_file = r"F:\Temp\temp_gis_data\testSplittingPolygon.shp"
ds = shp_driver.Open(test_poly_file, 0)
test_lyr = ds.GetLayer(0)
feature = test_lyr[0]
test_poly = loads(feature.geometry().ExportToWkt())
  • ogr对geometry使用clone方法,当feature被销毁以后该geometry还能使用
geo = feat.geometry().Clone()
  • 使用SQL语句查询地块的平均面积
def getAvgAreaByAttribute(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.)
  • 对于shapefile的datasource可以进行SQL查询,但是不支持CopyLayer方法。
  • ogr的Buffer方法要与SetSpatialAttribute结合起来使用

如果你认为对你有用,或者想要与我有更多交流,关注我的微信公众号支持我一下吧!~

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值