使用立交桥涡轮获取库的边界框

问题描述 投票:0回答:1

我正在尝试获取每个建筑库所在的边界框。但是,我的查询非常不可靠。

这是我在 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;

以下结果显示,一个库有边界框,而一个库没有。

Image illustrating one library with a bounding box, and one without

我尝试下载norway.pbf文件,并为所有库制作一个单独的文件,并使用这两个数据集来获取库所在的最近的建筑边界框。但是,这需要很多时间,除非我在 google colab 中使用 cuspatial 和 A100 GPU 等库。我怀疑这是最佳方式。

可以通过在 pbf 文件上编写单个 OSM 查询或仅使用 overpass Turbo 来解决此问题吗?如果是这样,我该怎么做?

我不完全确定立交桥涡轮上是否存在图书馆所在边界框的数据。如果是这样的话,这个任务的复杂性可能会增加很多。

openstreetmap spatial bounding-box
1个回答
0
投票

您可以使用

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
组合在一个语句中。

© www.soinside.com 2019 - 2024. All rights reserved.