272974322 发表于 2022-10-28 23:01:28

强大的开放式地图数据库:Overpass Turbo

开放街道地图数据库【https://www.openstreetmap.org/】包含有关地球表面几乎每一平方米的详细信息 土地使用、建筑类型、河流、公园长椅、酒吧、街道和数百万其他数据点都被详细绘制和记录。
你可能熟悉基于浏览器打开街道地图(OSM)网站【https://www.openstreetmap.org/】的。从表面上看,它类似于谷歌或必应等地图服务,但你可能没有意识到,支持它的庞大地图数据集也可以直接访问。需要找到一个城市所有的电力线?数一数每平方公里有多少酒吧?可视化每个地区的COVID案例?或者你只是想解决一个难Quiztime【https://quiztime.com/】题?
OSM庞大的数据库可以被查询以支持你能想到的几乎任何地图用例。可以通过一个名为Overpass 【https://wiki.openstreetmap.org/wiki/Overpass_API】。它非常强大,但是对初学者不太友好,而且构造查询需要一点编码知识。


访问 Overpass 的更方便的方式是以 Overpass Turbo 【https://overpass-turbo.eu/】。Overpass Turbo 允许您以更加用户友好的方式构建 Overpass 查询。您可以构建查询、运行它,然后查看地图上显示的数据。结果也可以以 CSV 或 JSON 格式返回,这使得将它们合并到您自己的地图项目中变得更加容易。
基本概念

尽管transition Turbo比直接查询transition更加用户友好,但它一点也不像谷歌地图那样容易使用。它比谷歌地图强大得多,但构建有效的查询需要理解OSM包含的数据类型。
语法也更加严格。如果你输入“迪斯尼附近的五星级酒店”作为你的 Overpass Turbo 查询,你不会走得很远。在开始构建查询之前,花点时间熟悉一下OSM数据的基本类型是值得的。
几何

OSM数据库中有三种主要类型的对象。这些被称为几何。OSM地图上显示的每个对象都是这些类型中的一种。
结节

节点是地图上的一个点。它有一个唯一的ID号和一组坐标。这个公园长椅【https://www.openstreetmap.org/node/4340279542#map=17/52.28932/8.03031】奥斯纳布吕克市的一条运河旁边有一个节点:


你可以看到它有一个唯一的ID号、经纬度坐标和一些描述其属性的标签。我们稍后将讨论标签。
方法

长凳旁边是一条铁路线。线状要素不能由地图上的单个节点表示,因此路径、道路、河流和高速公路由链接在一起形成道路的多个节点表示。路只是链接节点的集合。


道路不一定要像铁路或运河那样呈线性。节点的集合可以在同一点开始和结束以形成一个形状。这个机场【https://www.openstreetmap.org/way/94423432】就在Osnabrück外面不是一个节点,而是一条路。其边界由一系列链接在一起形成多边形的单个节点定义:


因此,要在地图上找到大于一个点的对象,就必须搜索路径,而不仅仅是节点。我们将很快看到有一种方法可以组合这些类型的查询,但是我们需要先看看最终的数据类型。
关系

一个节点是一个点。一种方式是一系列链接的节点。关系组合方式和节点以形成更复杂的对象。
假设您想在 OSM 中表示一条火车路线。你有节点(车站、信号)和道路(轨道部分、桥梁,也许更大的车站)。要表示路线,需要将这些节点和方式组合成一个“路线”对象。这种组合被称为“关系”。
让我们回到奥斯纳布吕克。 哈芬区是该市北部的一个行政区。 在 OSM 中,它是标记地理边界的方法的集合,也是表示它是管理中心的单个节点。 一个对象太复杂了,不能只是一个路或一个节点,所以节点和路被组合起来形成一个关系。


多种方式形成边界。中间的单个节点指的是行政中心。这可以在OSM的信息面板中看到(在地图上点击右键,点击“查询功能”):


哈芬区域是由5种方式和单个节点组成的关系。
标签

标签是在OSM中查找信息的关键。正如我们刚才看到的,OSM中的每个对象要么是节点,要么是方式,要么是关系。这些对象包含位置数据,但不包含描述性信息。节点、方法和对象用一系列的tag进行标记和描述。
我们看到的第一个物体公园的长椅上是。它是一个具有惟一引用号4340279543和经纬度/长度坐标的节52.2910290, 8.0265765点。这就是一个节点存在所需要的全部信息——但是,仅凭这些细节,人们怎么可能找到它,甚至知道它是什么呢?
OSM对象需要额外的信息,以便正确地描述和索引它们。标签就是用来做这个的。长凳有几个标签来描述它:
这是一个非常强大的系统,但是在标签方面有一个困难。在《天桥Turbo》中,我不能像“park bench”那样做一个自由文本搜索,并确定我将找到一个匹配的标签。我用来搜索的标签必须与OSM贡献者分配的标签完全匹配,所以如果我只是猜测标签名称,我可能会错,我不会找到我要找的东西。Overpass Turbo的查询向导可以通过基于搜索条件建议标签略有帮助,但它支付知道如何构建标签,以便尽可能准确与您的结果。
TagInfo

OSMTaginfo网站 允许您搜索已经添加到数据库中的标签。使用右上方的搜索框,我们可以搜索组成标签的键和值,以便将它们添加到查询中。
假设我想找风力涡轮机。我在Taginfo搜索框中输入术语“风力涡轮机”,然后得这些结果到。
OSM标签总是由一个键-值对组成。您可以将键视为主要类型,而将值视为子类型。常见的键值对的示例可能是
建筑=学校,

高速公路高速公路。
这意味着仅仅创建一个名为“风力涡轮机”的标签在OSM中是行不通的。标签必须同时具有键和值。
上图显示了人们如何创建键值对来描述风力涡轮机。到目前为止,最受欢迎的是标签
发电机:方法= wind_turbine

您可以看到标签由密钥组成
发电机:方法
和价值
wind_turbine。
您还可以看到,OSM数据库中有24052个对象是以这种方式标记的,所以要找到一个风力涡轮机,这将是最好的标签。相比之下,如果我搜索标签
风力涡轮机
这将只匹配整个数据库中的18个对象,所以我不太可能找到我要找的东西。
以下是生成器的所有结果:method = wind_turbine查询Osnabrück:
边界框

在将这些概念付诸实践之前,有必要提一下边界框的概念。当查询天桥,它是必要的设置一个北,南,东和西边界点的框,你希望搜索。这些通常是用发送给API的坐标定义的,但幸运的是,天桥Turbo根据右边窗口中的地图区域为你创建了这个框。表示坐标的
{{bbox}}
标记。天桥Turbo将只在您指定的框区域内搜索匹配的数据。
结论

在这篇文章中,我们已经了解了OSM和Overpass Turbo的基本构建模块。在下一篇文章中,我们将把它们放在一起构建一些查询并开始检索数据。

吹毛成仙 发表于 2022-10-28 23:12:59

画完之后,英国对中国了如指掌了
页: [1]
查看完整版本: 强大的开放式地图数据库:Overpass Turbo