第 5 章 OpenStreetMap OpenStreetMap:使用 OSMnx访问地理空间数据
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
OpenStreetMap(OSM)是一个可编辑的全球地理数据库,由志愿者建立,其目标是:创建地理数据并免费向所有人发布。如果您使用 GPS 或任何支持定位功能的设备来指路,那么您的智能手机已经与 OSM 进行了交互。 Python 提供了一个名为OSMnx 的软件包,可让城市规划者和其他各类用户创建街道网络,并与其他 "隐藏 "的地理信息进行交互和分析。您可以找到适合步行、驾车或骑车的城市网络,供个人使用或用于研究,例如研究城市环境的特征。强大的分析功能可以揭示基础设施框架,例如,在分析道路网络和相互关联的性质时,可以发现效率低下的问题。
我个人认为,街道 Network+ 是一件艺术品。不过,它们的真正用途或许还未得到充分利用,那就是为您的建筑基础设施添加几何图形。您可以添加建筑物(例如医院、学校和杂货店)、公园以及其他分类为边缘、建筑物和区域的数据帧。建筑物一词的定义比较宽泛,有一个关于建筑物标签的 Wiki。OSM Nominatim 是查找地名的重要资源。您还可以添加兴趣点、高程等。
乍一看,OSMnx 似乎有点技术性,也有点复杂。但在本章中,当你使用 OSM 构建街道 Network+ 时,你将学会如何应用这个功能强大、可定制的软件包并与之互动。
OpenStreetMap 概念模型
OSM 数据库包含 8 万多个标签键和 600 多种关系类型,因此你可以为地图定义适当的粒度。 在本章中,您将学习如何访问这些特征、自定义它们、将它们添加到地图上并进行分析。例如,您可以确定一个地点并探索农业、商业或住宅用地的分布情况。(本节后面的图 5-2 显示了您可以通过查询数据库访问的不同土地利用值的快照)。如果您对某一地区的洪涝灾害发生率或如何计算暴雨径流感兴趣,了解该地区的土地利用分布情况可能非常重要。截至本文撰写时,数据库中最常用的标签包括建筑物、高速公路、地表和水道数据。
OSM 的结构有一些规则,但相对简单明了。例如,节点可以是任意(可散列)的 Python 对象,节点和边都是可选的键/值属性。要查看这些可选值的全部内容,请访问 OSM地图特征或标签信息(或阅读全文)。
你可以把一个可变对象(如列表)放在一个元组中。元组仍然是不可变的,但你可以改变其中的列表,所以它不是可散列的。
标签
OSM 应用一个由键值对组成的标签。我们将在本章编写的代码单元中看到这些定义。 它们的格式是键及其对应的值,格式为key=value 。例如,如果某个地点的关键字设置为highway ,值为residential ,那么就可以知道这是一条有人居住的道路。
下面是几个标签示例:
surface=asphalt highway=residential building=commercial
根据您所寻找的内容,这种粒度可能对您的数据探索有用。例如,我曾使用这些标签来探索城市环境中的不透水表面。 不透水表面容易积聚热量,而拥有大量不透水表面的地方往往洪水泛滥率较高--这对于比较不同社区的特征非常重要。再比如,您可能只想获得一个社区内所有建筑物的地图。然后将上传默认值 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access