Python实现OSM地图数据解析——Pydriosm

article/2025/7/22 2:38:19

目录

  • 1. Pydriosm简介
  • 2. 安装
  • 3. 使用方法
    • 3.1 下载数据
    • 3.2 解析文件
    • 3.3 不同geometry 类型及其数据结构
  • 4. 总结
  • 参考

1. Pydriosm简介

Pydriosm是一个开源的OSM地图文件下载和解析工具。通过OSM官方API为研究人员/从业者提供OSM地图文件在线下载和本地OSM地图文件读取解析功能,以及便捷的PostgreSQL数据库接口。

2. 安装

pip install pydriosm

3. 使用方法

3.1 下载数据

(1)查看支持的文件下载格式

>>>from pydriosm import GeofabrikDownloader
>>>geofabrik_downloader = GeofabrikDownloader()
>>>geofabrik_download_catalogue = geofabrik_downloader.get_download_catalogue()
>>>print(geofabrik_download_catalogue.columns.tolist())
['Subregion', 'SubregionURL', '.osm.pbf', '.osm.pbf.Size', '.shp.zip', '.osm.bz2']

(2)查看下载链接列表

>>>print(geofabrik_download_catalogue.head())Subregion  ...                                           .osm.bz2
0       Algeria  ...  http://download.geofabrik.de/africa/algeria-la...
1        Angola  ...  http://download.geofabrik.de/africa/angola-lat...
2         Benin  ...  http://download.geofabrik.de/africa/benin-late...
3      Botswana  ...  http://download.geofabrik.de/africa/botswana-l...
4  Burkina Faso  ...  http://download.geofabrik.de/africa/burkina-fa...
[5 rows x 6 columns]

(3)下载地图文件

>>>subregion_name = 'London'  # case-insensitive
>>>osm_file_format = ".pbf"  # or ".osm.pbf"
>>>download_dir = "tests"# Download the OSM PBF data of London from Geofabrik
>>>geofabrik_downloader.download_osm_data(subregion_name, osm_file_format,download_dir, verbose=True)
Confirmed to download .osm.pbf data of the following geographic region(s):Greater London
? [No]|Yes: yes
Downloading "greater-london-latest.osm.pbf" to "\tests" ...
Done.

(4)下载多个文件

>>>subregion_names = ['Rutland', 'West Yorkshire', 'West Midlands']>>>paths_to_pbf = geofabrik_downloader.download_osm_data(subregion_names, osm_file_format, download_dir, ret_download_path=True)verbose=True)
Confirmed to download .osm.pbf data of the following geographic region(s):RutlandWest YorkshireWest Midlands
? [No]|Yes: yes
Downloading "rutland-latest.osm.pbf" to "\tests" ...
Done.
Downloading "west-yorkshire-latest.osm.pbf" to "\tests" ...
Done.
Downloading "west-midlands-latest.osm.pbf" to "\tests" ...
Done.>>>print(type(path_to_pbf))
<class 'list'>>>>for path_to_pbf in paths_to_pbf:
>>>    print(f"'{os.path.relpath(path_to_pbf)}'")
'tests\rutland-latest.osm.pbf'
'tests\west-yorkshire-latest.osm.pbf'
'tests\west-midlands-latest.osm.pbf'

3.2 解析文件

(1)解析文件

>>>from pydriosm import GeofabrikReader
>>>geofabrik_reader = GeofabrikReader()
>>>subregion_name = 'Rutland'
>>>data_dir = download_dir  # "tests"
>>>rutland_pbf_raw = geofabrik_reader.read_osm_pbf(subregion_name, data_dir)
>>>print(type(rutland_pbf_raw))
<class 'dict'>

(2)检查point层

>>>rutland_pbf_points = rutland_pbf_raw['points']
>>>print(rutland_points.head())points
0  {"type": "Feature", "geometry": {"type": "Poin...
1  {"type": "Feature", "geometry": {"type": "Poin...
2  {"type": "Feature", "geometry": {"type": "Poin...
3  {"type": "Feature", "geometry": {"type": "Poin...
4  {"type": "Feature", "geometry": {"type": "Poin...

(3)转换为json格式
rutland_pbf_points 中每一行都是GeoJSON格式的嵌套字典,因此可以转换为json格式:

>>>import json
>
>>>rutland_pbf_points_0 = rutland_pbf_points['points'][0]
>>>print(type(rutland_pbf_points_0))
<class 'str'>>>>rutland_pbf_points_0_ = json.loads(rutland_pbf_points_0)
>>>print(type(rutland_pbf_points_0_))
<class 'dict'>>>>print(list(rutland_pbf_points_0_.keys()))
['type', 'geometry', 'properties', 'id']

3.3 不同geometry 类型及其数据结构

对osm文件解析后可以得到文件中不同的geometry 类型(Point, Line,Multiline,MultiPolygon,Geometry Collection):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 总结

pydriosm主要特色可总结为:

  • 在线文件下载:可输入区域名称下载文件,但受所选择OSM官方API限制,对国内支持稍差,某些地区可能无法匹配;
  • 本地文件解析:可对’.pbf/.osm.pbf’,’.shp.zip/.shp’解析,按point,line,multiline,multipolygon,relation等分类存储,便于后续数据进一步过滤,用户可根据个人需求进行数据提取;
  • PostgreSQL数据库API:习惯使用数据库的用户,可以直接将解析数据存入数据库。

更多功能请访问原文档解锁。

参考

  1. https://pydriosm.readthedocs.io/en/latest/index.html
  2. https://pypi.org/project/pydriosm/

http://chatgpt.dhexx.cn/article/1LHvJlqX.shtml

相关文章

将OSM地图转化成OpenDRIVE

关于OSM 以下来自百度引用&#xff1a;OpenStreetMap&#xff08;简称OSM&#xff09; 开源wiki地图&#xff0c;很多人们习以为常可以随便拿来用的地图&#xff0c;其实有很多法律和技术上的限制&#xff0c;这些限制使得像地图这类的地理资讯无法有创意、有效率地被再利用。开…

OSM地图本地发布(四)-----Geoserver发布自定义地图

一、准备工作 1. 安装jdk 1.8、tomcat 2.安装Geoserver&#xff0c;下载地址&#xff1a;https://sourceforge.net/projects/geoserver/files/GeoServer/2.19.2/ 3.自定义图层准备&#xff0c;OSM本地发布(三)-----自定义图层提取 4.下载osmsld.zip样式文件&#xff0c;链接…

OSM地图本地发布(三)-----自定义图层提取

一、准备工作 1.完成数据准备OSM本地发布(二)-----数据准备 2.推荐使用Navicat操作数据库 3.下文是在《在GeoServer中为OpenStreetMap数据设置OSM样式》基础上的改进&#xff0c;可直接看该文实现图层发布 二、OSM字段说明 planet_osm_line,planet_osm_point,planet_osm_pol…

Python实现OSM地图数据解析——OSM2Rail

目录 1. 简介2. 功能特色2.1 自动下载OpenStreetMap地图数据包2.2 提供更精确的铁路网络数据解析2.3 扩展GMNS标准 3. 快速上手4. 效果展示5. 相关阅读 1. 简介 前期为大家介绍了由美国亚利桑那州立大学ASU TransAI Lab团队开发的开源python依赖库——OSM2GMNS&#xff0c;不仅…

下载OSM地图数据

OSM数据有几种下载方式&#xff1a;1&#xff09;直接通过wget下载&#xff1b; 2&#xff09;通过官网直接导出指定区域&#xff1b; 3&#xff09;通过QGIS下载指定区域 1.通过wget下载数据 进入http://download.geofabrik.de/&#xff0c; 可以按照自己的需求下载不同国家不…

QGIS获取OSM地图矢量数据

目录 一、QGIS加载OSM底图图层 二、quickosm插件导入openstreetmap数据 三、数据导出 四、Overpass query查询用法 五、写在最后 一、QGIS加载OSM底图图层 1.安装QuickMapServices插件&#xff0c;在网络菜单下可以加载各类底图 2.插件安装后&#xff0c;通过插件打开OS…

OSM地图本地发布(一)-----概述

目录 一、前言 二、开源GIS介绍 1.前端GIS框架 2.后端技术 3.空间数据库 4.地图服务器 4.GIS软件 三、技术选型 四、文章目录 1.OSM本地发布(一)-----概述 2.OSM本地发布(二)-----数据准备 3.OSM本地发布(三)-----自定义图层提取 4.OSM本地发布(四)-----Geoserver…

中国省份/城市OSM地图数据

下载访问地址 网站截图

数据分享|2023年OSM道路数据(全国,分省,分市)

道路数据是我们在各项研究中经常使用的数据!道路数据虽然很常用,但是却基本没有能下载最近年份道路数据的网站,所以很多人不知道如何获到道路数据。 本次我们为大家推荐的下载道路数据的网站是Open Street Map!我们先来了解下Open Street Map,其简称为OSM,是一个开源的地…

基于 OSM 构建全球瓦片地图(一):概述

一、什么是OSM 开放街道地图&#xff08;英语&#xff1a;OpenStreetMap&#xff0c;缩写为OSM&#xff09;&#xff0c;其概念启发自维基百科网站&#xff0c;是一个建构自由内容之网上地图协作计划&#xff0c;目标是创造一个内容自由且能让所有人编辑的世界地图。 从2007年…

Python实现OSM地图数据解析——OSM2GMNS

目录 1. 开源地图OSM2. 数据解析方法对比3. OSM2GMNS3.1 关于GMNS数据格式3.2 安装方法3.3 使用方法3.3.1 地图数据下载3.3.2 数据解析 3.4 输出文件 4. 可视化5. 总结参考 1. 开源地图OSM OpenStreetMap&#xff08;www.openstreetmap.org&#xff09;是一款知名的开源地图数…

利用微信网页录音接口实现语音搜索

微信网页接口有3个录音相关接口 开始录音接口 wx.startRecord();停止录音接口 wx.stopRecord({ success: function (res) { var localId res.localId; } });监听录音自动停止接口 wx.onVoiceRecordEnd({ // 录音时间超过一分钟没有停止的时候会执行 complete 回调 complete…

Unity WebGL基于js通信实现网页录音

Unity WebGL基于js通信实现网页录音 由于Unity发布WebGL后无法使用Unity中的Microphone,所以无法进行录音&#xff0c;只能借助与网页进行录音操作&#xff0c;因此基于Unity新版页面对接方式jslib实现页面录音。可以将录音数据回传至unity&#xff0c;并在unity中进行播放。理…

php录音功能,h5做出网页录音功能

这次给大家带来h5做出网页录音功能,h5做出网页录音功能的注意事项有哪些,下面就是实战案例,一起来看一下。 得益于前辈的分享,做了一个h5录音的demo。效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: …

java 网页 录音_Java+FlashWavRecorder实现网页录音并上传【新】

【注意】 【说明】 1.在线录音并直接上传到服务器中 【使用】 1.运行 1.请下载本项目&#xff0c;并导入myeclipse中 2.跑起项目&#xff0c;访问http://localhost:8080/recorder-online-upload查看效果 2.定制 1.打开WEB-INF/view/index.html 2.只有两段html注释中的代码是需要…

java 网页 录音_Java+FlashWavRecorder实现网页录音并上传

【注意】 【前言】 肯定有需求要网页录音&#xff0c;并且要上传。这奇葩需求。 然后找到了FlashWavRecorder&#xff0c; 【原始版本号】 1.下载 在上面的地址下载zip解压之后&#xff0c;目录里面有个index.html。打开之后这效果&#xff1a; 2.录音权限 必须保证你的电脑有麦…

10.WebRTC实现网页录音功能

一、概述 通过WebRTC&#xff0c;实现在页面上进行录音&#xff0c;并将录音结果转换为.wav格式进行播放 二、录音实现 检测是否有麦克风权限 navigator.mediaDevices.enumerateDevices().then(function(devices) {// 检测视频输入let video devices.find((device) > {…

uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】

uniapp中上传音频只能在app或小程序当中实现&#xff0c;如何使用网页完成语音的录制和上传则成为了困扰前端童鞋的重点。 本文着重解决&#xff1a; js-audio-recorder报 error:浏览器不支持getUserMedia ! 的问题。 js-audio-recorder报 NotFoundError : Requested device no…

前端实现在浏览器网页中录音

一、整体实现的思想 页面中实现录音需要使用浏览器提供的MediaRecorder API,所以要实现页面录音就需要浏览器支持MediaStream Recording相关的功能&#xff0c;即浏览器能够获取浏览器的录音权限。 页面内容&#xff0c;需要一个记录录音开始和结束的按钮&#xff0c;以及一个用…

基于神经网络的自适应最优控制

《 N e u r a l n e t w o r k a p p r o a c h t o c o n t i n u o u s − t i m e d i r e c t a d a p t i v e o p t i m a l c o n t r o l f o r p a r t i a l l y u n k n o w n n o n l i n e a r s y s t e m s 》 D r a g u n a V r a b i e ∗ , F r a n k L e w …