如何使用 OpenStreetMap 中的标签搜索位置
How to search for locations using Tags inside OpenStreetMap
使用 Nominatim API,我能够根据查询进行搜索。但是,所有返回的结果都有一个与之关联的标签,例如 leisure=fitness_centre
.
因此,我如何使用 OpenStreetMap APIs 搜索给定位置(比如伦敦)的所有 fitness_centre
标签?想法是能够搜索地图,在某个位置(比如伦敦、牛津等)中归零,然后搜索所有带有标签 [leisure=fitness_centre
]
的 places/locations
使用 Google 地点 API,可以使用如下所示的标签进行搜索(指定 type=gym
)-
Google 地点 API 的唯一问题是它们非常昂贵!!,因此寻找 OpenStreetMap 作为替代方案。
要在 OSM 中搜索特定对象,Overpass API 通常是一个不错的选择。
有一个名为 overpass turbo 的不错的前端可用。打开向导,输入“leisure=fitness_centre in London”,它会生成一个合适的查询:
[out:json][timeout:25];
{{geocodeArea:London}}->.searchArea;
(
node["leisure"="fitness_centre"](area.searchArea);
way["leisure"="fitness_centre"](area.searchArea);
relation["leisure"="fitness_centre"](area.searchArea);
);
out body;
>;
out skel qt;
然后点击运行在地图上查看结果:https://overpass-turbo.eu/s/1fbg
请注意,{{geocodeArea:London}}->.searchArea;
部分是立交桥 Turbo 前端添加的功能。 Overpass API 无法理解此地理编码请求。相反,您必须将其替换为区域查询和相应的关系 ID(在本例中为 area(id:3600065606)->.searchArea;
)。
另一件需要注意的事情是,Overpass API 服务器不应该用于繁重的查询或商业目的。如果您需要这种服务,请安装您自己的 Overpass API 实例或使用商业 Overpass API 提供商。
使用 Nominatim API,我能够根据查询进行搜索。但是,所有返回的结果都有一个与之关联的标签,例如 leisure=fitness_centre
.
因此,我如何使用 OpenStreetMap APIs 搜索给定位置(比如伦敦)的所有 fitness_centre
标签?想法是能够搜索地图,在某个位置(比如伦敦、牛津等)中归零,然后搜索所有带有标签 [leisure=fitness_centre
]
使用 Google 地点 API,可以使用如下所示的标签进行搜索(指定 type=gym
)-
Google 地点 API 的唯一问题是它们非常昂贵!!,因此寻找 OpenStreetMap 作为替代方案。
要在 OSM 中搜索特定对象,Overpass API 通常是一个不错的选择。
有一个名为 overpass turbo 的不错的前端可用。打开向导,输入“leisure=fitness_centre in London”,它会生成一个合适的查询:
[out:json][timeout:25];
{{geocodeArea:London}}->.searchArea;
(
node["leisure"="fitness_centre"](area.searchArea);
way["leisure"="fitness_centre"](area.searchArea);
relation["leisure"="fitness_centre"](area.searchArea);
);
out body;
>;
out skel qt;
然后点击运行在地图上查看结果:https://overpass-turbo.eu/s/1fbg
请注意,{{geocodeArea:London}}->.searchArea;
部分是立交桥 Turbo 前端添加的功能。 Overpass API 无法理解此地理编码请求。相反,您必须将其替换为区域查询和相应的关系 ID(在本例中为 area(id:3600065606)->.searchArea;
)。
另一件需要注意的事情是,Overpass API 服务器不应该用于繁重的查询或商业目的。如果您需要这种服务,请安装您自己的 Overpass API 实例或使用商业 Overpass API 提供商。