Open Street Map介绍以及相关使用教程

本文介绍了OpenStreetMap(OSM)的基本概念,并提供了下载OSM和shp格式地图的方法。OSM是一种开源地图数据,而shp和osm是两种常见的数据格式。文章深入探讨了如何使用Python解析和处理OSM数据,包括Node、Way和Relation的使用,以及利用osmium库进行地图数据的读取和分析。还给出了多个osmium库的示例代码链接,用于进一步的开发和学习。此外,提到了官方文档和一些实用工具,如h.apply_file(),用于获取WayNodeList中Node的位置信息。文章适合对地图数据处理感兴趣的读者。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

看不太懂,但感觉有用的东西。Openstreetmap 是什么?

  1. 用来入门(或者说先知道这是什么)简单的百度百科介绍

  2. 这个链接展示了如何下载一定格式的地图(shp、osm格式)。
    OpenStreetMap开源地图数据下载方法(含shp格式)

  3. 那问题来了,shp和osm格式都是什么东西呀?

  4. 用python解读osm数据:

最后如何使用还是要看:
官方doc
osmium文档

  1. 先熟悉python的各个接口
    osmium.osm.Node class示例:
    示例
    osmium.osm.Way 示例:
    在这里插入图片描述

In Osmium, ways can optionally also have a location for each node
reference. This will usually be empty but can be filled, for instance
using the NodeLocationsForWays handler (see below). This is very
convenient for many use cases.

看起来从way的WayNodeList找到的node 不太对,记录reference,再查下。直接拿会错。

目前只能通过ref,再次寻找地图点来确定位置。git源码就是这么做的。

但如果用了

h.apply_file("test.osm.pbf", locations=True, idx='dense_file_array,example.nodecache')

则也许location里是有内容的,待验证。

验证成功可以用。

osmium.osm.Relation 示例:
在这里插入图片描述

从官方文档看到了(https://github.com/osmcode/pyosmium/blob/master/examples/road_length.py):
self.length += o.geom.haversine_distance(w.nodes)
说明在地图领域,或者高精地图领域,还是有一些函数的,只是才入门,不太懂而已。问题是确实相关材料不多。

  1. 然后看osmium的各个定义,进行继续开发,后者接其他库,进行图像操作。

从git上看有用的代码:

代码
https://github.com/osmcode/pyosmium/blob/master/examples/amenity_list.py
https://github.com/osmcode/pyosmium/blob/master/examples/convert.py
https://github.com/osmcode/pyosmium/blob/master/examples/filter_coastlines.py
https://github.com/osmcode/pyosmium/blob/master/examples/normalize_boolean.py
https://github.com/osmcode/pyosmium/blob/master/examples/osm_file_stats.py
https://github.com/osmcode/pyosmium/blob/master/examples/pub_names.py
https://github.com/osmcode/pyosmium/blob/master/examples/road_length.py
https://github.com/osmcode/pyosmium/blob/master/examples/road_length.py

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值