jnidzwetzki / spatial-index-java

Spatial indexing algorithms for java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Spatial indexing algorithms for java (sia4j)

Implementation of spatial indexing algorithms in java. At the moment, only an r-tree index is implemented by this project.

Build Status

Features of the R-tree implementation

  • Supports rectangle geometries
  • Supports n-dimensional data
  • Support serializing to file
  • Can be used as in-memory data structure
  • R-Tree can be serialized and accessed via memory mapped io. This is usefull for very large datasets.

Examples

Building the r-tree and execute a rane query

// Two entries with a two-dimensional bounding box
final SpatialIndexEntry entry1 = new SpatialIndexEntry(new Hyperrectangle(1d, 2d, 1d, 2d), "abc");
final SpatialIndexEntry entry2 = new SpatialIndexEntry(new Hyperrectangle(10d, 20d, 10d, 20d), "def");

final SpatialIndexBuilder index = new RTreeBuilder();
index.bulkInsert(Arrays.asList(entry1, entry2);

// Query data
final Hyperrectangle queryBox = new Hyperrectangle(1d, 1.5d, 1d, 1.5d);
final List<? extends SpatialIndexEntry> resultList = index.getEntriesForRegion(queryBox);

Write the r-tree into a file and read into memory

// Write and read to file
final File tempFile = File.createTempFile("rtree-", "-test");
final RandomAccessFile raf = new RandomAccessFile(tempFile, "rw");		
index.writeToFile(raf);
raf.close();

final AbstractRTreeReader indexRead = new RTreeMemoryReader();
final RandomAccessFile rafRead = new RandomAccessFile(tempFile, "r");
indexRead.readFromFile(rafRead);
rafRead.close();

Write the r-tree into a file and access the file via memory mapped io

// Write and read to file
final File tempFile = File.createTempFile("rtree-", "-test");
final RandomAccessFile raf = new RandomAccessFile(tempFile, "rw");		
index.writeToFile(raf);
raf.close();

final AbstractRTreeReader indexRead = new RTreeMMFReader();
final RandomAccessFile rafRead = new RandomAccessFile(tempFile, "r");
indexRead.readFromFile(rafRead);
rafRead.close();

About

Spatial indexing algorithms for java

License:Apache License 2.0


Languages

Language:Java 100.0%