首页 > 解决方案 > 查询镶木地板文件 - 检查正方形是否在其他正方形内

问题描述

在 python 项目中,我打开 *.las 点云数据。这里我计算点云数据(正方形/矩形)的minY、minX、maxY、maxX值。

有一个巨大的镶木地板文件,存在建筑物的边界,就像图像中的蓝色方块一样。这个镶木地板文件有表格:

buildingMinY,buildingMinX,buildingMaxY,buildingMaxX。

查询此文件以检查点云数据中是否存在建筑物的最快执行方式是什么。

伪代码:检查 buildingMinY > minY AND < maxY ?? buildingMaxY > minY AND < maxY ??

蓝色是建筑,红色是点云数据

标签: pythonsql

解决方案


这个问题 应该是你的重复,但它仍然没有效率。

您所要做的就是检查内侧是否在外侧的范围内。由于您已经知道对于任何维度,minD < maxD,您可以跳过很多比较。只需确保订单是您需要的:

if buildingMinX < minX and maxX < buildingMaxX and \
   buildingMinY < minY and maxY < buildingMaxY :
    # small rectangle is inside large one ... process the hit

如果您熟悉numpy或任何其他矢量化包,您可以快速检查整个数据框。


推荐阅读