迭代.osm文件并为每个元素调用提供的回调函数

osm-iterator的Python项目详细描述


此代码加载.osm文件并允许对数据集中的所有osm对象调用函数。

安装

pip install osm-iterator

它以osm_iteratorpypi包的形式分发。

PyPI version

用法示例

from osm_iterator.osm_iterator import Data

def show_places(element):
    place_tag = element.get_tag_value("place")
    name_tag = element.get_tag_value("name")
    osm_object_url = element.get_link()
    if place_tag != None:
        print(name_tag + " is an object " + osm_object_url)

osm = Data("file.osm")
osm.iterate_over_data(show_places)

运行测试

nosetests3python3 -m unittest

历史记录

设计说明:这段代码对几乎所有事情的处理都非常次优。首先,将所有数据加载到内存中,然后创建重复的内存数据集。

因此,尝试处理任何大型数据集都会由于内存消耗过多而导致问题

这种情况是以下事实的结果

  • 这段代码是在我第一次尝试使用python处理osm数据时编写的
  • api允许(至少在理论上)轻松地切换到真正的迭代器,该迭代器不会一次将所有数据加载到内存中
  • 到目前为止,这对我来说已经足够好了,所以我没有动力花时间改进那些不是瓶颈的东西

不过,如果有人有改进的好主意(特别是以工作代码的形式),则欢迎使用注释和拉取请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?