使用OverPy API批量获取OpenStreetMap(OSM)城市路网png图片和svg矢量图

在地理信息系统(GIS)和数据可视化领域,获取城市路网的图像对于分析和展示城市交通结构至关重要。OpenStreetMap (OSM) 是一个免费且开放的地理数据源,而OverPy 是一个用于访问OSM数据的Python库。本文将详细介绍如何使用OverPy API批量获取多个城市的路网数据,并生成PNG图片和SVG矢量图。

在这里插入图片描述

环境准备

首先,我们需要安装所需的Python库。运行以下命令以安装OverPy和matplotlib:

pip install overpy matplotlib

使用OverPy API获取城市路网数据

OverPy 允许我们通过OSM的API接口查询和获取指定区域的路网数据。以下是一个示例,展示如何获取城市的路网数据:

import overpyapi = overpy.Overpass()
query = f"""[out:json];(way["highway"]({bbox});relation["highway"]({bbox}););out body;>;out skel qt;
"""
result = api.query(query)
return result

在上面的代码中,bbox 是城市的边界框(bounding box),格式为 (south,west,north,east)。例如,对于北京,bbox 可以是 (39.4, 115.7, 41.6, 117.4)

绘制路网

使用matplotlib库,我们可以将获取到的路网数据绘制为图片:

import matplotlib.pyplot as pltplt.figure(dpi=256, figsize=(32, 32))
# plt.rcParams['image.interpolation'] = 'nearest'
plt.axis('off')
plt.xlim(lon)
plt.ylim(lat)
plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
plt.margins(0, 0)
for way in result.ways:nodes = way.get_nodes()x = []; y = []for node in nodes:x.append(node.lon)y.append(node.lat)plt.plot(x, y, color='black')
plt.close()

保存为PNG图片或SVG矢量图

我们可以生成PNG图片,也可以生成SVG格式的矢量图:

plt.savefig("ways/%s.png" % name)   # 保存为png格式
plt.savefig("svgs/%s.svg" % name, format='svg')  # 保存为svg格式

批量处理多个城市

为了批量获取多个城市的路网数据并生成相应的PNG和SVG文件,我们可以创建一个包含城市名称及其边界框的列表,并循环处理每个城市:

cities = [{"name": "Beijing", "bbox": (39.4, 115.7, 41.6, 117.4)},{"name": "Shanghai", "bbox": (30.4, 120.8, 32.4, 122.2)},{"name": "Guangzhou", "bbox": (22.5, 112.9, 23.7, 114.1)}
]

下载代码包中包含了一个中国城市经纬度的json文件,可以直接进行批量处理。

如果你觉得本篇博文有帮助,可以购买本资源支持作者(包含可以直接运行的示例代码):Python获取openstreetmap(OSM)路网信息 自动爬取城市路网图片和矢量图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/705999.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员的实用神器之——通义灵码

通义灵码介绍 “通义灵码”是一款基于阿里云通义代码大模型打造的智能编码助手,产品于2023年10月31日云栖大会上,正式对外发布。新手亦能驾轻,老手恒常运,唯手熟尔。 通义灵码产品介绍_智能编码助手_AI编程_云效(Apsara Devops)…

界面组件DevExpress WPF v23.2 - 全新升级的数据编辑器、流程图组件

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

宝塔助手是以宝塔Linux面板提供的API开发的一款可以随时随地管理服务器的APP

【软件介绍】手机操控云服务器的神器软件,本人亲测在用,好用极了! 【软件名称】宝塔助手 【软件包名】com.lensyn.zsbt 【软件版本】1.4.1 【软件大小】29.00M 【适用系统】安卓 【软件特色】宝塔助手是以宝塔Linux面板提供的API开发的一款可…

.NET 4.8和.NET 8.0的区别和联系、以及查看本地计算机的.NET版本

文章目录 .NET 4.8和.NET 8.0的区别查看本地计算机的.NET版本 .NET 4.8和.NET 8.0的区别 .NET 8.0 和 .NET 4.8 之间的区别主要体现在它们的发展背景、目标平台、架构设计和功能特性上。下面是它们之间的一些主要区别: 发展背景: .NET 4.8 是.NET Fram…

航向数据之海:Spring的JPA与Hibernate秘籍

Hi,俺又来给大家上课啦~ 在数字化的海域中,掌握数据访问与集成的航海术至关重要。本文将带你揭秘Spring框架如何借助JPA与Hibernate这两大法宝,引领开发者在数据库的汪洋中乘风破浪! 航向数据之海:Spring的JPA与Hibern…

Linux:文件、fd

Linux:文件、fd 前言一、C语言中常见打开文件的函数接口二、打开文件的系统调用接口三、文件描述符fd四、为何Linux下一切皆文件 前言 文件 内容 属性 所有对文件的操作本质上就分为:对内容的修改和对属性的修改。  内容是数据,属性也是数据。所以存…

SAP_ABAP-思考篇

作为一个SAP十年左右的从业者,其实我很清楚,我自身的能力,确实是很多东西都会一点,但是没有一样是精通的。坦白来说,我的个人简介里,虽然也不算夸大,但我估计有些新手小白看着可能会觉得还挺厉害…

windows驱动开发-PCI讨论(一)

前面描述中断的时候,我们曾经多次体积PCI,甚至提供了一些PCI的相关知识,但是整个PCI是一个很大的体系,专门记录这个体系超出了这个系列的范畴,有兴趣的可以到PCI官网了解详细的情况。 但是还是会花费一些时间讨论PCI技…

大模型时代下的先行者:景联文科技引领数据标注新时代

在大模型时代,数据标注不再是简单的分类标注,而是一项融合了技术革新、专业技能、法律合规和精细化管理的综合性任务,对推动AI技术的发展和落地应用具有重要意义。 景联文科技作为AI基础行业的数据供应商,可协助人工智能企业解决整…

【Python】图像批量合成视频,并以文件夹名称命名合成的视频

一个文件夹中有多个子文件夹,子文件夹中有多张图像。如何把批量把子文件夹中的图像合成视频,视频名称是子文件夹的名称,生成的视频保存到指定文件夹,效果记录。 代码 import os import cv2def create_video_from_images(image_f…

电路板维修【四】

【开关电源输出电压偏低不稳,用示波器立马锁定故障范围】:https://www.bilibili.com/video/BV1pf421D73K?vd_source3cc3c07b09206097d0d8b0aefdf07958 可以用示波器查看MOS的输出波形来查看其是否损坏: 电源芯片的供电电压来回跳变&#xf…

【Linux线程(三)】生产者消费者模型

目录 前言: 一、什么是生产者消费者模型 (一)概念 (二)321原则 1.三个关系 2. 两种角色 3.一个场所 (三)生产者消费者模型的优缺点 二、基于阻塞队列实现生产者消费者模型 &#xff0…