DSpace/DSpace — pull request #316 by bbkopsas (2013-10-04 14:46:29+00:00)
Title: Create Spatial Index and Spatial Query

The following code allows the indexing and querying on "spatial" metadata

A resource may refer to a geographic area and this area can be defined in metadata as geographic bounding box (west edge , east edge , north edge , south edge )

![image](https://f.cloud.github.com/assets/2056790/1269750/6b16e2f4-2cfe-11e3-9a49-dd0470a0a0ed.png)

If an item's bounding box is present in metadata then it can be indexed and users can perform spatial queries (propably by selecting a geographic area on a map) to get results that refers to a specific geographic area. An implementation of this functionality can be found at the following link:
http://geo-dspace.aegean.gr/xmlui/handle/123456789/4

How this works:
User should create 4 custom metadata fields:
[schema].GeographicBoundingBox.EastBoundLongtitude
[schema].GeographicBoundingBox.WestBoundLongtitude
[schema].GeographicBoundingBox.NorthBoundLongtitude
[schema].GeographicBoundingBox.SouthBoundLongtitude

(In a more abstract implementation the "spatial" metadata fields could be defined in dspace.cfg.)

After an item is submitted Lucene creates Quadtree spatial index for this item.
When the user perform a spatial search, he passes a bounding box to lucene which compares this with spatial indexes based on a spatial Operation . For example, if the spatial operation used is "intersect" then Lucene will return all items that their's bounding box intersects with user's passed bounding box.

This requests contains modification only in dspace Kernel API. But there is a need for modifications in XMLUI API and stylesheets in order for this functionality to be fully operational

Notes:
Lucene supports spatial searches from 4 version
This code was tested in Lucene 4.3.0 version
The coordination System is WGS84