I am struggling with DWithin queries in geomesa.
I have ingested many geo points from OSM and want to make DWithin queries.
I have the following code for query:
val query = new Query("t1", ECQL.toFilter("DWITHIN(geo_point, POINT (14.453943 60.499611), 5000, meters)"))
I expect geomesa to answer with the points not far then 5000 meters from POINT (14.453943 60.499611)
(points 2,3,4 on the map).
But geomesa gives me more points than expected.
All the points in the map (1,2,3,4,5,6) are returned for this query.
It seems that geomesa can't properly filter out the points for DWithin query since it does not have support for geodesic distance checks.
So, is there any way to make DWITHIN query work correctly (in a geodesic manner) with geomesa?
Thanks!
GeoMesa uses the geotools dwithin filter function for such queries. Unfortunately, the function only supports native distances (i.e. degrees in WGS84).
Currently, your best bet is to use the geotools GeodeticCalculator class to create a polygon covering your query area and use that in an intersects filter. Alternatively, you could post-filter the results using the Geodetic Calculator.
Going forward, I've created a ticket to handle this use case better in GeoMesa: https://geomesa.atlassian.net/browse/GEOMESA-2263