Каков допуск по умолчанию для ETRS89 в геопространственных операциях, если пользователь не указывает их? - PullRequest
1 голос
/ 08 января 2020

В Marklogi c Я использую cts.geospatialRegionQuery для поиска документов, которые содержат (проиндексированную) геометрию, которая пересекается с геометрией, с которой я ищу.

В индексе геопространственной области в качестве системы координат используется etrs89/double. Все геометрии в данных имеют 9 десятичных знаков.

Согласно документации Marklogi c Прикладные программы геопространственного поиска :

[...] Запросы геопространственных данных с индексами одинарной точности с точностью до 1 метра для систем координат geodeti c.

Поэтому я ожидал бы, что мои запросы будут иметь точность менее метра. Тем не менее, я получаю результаты поиска от cts.geospatialRegionQuery, содержащего геометрию на расстоянии ~ 5 метров от моей геометрии поиска. Насколько я вижу, единственной причиной этого может быть параметр tolerance, который я еще не определяю и поэтому использую по умолчанию.

В документации упоминается, что

Если вы явно не установите допуск, MarkLogi c использует допуск по умолчанию, соответствующий системе координат. Чтобы гарантировать точность, MarkLogi c применяет минимальный допуск для каждой системы координат.

Это подводит нас к актуальному вопросу:

Что такое стандартное (и минимальное) допуск для система координат etrs89 в Марклоги c?

РЕДАКТИРОВАТЬ: Подробно рассмотрел проблему с помощью службы поддержки Marklogi c и обнаружил причину низкой точности моих геопространственных запросов.

Перед использованием cts.geospatialRegionQuery я проанализировал геометрию поиска с помощью geo.parseWkt. Эта функция не позволяет вам явно установить систему координат, которая будет использоваться, и поэтому использует систему координат, заданную в настройках AppServer. По умолчанию это wgs84 одинарной точности. Это привело к потере 2-3 цифр в моей геометрии поиска.

После установки системы координат на etrs89 / double в настройках AppServer geo.parseWkt больше не снижал точность геометрии поиска, и мои геопространственные запросы имели ожидаемую точность 5 мм.

Ответы [ 2 ]

1 голос
/ 16 января 2020

Закрытие l oop по этому вопросу с помощью обратной связи, предоставленной MarkLogi c support:

При настройке запроса geo.ParseWkt использовался для создания POINT, и поскольку эта функция не принимает система координат или точность в качестве параметров результат был усечен до 8 значащих цифр по умолчанию. В Локаторе они работали с уменьшенной точностью от 0,5 см до 5 м, что привело к наблюдаемым результатам.

geo.parseWkt("POINT(5.176605744 52.045696539)");

Результаты:

POINT(5.1766057 52.045697)

При использовании JavaScript решение состоит в том, чтобы установите правильную систему координат в AppServer, см. https://docs.marklogic.com/guide/search-dev/geospatial#id_77035 и следующий пример (написанный на XQuery):

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";

let $config := admin:get-configuration()
let $groupid := admin:group-get-id($config, "Default")
return admin:save-configuration(
admin:appserver-set-coordinate-system(
$config,
admin:appserver-get-id($config, $groupid, "App-Services"),
"etrs89/double")

Как только это было сделано, ТОЧКА, созданная с помощью geo.ParseWkt, имела правильный уровень точности.

С помощью XQuery вы можете объявить систему координат непосредственно в запросе:

declare option xdmp:coordinate-system "etrs89/double";
1 голос
/ 10 января 2020

Допуск по умолчанию для систем координат WGS84 и ETRS89 составляет 0,5 см для двойной точности и 5 метров для одинарной точности.

...