使用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 overpy

api = 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 plt

plt.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)路网信息 自动爬取城市路网图片和矢量图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

push to origin/master was rejected解决方案之一

如果你是git小白,并且其他帖子的方法都不行,可以一试 在你的远程库(我这个是gitee)设置中的邮箱设置里不勾这个选项 然后就没有然后了。

仓库数据同步难题如何轻松破解?

一、客户介绍 某食品科技有限公司,是一家集研发、生产、销售于一体的现代化食品科技企业。公司的经营范围广泛,涵盖饮料生产、食品生产、食品经营(销售散装食品)、食品互联网销售以及货物进出口等多个领域。通过数字化冷链物流监…

ALV 图标显示

前言 在ABAP ALV中,使用fieldcat来定义列表中每个字段的显示属性,包括图标(Icon)的显示。图标可以在ALV列表中为特定列的行或标题添加图形元素,以增强视觉提示或传达附加信息。 ICON查询 图标的名称用事务码”ICON“进…

【无标题】海图微电子产品

一、HT2300 1、产品介绍 HT2300在全分辨率 (1920 H 1080 V) 下,它们的帧率可达2500fps。加上全局快门像素和低噪声等特性,可满足对高分辨率,高速CMOS图像传感器的需求,适用于科学研究,工业检测和数字影视中高速视频捕捉…

【数据链路层】以太网帧包解析

文章目录 以太网的帧结构解析数据链路层信息 以太网的帧结构 使用抓包工具,查看数据链路层信息: 解析数据链路层信息 (1)协议类型:代表上层的协议 (IP00800 ARP00806 IPv686DD ) 如图中所示&a…

2024 Google I/O - 提前窥探 Android 15 的新功能与适配

今年年初就简单介绍过 Android 15 预览版 的相关内容,而昨天 Google I/O 宣布了 Android 15 Beta2,作为第二个 Beta 版本 ,它已经基本接近它未来的样子,毕竟下个版本就是 Platform Stability 了,所以让我们提前来一睹 …

电脑恢复出厂设置怎么弄?让你的电脑焕然一新!

电脑恢复出厂设置是一种常见的操作,它可以帮助用户将电脑恢复到初始状态,清除所有数据和设置,使其恢复到出厂时的状态。这对于解决系统故障、清除个人数据以及重新配置电脑等情况非常有用。可是电脑恢复出厂设置怎么弄呢?本文将介…

网络安全快速入门(十三)linux及vmware软件的网络配置

13.1 前言 在通过我们前面的了解,我们现在已经对Linux的基础知识有了大致的了解,今天我们来大概讲一下关于linux系统及vmware的网络配置问题,在这之前,我们需要对网络有一个大概的认识和了解,话不多说,我们…

「AI模型瘦身术」——知识蒸馏技术综述

使用KD原因 遇到问题:从产业发展的角度来看工业化将逐渐过渡到智能化,边缘计算逐渐兴起预示着 AI 将逐渐与小型化智能化的设备深度融合,这也要求模型更加的便捷、高效、轻量以适应这些设备的部署。 解决方案:知识蒸馏技术 知识…

记一次:mysql统计的CAST函数与json字段中的某个字段

前言:因为需求的问题,会遇到将某个json存入到一个字段中,但在统计的时候,又需要将这个json中的某个字段作为条件来统计,所以整理了一下cast函数和json中某个字段的条件判断 一、浅谈mysql的json 1.1 上例子 SELECTli…

管仲故乡是颍川,何分颍上或颍下

第一仲父管仲,故乡在哪里?依然像许多名人故里一样存在争议,但是这个争议却很不一般,引出了一个大话题。 管子是安徽颍上县人,《史记》记载: “管仲,颍上人也。”颍上县有管鲍祠,是安徽省重点文物…

【小项目】简单实现博客系统(一)(前后端结合)

一、实现逻辑 1)实现博客列表页 让页面从服务器拿到博客数据(数据库) 2)实现博客详情页 点击博客的时候,可以从服务器拿到博客的完整数据 3)实现登录功能(跟之前写的登录页面逻辑一致&…

羊大师解析,春季羊奶助力健康成长

羊大师解析,春季羊奶助力健康成长 随着春天的到来,万物复苏,大自然呈现出一派生机勃勃的景象。在这个充满希望的季节里,我们不仅要关注外界环境的变化,更要关注身体的健康和成长。羊大师发现羊奶作为一种营养丰富的食…

探索未来:苹果如何在 Apple Vision Pro 上进行创新

视觉体验的演进 在当今快节奏的数字化时代,技术创新不断塑造着我们与周围世界互动的方式。在这些进步中,苹果视觉专业技术凭借其创新精神脱颖而出,彻底改变了我们感知和参与视觉内容的方式。 无与伦比的显示技术 苹果视觉专业技术的核心是…

error Component name “Child4“ should always be multi-word

error Component name "Child4" should always be multi-word 这个错误是来自于ESLint的规则,它强制要求组件的名称必须是多单词的。这是因为单单一个单词可能与HTML的内建标签或者其他组件的名称产生冲突,从而导致意外的行为。 解决方法&am…

C#知识|(实例)大乐透双色球随机选号器项目实现(二)

哈喽,你好,我是雷工! 前面记录了UI设计,接下来记录类的设计,及相关代码。 04 类的设计 4.1、创建文件夹 为了使分类更加清晰,添加Models文件夹; 4.2、添加大乐透类 添加SuperLotto.cs类 该类的代码如下: namespace LeiGongNotes {/// <summary>/// 大乐透类…

el-upload 上传多个视频

<el-form-item label="视频" prop="video_url"><el-uploadclass="upload-demo"ref="uploadRef":multiple="true":on-change="handleChange":before-remove="beforeRemove":before-upload=&quo…

Typescript 哲学 - d.ts文件

The .d.ts syntax intentionally looks like ES Modules syntax. ES Modules was ratified by TC39 in 2015 as part of ES2015 (ES6), while it has been available via transpilers for a long time default export (esModuleInterop:true) / export 讲一个 d.ts export 的…

PCB供电夹子DIY

在刷小红书的时候&#xff0c;看到了清华卓晴教授【https://zhuoqing.blog.csdn.net/】DIY的供电夹子&#xff0c;感觉对于自己DIY PCB的时候供电会比较方便&#xff0c;物料也比较简单&#xff0c;打算复刻一下。 使用物料 1、小夹子&#xff0c;文具店都有卖&#xff0c;选…