有没有什么好的方法可以在osm文件中识别哪个building:part属于哪个建筑
Is there a good way to identify which building:part belongs to which building in an osm file
我正在尝试使用 osm 数据创建 3D 建筑并将它们放在地形表面上。有没有一种好方法来识别哪些 building/building:part 属于一起。
我正在使用 OSMSharp 来解析 osm 文件,但我没有找到一种方法来检查 building/building: 哪个部分属于一起。
标记为 building:part
的建筑物的所有 方式 应包含在 type=building
的 关系 中,根据到 OSM wiki. An example of such a relation is relation 9533751.
如果不存在这样的关系,那么您只能猜测。一个好的开始是假设共享至少一个 节点 的所有 building:part
方式确实属于一起。
OSM 中为 3D 建筑物建立的标记标准称为 "Simple 3D Buildings" (S3DB)。
根据这个标准,有两种有效情况:
- 如果存在 type=building 关系,则建筑物的所有部分都必须是它的成员。
- 任何 building:part 不属于这种关系的区域必须在几何上恰好包含在一个建筑物轮廓内,并且属于该建筑物。
所以对于按照标准映射的数据,应该没有猜测。但是,应用程序应该如何处理不正确的数据是未定义的。 (一些常见的错误包括与建筑物轮廓重叠但未完全包含在其中的建筑物部分,以及未完全分解成部分的建筑物。)
与 scai 的回答中所述相反,建立关系 不是 应该始终存在的东西 – 截至 2019 年,S3DB 仅在复杂情况下需要它们,否则模棱两可。你也不能依赖它们在实践中存在,因为 90% 的建筑部件不是关系的成员:关系中有 1M building:part elements, but just 100k part memberships。此外,没有进一步的要求,例如 building:part 区域需要与其建筑物轮廓共享节点。 (尽管如果您只是想快速入门,那可能是 "good enough" 开始。)
我正在尝试使用 osm 数据创建 3D 建筑并将它们放在地形表面上。有没有一种好方法来识别哪些 building/building:part 属于一起。
我正在使用 OSMSharp 来解析 osm 文件,但我没有找到一种方法来检查 building/building: 哪个部分属于一起。
标记为 building:part
的建筑物的所有 方式 应包含在 type=building
的 关系 中,根据到 OSM wiki. An example of such a relation is relation 9533751.
如果不存在这样的关系,那么您只能猜测。一个好的开始是假设共享至少一个 节点 的所有 building:part
方式确实属于一起。
OSM 中为 3D 建筑物建立的标记标准称为 "Simple 3D Buildings" (S3DB)。
根据这个标准,有两种有效情况:
- 如果存在 type=building 关系,则建筑物的所有部分都必须是它的成员。
- 任何 building:part 不属于这种关系的区域必须在几何上恰好包含在一个建筑物轮廓内,并且属于该建筑物。
所以对于按照标准映射的数据,应该没有猜测。但是,应用程序应该如何处理不正确的数据是未定义的。 (一些常见的错误包括与建筑物轮廓重叠但未完全包含在其中的建筑物部分,以及未完全分解成部分的建筑物。)
与 scai 的回答中所述相反,建立关系 不是 应该始终存在的东西 – 截至 2019 年,S3DB 仅在复杂情况下需要它们,否则模棱两可。你也不能依赖它们在实践中存在,因为 90% 的建筑部件不是关系的成员:关系中有 1M building:part elements, but just 100k part memberships。此外,没有进一步的要求,例如 building:part 区域需要与其建筑物轮廓共享节点。 (尽管如果您只是想快速入门,那可能是 "good enough" 开始。)