您只是在获取节点。根据taginfo,大约 7% 的发电厂被映射为方式(很少被映射为关系)。您所在国家/地区的比例可能不同。
您可以在overpass-turbo的帮助下构建特定国家/地区的查询。它是 Overpass API 的一个很好的前端,有一个很好的向导和一个稍微改进的查询语言。使用向导并搜索“power=plant in France”会返回以下查询:
/*
This has been generated by the overpass-turbo wizard.
The original search was:
“power=plant in France”
*/
[out:json][timeout:300];
// fetch area “France” to search in
{{geocodeArea:France}}->.searchArea;
// gather results
(
// query part for: “power=plant”
node["power"="plant"](area.searchArea);
way["power"="plant"](area.searchArea);
relation["power"="plant"](area.searchArea);
);
// print results
out body;
>;
out skel qt;
请注意,您必须增加超时时间(例如增加到 300 秒),因为 25 秒的默认超时时间对于此类大型查询来说非常低。
此查询返回大约 800 个发电厂。如果你想从你的 python 脚本中调用这个查询,那么你必须将它转换回 Overpass 语言。这个{{geocodeArea:France}}
东西是 overpass turbo 的扩展,不被 Overpass API 支持。转到 Export -> Overpass QL,您将获得以下查询:
[out:json]
[timeout:180]
;
area(3602202162)->.searchArea;
(
node
["power"="plant"]
(area.searchArea);
way
["power"="plant"]
(area.searchArea);
relation
["power"="plant"]
(area.searchArea);
);
out body;
>;
out skel qt;
现在{{geocodeArea:France}}
已被area(3602202162)
. 区域是 Overpass API 中的一个特殊元素,在 OSM 中以不同的方式存在。区域 ID(在本例中)源自2202162(法国的关系 ID)+ 3600000000。请注意,每当法国的关系 ID 发生变化(极不可能)时,您都必须更新此数字。
您可以使用此 URL直接从您的应用程序调用此查询(也可以通过 overpass turbo 的导出功能获得)。