libspatialindex

Author:Marios Hadjieleftheriou
Contact:mhadji@gmail.com
Revision:1.9.3
Date:10/23/2019

The entire website is available as a single PDF at https://libspatialindex.org/libspatialindex.pdf

Introduction

Library Goals

The purpose of this library is to provide:
  1. An extensible framework that will support robust spatial indexing methods.
  2. Support for sophisticated spatial queries. Range, point location, nearest neighbor and k-nearest neighbor as well as parametric queries (defined by spatial constraints) should be easy to deploy and run.
  3. Easy to use interfaces for inserting, deleting and updating information.
  4. Wide variety of customization capabilities. Basic index and storage characteristics like the page size, node capacity, minimum fan-out, splitting algorithm, etc. should be easy to customize.
  5. Index persistence. Internal memory and external memory structures should be supported. Clustered and non-clustered indices should be easy to be persisted.

Features

  • Generic main memory and disk based storage managers.
  • R*-tree index (also supports linear and quadratic splitting).
  • MVR-tree index (a.k.a. PPR-tree).
  • TPR-tree index.
  • Advanced query capabilities, using Strategy and Visitor patterns.
  • Arbitrary shaped range queries, by defining generic geometry interfaces.
  • Large parameterization capabilities, including dimensionality, fill factor, node capacity, etc.
  • STR packing / bulk loading.

Warnings

  • The library is not thread-safe, even for seemingly read-only operations. Queries and updates must be run from within mutexes.

Licensing History

Note

libspatialindex changed from a LGPL to a MIT license as of the 1.8.0 release. For most situations, this should have no impact on the library’s use, but it should open it up for usage in situations that otherwise might have been problematic. Versions of libspatialindex prior to 1.8.0 were licensed LGPL 2.0, with the license description on this file. The codebase has been been updated, with licensing information replaced in headers and source files, to use the MIT license as of the 1.8.0+ release.

This change was made to support the inclusion of software depending on libspatialindex in static linking-only environments such as embedded systems and Apple’s iOS. libspatialindex versions prior to 1.8.0 will continue to live on as LGPL software, and developers can continue to contribute to them under terms of that license, but the main development effort, and ongoing maintenance, releases, and bug applications, will move forward using the new MIT license at http://github.com/libspatialindex/libspatialindex

License (MIT)

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Download

Current Release (MIT)

Binaries

Binary builds are available on via Conda Forge for OSX, Linux, and Windows. After installing Conda or Miniconda, install the library by issuing the following command:

conda install -c conda-forge libspatialindex=1.9.3

Additionally, packaging systems such as Debian, RedHat, Homebrew, MacPorts, and many others contain binaries for libspatialindex.

Past Release (MIT)

Windows Builds

Windows builds are provided for convenience. The full matrix might not be complete, and you will have to compile yourself using your favorite compiler configuration and cmake if something is missing.