Search code examples
hbasegeospatialbounding-boxgeotoolsgeomesa

Geomesa bounding box query Accuracy


Geomesa is a spatial temporal database, more details are available here: http://www.geomesa.org/

I am trying the example tutorial, by setting up Hbase database with it. I am running the Hbase QuickStart tutorial http://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html

The tutorial runs fine, below are some of the problems which I notice in the bounding box query.

Say the bounding box query is like (30,60) to (31,61). Which means I want to do spatial query between latitute 30 to 31 and longitude 60 to 61. The results which I get from geomesa include the some of the points whose locations are like:
(29.5,61.5)
(29.6,61.3) and so-on.
Clearly, these points are not within the bounding box. I want to ask, is there some way to solve this problem. Below are some of my questions to the Geomesa team:

1. What is the bounding box query accuracy by default ?
2. Is there any way to specify somewhere the accuracy of boundung box query, so that it leave the points which are outside of bounding box.


I tried searching through the documentation, and settings but couldn't find anything working for me yet.


Solution

  • I've seen this with Accumulo backed GeoMesa. There is a geotools Hint on the query or datastore called looseBoundingBox.

    It is by design turning your query bounding box into an approximate and always larger bounding box, based on the space filling curve used. The looseBoundingBox set to true says it is fine to use these approximate results. For false, it evaluates each returned result according to the Filter, thus trimming those extra results.

    Depending on use case looseBoundingBox may be fine, like for making a map, extra features will be clipped out anyway.

    So to answer number 2, try adding looseBoundingBox hint to your query with false. See the GeoTools query docs.