osm数据下载 python_使用GDAL / OGR python模块解析osm.pbf数据

感谢scai的回答,我得以弄清楚.

gdal.org/1.11/ogr/drv_osm.html中提到的交错阅读所需的特殊阅读模式被转换为可以在下面找到的python示例.

这是如何提取.osm.pbf文件中所有带有’amenity = pub’标签的功能的示例

import gdal, ogr

gdal.SetConfigOption('OGR_INTERLEAVED_READING', 'YES')

osm = ogr.Open('file.osm.pbf')

# Grab available layers in file

nLayerCount = osm.GetLayerCount()

thereIsDataInLayer = True

pubs = []

while thereIsDataInLayer:

thereIsDataInLayer = False

# Cycle through available layers

for iLayer in xrange(nLayerCount):

lyr=osm.GetLayer(iLayer)

# Get first feature from layer

feat = lyr.GetNextFeature()

while (feat is not None):

thereIsDataInLayer = True

#Do something with feature, in this case store them in a list

if feat.GetField('amenity') == 'pub':

pubs.append(feat)

#The destroy method is necessary for interleaved reading

feat.Destroy()

feat = lyr.GetNextFeature()

据我了解,需要使用while循环而不是for循环,因为使用交错读取方法时,不可能获得集合的特征数.

非常感谢您进一步澄清为什么这段代码如此工作.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值