GDAL过滤器-属性空间过滤——Python地理数据处理学习分享

博客介绍了Python中数据筛选的方法。在属性过滤方面,可使用SetAttributeFilter()方法筛选数据并加载到图像上,填写过滤属性可自动过滤其他要素,填写None可取消选择。空间过滤上,GDAL具备空间过滤器,用SetSpatialFilterRect()输入四个坐标能选中方框内的Feature。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

属性过滤条件


        有时我们需要进行筛选数据并将其加载到图像上可以采取SetAttributeFilter()的方法。

# 导入模板
from osgeo import ogr
from ospybook.vectorplotter import VectorPlotter
import ospybook as pb
# 设置文件路径
doc=ogr.Open('D:\\Python_study\\osgeopy-data\\global')
lyr=doc.GetLayer('ne_50m_populated_places')
# 设置为非交互
vp=VectorPlotter(False)
# 筛选人口大于30万的地区并显示在地图上
lyr.SetAttributeFilter('MAX_POP10>300000')
vp.plot(lyr,'yo')
vp.draw()
# 从上向下寻找人口大于30万的地区并打印前10项
pb.print_attributes(lyr,10,["MAX_POP10"],geom=False)

       

        程序运行后可得到以上结果,我们可以看到一副过滤属性的地图和人口输出图。在程序过程中SetAttributeFilter()函数起了关键作用,函数内填写了过滤属性,程序会自动过滤掉其他属性的要素,随后打印地图或者显示属性时,只会输出选中的要素。

        当然,我们想要取消选择时,只需要在函数中填写None,则会去掉选择。

# 导入模板
from osgeo import ogr
from ospybook.vectorplotter import VectorPlotter
import ospybook as pb
# 设置文件路径
doc=ogr.Open('D:\\Python_study\\osgeopy-data\\global')
lyr=doc.GetLayer('ne_50m_populated_places')
# 设置为非交互
vp=VectorPlotter(False)
# 筛选人口大于30万的地区并显示在地图上
lyr.SetAttributeFilter('MAX_POP10>300000')
# 从上向下寻找人口大于30万的地区并打印前10项
pb.print_attributes(lyr,10,["MAX_POP10"],geom=False)
# 取消过滤属性后查询
print('过滤属性后:')
lyr.SetAttributeFilter(None)
pb.print_attributes(lyr,10,["MAX_POP10"],geom=False)

     可以看到在取消选择后FID会按原列表属性打印要素。

空间过滤器

        GDAL同时具备我们所需要的空间过滤器,能够根据矢量数据的几何位置进行查询。SetSpatialFilterRect(<minx>, <miny>, <maxx>, <maxy>),参数输入四个坐标,可以选中方框内的Feature。

# 导入模板
import os
from osgeo import ogr
from ospybook.vectorplotter import VectorPlotter
import ospybook as pb
# 设置文件路径
dir_doc='D:\\Python_study\\osgeopy-data'
doc=ogr.Open(os.path.join(dir_doc,'global'))
lyr=doc.GetLayer('ne_50m_populated_places')
vp=VectorPlotter(True)
# 查询空间位置范围
lyr.SetSpatialFilterRect(30, 40, 60, 50)
pb.print_attributes(lyr,10, ['NAME'], geom=False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cishazhu_ooook

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值