Индексирование координат Меркатора с MongoDB

В MongoDB (версии 2.6 и 3.6) у меня есть коллекция, документы которой содержат объект геойсон с координатами WGS84. Этот элемент документа (назовите его "geometry") индексируется с помощью индекса 2dSphere. Все геопространственные запросы работают нормально.

У меня есть другие данные, которые уже находятся в проекции Меркатора. Когда я пытаюсь записать это в один и тот же элемент документа, я, очевидно, получаю сообщение об ошибке, потому что оно выходит за пределы 2dSphere для широты и долготы.

Поскольку я знаю, что они являются mercator, я поместил их в другой элемент документа (все еще в формате geojson), который называется "mercator". Так что теперь у меня есть документы, которые имеют либо ключ "геометрии" для обычного широты / долготы, проиндексированный 2dsphere, либо ключ "меркатора", который в настоящее время не индексируется.

Опять же, геопространственные запросы в поле "геометрия" работают нормально. Однако, если я попытаюсь выполнить их в поле 'mercator', оно выдаст ошибку "неправильный гео-запрос". Вот запрос:

{
    "type": "RECORD-TYPE-THAT-HAS-MERCATOR-VALUES",
    "mercator": {
        "$geoIntersects": {
            "$geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [
                            -6261721.3571216,
                            3757032.814273
                        ],
                        [
                            -5009377.0856973,
                            3757032.814273
                        ],
                        [
                            -5009377.0856973,
                            2504688.5428487
                        ],
                        [
                            -6261721.3571216,
                            2504688.5428487
                        ],
                        [
                            -6261721.3571216,
                            3757032.814273
                        ]
                    ]
                ]
            }
        }
    }
}

Я вроде понимаю, почему я получаю ошибку, так как все гео-функции MongoDB предполагают wgs84.

Есть ли способ использовать какие-либо геопространственные возможности MongoDB (в частности, такие как $geoIntersects) в системах координат с кодировкой меркатора (или любой другой, не относящейся к wgs84)? Есть ли "лучшая практика" для, я полагаю, вы бы назвали их, регулярных запросов геометрии? Я бы предпочел не конвертировать обратно в wgs84, если мне не нужно.

Заранее спасибо.

0 ответов

Другие вопросы по тегам