Есть ли поддержка геодезического запроса DWithin в geomesa?

Я борюсь с запросами DWithin в geomesa.

Я получил много геоточек из OSM и хочу делать запросы DWithin.

У меня есть следующий код для запроса: val query = new Query("t1", ECQL.toFilter("DWITHIN(geo_point, POINT (14.453943 60.499611), 5000, meters)"))

Я ожидаю, что геомеса ответит точками не дальше 5000 метров от POINT (14.453943 60.499611) (точки 2,3,4 на карте). Но геомеса дает мне больше баллов, чем я ожидал. По этому запросу возвращаются все точки на карте (1,2,3,4,5,6).

Похоже, что geomesa не может должным образом отфильтровать точки для запроса DWithin, поскольку не поддерживает проверки геодезического расстояния.

Итак, есть ли способ заставить DWITHIN-запрос работать правильно (геодезическим образом) с geomesa?

Спасибо!

примеры баллов


person d-n-ust    schedule 17.04.2018    source источник
comment
Поскольку эта карта находится в Web Mercator, эллипс является правильной окружностью.   -  person Ian Turton    schedule 18.04.2018
comment
@IanTurton конечно, графическое представление может сбить с толку..   -  person d-n-ust    schedule 18.04.2018


Ответы (1)


GeoMesa использует функцию фильтра geotools dwithin для таких запросов. К сожалению, функция поддерживает только исходные расстояния (т.е. градусы в WGS84).

В настоящее время лучше всего использовать геоинструменты GeodeticCalculator класс, чтобы создать полигон, покрывающий область запроса, и использовать его в фильтре пересечений. Кроме того, вы можете отфильтровать результаты с помощью геодезического калькулятора.

В дальнейшем я создал тикет, чтобы лучше обрабатывать этот вариант использования в GeoMesa: https://geomesa.atlassian.net/browse/GEOMESA-2263

person Emilio Lahr-Vivaz    schedule 17.04.2018
comment
Спасибо за разъяснение и за создание тикета! - person d-n-ust; 18.04.2018