天天看點

【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還能使用
  • 使用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結合起來使用

如果你認為對你有用,或者想要與我有更多交流,關注我的微信公衆号支援我一下吧!~

【Python】ogr使用小記如果你認為對你有用,或者想要與我有更多交流,關注我的微信公衆号支援我一下吧!~