我正在尝试获取每个建筑库所在的边界框。但是,我的查询非常不可靠。
这是我在 overpass Turbo 中使用的查询:
[out:json][timeout:1000];
area[name="Trondheim"]->.searchArea;
node["amenity"="library"](area.searchArea)->.libs;
(
way["building"](area.searchArea)(bn.libs);
relation["building"](area.searchArea)(bn.libs);
)->.structures;
(
.libs;
.structures;
);
out body geom;
以下结果显示,一个库有边界框,而一个库没有。
我尝试下载norway.pbf文件,并为所有库制作一个单独的文件,并使用这两个数据集来获取库所在的最近的建筑边界框。但是,这需要很多时间,除非我在 google colab 中使用 cuspatial 和 A100 GPU 等库。我怀疑这是最佳方式。
可以通过在 pbf 文件上编写单个 OSM 查询或仅使用 overpass Turbo 来解决此问题吗?如果是这样,我该怎么做?
我不完全确定立交桥涡轮上是否存在图书馆所在边界框的数据。如果是这样的话,这个任务的复杂性可能会增加很多。
您可以使用
is_in
运算符,它提供包围一个点的所有区域。除此之外,还需要数据透视表:
[out:json][timeout:1000];
area[name="Trondheim"]->.searchArea;
node["amenity"="library"](area.searchArea)->.libs;
.libs is_in;
wr["building"](pivot)->.structures;
(
.libs;
.structures;
);
out body geom;
只是一个小小的补充:
way
和relation
可以通过使用wr
组合在一个语句中。