========================================================================= HnSRTree: the SR-tree library Version 2.0 (beta 6) Mar. 9, 2010 Norio KATAYAMA <katayama@nii.ac.jp> Copyright (C) 1997,1998,1999,2000,2002,2003,2010 Norio Katayama This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA $Id: README,v 1.17 2010/03/10 03:01:52 katayama Exp $ ========================================================================= Introduction: This is an implementation of the SR-tree. The SR-tree is a multidimensional index structure designed for the acceleration of the nearest-neighbor search of high-dimensional points in the Euclidean space. The SR-tree is a disk-based index structure and applicable to large data sets, say, a database containing more than 10,000 points. The efficiency of the SR-tree depends on multiple factors, i.e., data distribution, dimensionality of points, etc. According to our experimental evaluation, the SR-tree provides satisfactory performance for the data sets containing more than 40,000 points in 24 to 48 dimensional space which are feature vectors (color histograms) of natural photo images. The major part of this library is written in C++. However, the interface for the C language programs is also provided. This library provides the following features: 1. Dynamic construction methods: * creating an empty index file. * opening an existing index file. * closing an index file. * storing a data point into an index file. * removing a data point from an index file. 2. Static construction methods: * building an index for a given data set. 3. Search methods: * running nearest-neighbor search with an index. * running colored nearest-neighbor search with an index. * running range search (window search) with an index. 4. Miscellaneous methods: * obtaining profile information of an index manipulation. The usage of the library is described in the HTML files contained in the `doc' directory. Please, refer to `doc/index.html' for details. Tested platforms: (1) Hardware : Sun Blade 2500 Operating System : SunOS 5.9 Compiler : GCC 4.1.2, Sun C++ 5.9 (Sun Studio 12) (2) Hardware : Dell PowerEdge 6950 Operating System : Red Hat Enterprise Linux 5 (Linux kernel 2.6.18) Compiler : GCC 4.1.2 (3) Hardware : Dell Precision 670 Operating System : Windows XP (32bit) Compiler : Visual C++ 9.0 (Visual Studio 2008) (4) Hardware : Sony VAIO RX75 Operating System : Windows XP (32bit) Compiler : Visual C++ 6.0 (Visual Studio 6.0) How to compile: A. UNIX (1) run `configure' in this directory. % ./configure You can specify the initial values for variables by setting them in the environment. For example, you can specify the name of the C and C++ compilers by setting them to the variable `CC' and `CXX' respectively. (sh) $ CC=cc CXX=CC ./configure (csh) % env CC=cc CXX=CC ./configure (2) run `make' as follows: % make includes % make all B. Windows (0) set up Visual C++ to work in the command line interface. This library is intended to be compiled in the command line interface, i.e., `Command Prompt window' (or `DOS window'). On using Visual C++ in the command line interface, please be sure that the environment variables (e.g., PATH, INCLUDE, LIB) have been set appropriately. When you installed Visual C++ on your computer, a batch file named `VCVARS32.BAT' should have been generated in the `bin' directory of Visual C++, e.g., `C:\Program Files\Microsoft Visual Studio 9.0\VC\bin'. This file defines the environment variables necessary to use Visual C++ in the command line interface. Please run this batch file before using Visual C++ in the `Command Prompt' window. Alternatively, you can set the environment variables as `user environment variables' in the control panel. (1) change the working directory to the top of the source tree, i.e., the directory containing this README file. C:> cd ...wherever...\HnSRTree-2.0beta6 (2) run `nmake' as follows: C:> nmake How to install: A. UNIX % make install The destination of the header files and the object code library can be specified by setting options to the command `configure'. Usage of `configure' will be shown by running `configure --help'. By default, the header files will be copied into `/usr/local/include/HnSRTree' and the object code library will be copied into `/usr/local/lib'. B. Windows The header file directory (`include/HnSRTree') and the library file `lib/libHnSRTree.lib' should be placed in a directory which is included in the search paths of the C/C++ compiler. Generally, the search paths are specified by the `INCLUDE' and `LIB' environment variables. On execution, the dynamic link library 'lib/libHnSRTree.dll' should be placed in a directory which is included in the command search path. How to test: (0) compile source files by following the above instructions. (1) change the working directory to the `test' directory. % cd test (2) run the `doTest' script (`doTest.bat' on Windows). % doTest How to use: Please refer to the HTML file `doc/index.html'. History: 10/15/1996 Version 1.0 is released. 11/22/1996 The range query functions, HnSRTreeGetFirst() and HnSRTreeGetNext(), is added to the C language interface. 11/22/1996 Version 1.1 is released. 12/09/1996 The access mode is permitted and the diagnosis is returned on opening files. 12/09/1996 Version 1.2 is released. 06/02/1997 The GNU Library General Public License is applied. 06/02/1997 Version 1.3 is released. 12/02/1997 The file `README' is slightly modified. Version 1.3.1 is released. 06/10/2000 Version 2.0 (beta 1) is released. * The source code is refined with respect to CPU time. * The breadth-first NN-search is implemented. * The profiling capability is implemented. * The colored NN-search is implemented. * The static construction method based on the VAMSplit is implemented. 09/29/2000 Version 2.0 (beta 2) is released. * The description on the static construction method is added. 12/01/2000 Version 2.0 (beta 3) is released. * Minor bugs are fixed: - The library crashes when an index file is empty and the query rectangle of the method ``getFirst()'' is ``NULL''. - The library crashes when the argument ``properties'' of the index construction methods (e.g., ``HnSRTreeFileSt_create()'' and ``HnSRTreeFileSt_build()'') is ``NULL''. 12/15/2000 Version 2.0 (beta 4) is released. * A minor bug is fixed. `checkIndex' might have crashed when the library is compiled by GCC on x86 due to the side effect of round-off error. 09/14/2002 Version 2.0 (beta 5) is released. * The source code is adapted to FreeBSD and Windows. * The spherical range search is implemented. 04/30/2003 Version 2.0 (beta 5a) is released. * The memory initialization of HnStringBuffer is corrected. 03/09/2010 Version 2.0 (beta 6) is released. * Adapted to GCC 4 and Visual C++ 9.0.
PierceLBrooks/HnSRTree
Unofficial fork of Norio Katayama's SR Tree spatial indexing implementation for high-dimensional data
C++NOASSERTION