空间资料库中的套用 mbr


空间资料库中的套用 mbr

文章插图
mbr(空间资料库中的套用)【空间资料库中的套用 mbr】Minimum bounding rectangle (MBR) 最小外包矩形
在已知物体的边界时 , 用其外接矩形的尺寸来刻画它的基本形状是最简单的方法 。
基本介绍中文名:最小外包矩形
外文名:mbr
属于:空间资料库中的套用
全称:Minimum bounding rectangle
Minimum bounding rectangle (MBR) 最小外包矩形在已知物体的边界时 , 用其外接矩形的尺寸来刻画它的基本形状是最简单的方法 。如果仅计算其在坐标系方向上的外接矩形是最简单的 , 只需计算物体边界点的最大和最小坐标值 , 就可得到物体的水平和垂直跨度 。但通常需要计算反映物体形状特徵的主轴方向上的长度和与之垂直方向上的宽度 , 这样的外接矩形是物体最小的外接矩形(MER-Minimum Enclosing Rectangle) 。计算MER的一种方法是将物体在90度範围内等间隔地旋转 , 每次记录其坐标系方向上的外接矩形参数 , 取其面积为最小的矩形的参数为主轴意义下的长度和宽度 。通常主轴可以通过矩(moments)的计算得到 , 也可以用求物体的最佳拟合直线的方法求出 。1、获取几何对象的最小外接矩形 , 并得到其面积值赋给变数AreaMin;2、对几何对象进行旋转一个角度Φ , 并求旋转后的几何对象的最小外接矩形,获得其面积值赋给变数AreaTmp;3、比较AreaTmp和AreaMin的大小 , 将小面积值赋给AreaMin , 此时的角度值赋给一个公共变数;4、循环执行第2、3步的过程 , 最终获取一个最小的面积值以及与之相对应的旋转角度;5、得到了最合适的旋转角度β后 , 我们可以将旋转后的矩形反旋转一个β角度 , 这样就可以获得我们需要的斜矩形了 。///////////////////////////////////////////////GetRgnBox得到包含一个区域的最小的矩形;判断两个区域的交集 , 一般是根据其中一个区域的边界点是否在另一个区域内 , 利用 PtInRegion来判断.GetRgnBoxThe GetRgnBox function retrieves the bounding rectangle of the specified region.int GetRgnBox(HRGN hrgn, // handle to a region LPRECT lprc // bounding rectangle); Parametershrgn [in] Handle to the region. lprc [out] Pointer to a RECT structure that receives the bounding rectangle in logical units.为了提高空间检索效率 , 有两个解决的途径 。首先 , 可以计算每个地物的MBR , 这样进行空间关係计算时 , 可以先通过外包矩形来判断 , 可以排除掉根本不可能具有相交或者包含关係的情形 , 然后再按照常规的算法(如射线算法等等)进行计算 。其次 , 考虑到採用MBR后 , 仍旧要计算每一个地物Ai , 当地物数目很多时 , 依然需要较长的查找时间 。解决该问题的一个方案是将资料库的空间範围进行分割 , 一般是划分成为矩形 , 然后计算并记录每个矩形包含或者相交的地物 , 形成空间索引 。在进行空间检索时 , 根据给定的点(或区域)得到其对应的索引块 , 这样就可以只判断与索引块相关的地物 , 从而减少了查找时间 。通常前一个操作称为精化 , 后一个操作叫做过滤 。