资源简介
R树在数据库等领域做出的功绩是非常显著的,它很好的解决了在高维空间搜索等问题,该资料为其简单的实现和应用哦。
代码片段和文件信息
/****************************************************************************
* RTree.C
*
* MODULE: R-Tree library
*
* AUTHOR(S): Antonin Guttman - original code
* Daniel Green (green@superliminal.com) - major clean-up
* and implementation of bounding spheres
*
* PURPOSE: Multi Dimensional Index
*
* COPYRIGHT: (C) 2001 by the GRASS Development Team
*
* This program is free software under the GNU General Public
* License (>=v2). Read the file COPYING that comes with GRASS
* for details.
*
* LAST MODIFY: ZhangLiang (cheungmine@gmail.com) - 2007-11
*****************************************************************************/
#include
#include
#include
#include
#include
#include “rtree.h“
#define METHODS 1
/* variables for finding a partition */
typedef struct _RTREEPARTITION
{
int partition[MAXCARD+1];
int total;
int minfill;
int taken[MAXCARD+1];
int count[2];
RTREEMBR cover[2];
REALTYPE area[2];
} RTREEPARTITION;
RTREEBRANCH BranchBuf[MAXCARD+1];
int BranchCount;
RTREEMBR CoverSplit;
REALTYPE CoverSplitArea;
RTREEPARTITION Partitions[METHODS];
#define BIG_NUM (FLT_MAX/4.0)
#define INVALID_RECT(x) ((x)->bound[0] > (x)->bound[DIMS_NUMB])
#define MIN(a b) ((a) < (b) ? (a) : (b))
#define MAX(a b) ((a) > (b) ? (a) : (b))
int NODECARD = MAXCARD;
int LEAFCARD = MAXCARD;
/* balance criteria for node splitting */
/* NOTE: can be changed if needed. */
#define MINNODEFILL (NODECARD / 2)
#define MINLEAFFILL (LEAFCARD / 2)
#define MAXKIDS(n) ((n)->level > 0 ? NODECARD : LEAFCARD)
#define MINFILL(n) ((n)->level > 0 ? MINNODEFILL : MINLEAFFILL)
static int set_max(int *which int new_max)
{
if(2 > new_max || new_max > MAXCARD)
return 0;
*which = new_max;
return 1;
}
/**
* Load branch buffer with branches from full node plus the extra branch.
*/
static void _RTreeGetBranches( RTREENODE *node RTREEBRANCH *br)
{
int i;
assert(node && br);
/* load the branch buffer */
for (i=0; i {
assert(node->branch[i].child); /* n should have every entry full */
BranchBuf[i] = node->branch[i];
}
BranchBuf[MAXKIDS(node)] = *br;
BranchCount = MAXKIDS(node) + 1;
/* calculate mbr containing all in the set */
CoverSplit = BranchBuf[0].mbr;
for (i=1; i {
CoverSplit = RTreeCombineRect(&CoverSplit &BranchBuf[i].mbr);
}
CoverSplitArea = RTreeRectSphericalVolume(&CoverSplit);
RTreeInitNode(node);
}
/**
* Put a branch in one of the groups.
*/
static void _RTreeClassify(int i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4601517 2014-08-17 21:39 Rtree\Data10.asc
文件 186227 2014-08-17 21:39 Rtree\Data20.asc
文件 118272 2014-11-11 17:29 Rtree\Debug\Rtree.exe
文件 738308 2014-11-11 17:29 Rtree\Debug\Rtree.ilk
文件 1018880 2014-11-11 17:29 Rtree\Debug\Rtree.pdb
文件 6017162 2014-08-07 09:58 Rtree\NoiseModel1.asc
文件 4745286 2014-11-11 17:30 Rtree\Rtree\Data1.asc
文件 5036878 2014-08-19 12:26 Rtree\Rtree\Data10.asc
文件 430664 2014-11-11 17:30 Rtree\Rtree\Data2.asc
文件 139072 2014-08-19 12:26 Rtree\Rtree\Data20.asc
文件 620098 2014-11-11 17:30 Rtree\Rtree\Data3.asc
文件 307646 2014-08-20 14:35 Rtree\Rtree\Data3_14_8.asc
文件 337550 2014-08-20 14:19 Rtree\Rtree\Data3_18_8.asc
文件 4555852 2014-11-11 17:30 Rtree\Rtree\Data4.asc
文件 4868304 2014-08-20 14:35 Rtree\Rtree\Data4_14_8.asc
文件 4838400 2014-08-20 14:19 Rtree\Rtree\Data4_18_8.asc
文件 8810 2014-11-11 17:29 Rtree\Rtree\Debug\BuildLog.htm
文件 65 2014-11-11 17:29 Rtree\Rtree\Debug\mt.dep
文件 663 2014-08-19 12:21 Rtree\Rtree\Debug\Rtree.exe.em
文件 728 2014-08-19 12:21 Rtree\Rtree\Debug\Rtree.exe.em
文件 621 2014-11-11 17:29 Rtree\Rtree\Debug\Rtree.exe.intermediate.manifest
文件 73681 2014-08-20 15:12 Rtree\Rtree\Debug\RTree.obj
文件 312242 2014-11-11 17:29 Rtree\Rtree\Debug\TestNoise.obj
文件 265216 2014-11-11 17:29 Rtree\Rtree\Debug\vc90.idb
文件 266240 2014-11-11 17:29 Rtree\Rtree\Debug\vc90.pdb
文件 170005 2014-11-11 17:30 Rtree\Rtree\density
文件 469458 2014-08-19 12:26 Rtree\Rtree\density0
文件 30244 2014-08-06 19:54 Rtree\Rtree\RTree.cpp
文件 6594 2014-08-20 15:12 Rtree\Rtree\RTree.h
文件 4037 2014-08-07 21:32 Rtree\Rtree\Rtree.vcproj
............此处省略14个文件信息
- 上一篇:UltraEdit_14.20.0.1035中文版
- 下一篇:齿轮项故障诊断vi
相关资源
- STM32F407ZG实现4*4矩阵键盘
- 外卖网的设计与实现
- Halcon实现的基于立体视觉的三维平面
- 基于ARM嵌入式系统的通用Bootloader的设
- I2C从设备接收数据verilog代码实现
- 操作系统设计与实现第三版pdf英文版
- stm32 按键实现短按,长按,双击,组
- PSpice电路原理与实现
- 数据库系统实现 英文第二版 [Databa<
- 网上订餐系统的设计及实现
- 百度鹰眼API 轨迹追踪的实现
- QTableWidget表头添加复选框实现全选功
- 网络入侵检测系统的设计与实现PDF版
- 同态加密算法实现
- Opengl实现的Ray Casting 光线投射算法
- MIMO在GNURadio中的实现
- servlet的web电话本简单实现
- 8 位cpu的verilog实现
- 深度卷积生成对抗网络TensorFlow代码实
- 模拟和数字滤波器设计与实现.pdf
- RS255239和217卷积码的级联实现代码
- (开源) Ring3下的DLL注入工具 x64(
- STM32实现GPRS与服务器数据传输
- 智能家居系统实现源代码结构不错,
- 基于Web的校园网二手商品交易系统的
- STM32做的一个MP4 实现了长文件名,M
- 电影购票系统
- 安卓app实现前后台通信案例二手车交
- malloc实现源码
- AES加密、解密代码实现C、SV、Verilog
评论
共有 条评论