SASGIS - SAS.Планета
View Issue Details
0003211SAS.Планета[All Projects] Багpublic10-04-2017 18:2322-06-2018 18:37
Robbi 
zed 
normalmajorrandom
resolvedfixed 
Windows7Professional
160707 
181221181221 
0003211: База меток в MongoDB: Отображение протяжённых объектов из меток
Есть большой полигон. При отображении на карте произвольно пропадают и появляются его части или вся видимая часть при перемещении - зуммировании карты. Трек хранится в монго, если это имеет значение.
mongo, метки
related to 0003212resolved zed База меток в MongoDB: Не полностью отображается список меток 
Issue History
10-04-2017 18:23RobbiNew Issue
10-04-2017 18:33vdemidovRelationship addedrelated to 0003212
10-04-2017 18:33vdemidovTag Attached: mongo
10-04-2017 18:33vdemidovTag Attached: метки
13-04-2017 06:14zedNote Added: 0017886
13-04-2017 09:58vdemidovStatusnew => feedback
13-04-2017 16:56RobbiNote Added: 0017893
13-04-2017 16:56RobbiStatusfeedback => new
14-04-2017 06:32zedNote Added: 0017894
15-04-2017 13:11zedNote Added: 0017895
15-04-2017 13:15zedNote Edited: 0017894bug_revision_view_page.php?bugnote_id=17894#r7164
15-04-2017 13:16zedNote Edited: 0017894bug_revision_view_page.php?bugnote_id=17894#r7165
24-04-2017 15:33vdemidovSummaryОтображение протяжённых объектов из меток => База меток в Mongo. Отображение протяжённых объектов из меток
26-04-2017 08:27zedProduct Version.Nightly => 160707
26-04-2017 08:27zedSummaryБаза меток в Mongo. Отображение протяжённых объектов из меток => База меток в MongoDB: Отображение протяжённых объектов из меток
26-04-2017 08:32zedNote Added: 0017916
26-04-2017 08:33zedStatusnew => feedback
01-05-2017 17:03RobbiNote Added: 0017920
01-05-2017 17:03RobbiStatusfeedback => new
01-05-2017 17:37zedNote Added: 0017922
05-05-2017 17:21zedStatusnew => feedback
18-06-2018 10:57zedNote Added: 0018334
22-06-2018 18:37zedNote Added: 0018337
22-06-2018 18:37zedStatusfeedback => resolved
22-06-2018 18:37zedFixed in Version => 181221
22-06-2018 18:37zedResolutionopen => fixed
22-06-2018 18:37zedAssigned To => zed
22-06-2018 18:37zedTarget Version => 181221

Notes
(0017886)
zed   
13-04-2017 06:14   
Можете выложить этот трек?
(0017893)
Robbi   
13-04-2017 16:56   
треки в этом архиве https://yadi.sk/d/QT6BP98BcFJnF
при центре экрана примерно в этой точке N53°59'47,60" E124°14'02,95" трек то пропадает то появляется на разных масштабах
(0017894)
zed   
14-04-2017 06:32   
(edited on: 15-04-2017 13:16)
Да, на z10 отображается, а на z11 пропадает. Глючит гео-индекс монги. Вот на такой запрос трек находится:

{$and:[
  {mGeoJsonIdx:{$geoIntersects:{$geometry:{type:"Polygon",coordinates:[[
    [120.234375,55.178867663282],
    [127.44140625,55.178867663282],
    [127.44140625,52.6963610782745],
    [120.234375,52.6963610782745],
    [120.234375,55.178867663282]]]}}}},
  {$or:[{mGeoType:1},{mGeoLonSize:{$gte:16384}},{mGeoLatSize:{$gte:9641}}]}
]}

а вот на такой, нет:

{$and:[
  {mGeoJsonIdx:{$geoIntersects:{$geometry:{type:"Polygon",coordinates:[[
    [122.6953125,54.4700376128058],
    [125.595703125,54.4700376128058],
    [125.595703125,53.4357192066942],
    [122.6953125,53.4357192066942],
    [122.6953125,54.4700376128058]]]}}}},
  {$or:[{mGeoType:1},{mGeoLonSize:{$gte:8192}},{mGeoLatSize:{$gte:4820}}]}
]}

Соответственно, выхода 2:
- думать, почему индекс не хочет работать и возможно ли его безболезненно "подкрутить"
- отказаться от индекса и выборку геометрии сделать так же, как и для СУБД. Но в этом случае, схема БД изменится и сломается обратная совместимость для монги.

(0017895)
zed   
15-04-2017 13:11   
Немного погуглил и поэкспериментировал и пришёл к выводу, что это фатальный недостаток индекса монги - не умеет она нормально работать с объектами, размером больше чем в пол Земли. Причём, это касается как геометрии в БД, так и области поиска.

В версии 3.0 они сделали попытку победить проблему с областью поиска (MongoDB 3.0 features: Big Polygon), но у себя в тестах на 3.4.2 я не заметил кардинальных улучшений (простая метка так и пропадает на z4..z6).

В общем, дело швах и по-моему надо переходить на схему, аналогичную СУБД.
(0017916)
zed   
26-04-2017 08:32   
Мне нужен какой-то фидбек от пользователей, использующих MongoDB для хранения меток. Мне стОит отказаться от гео-индекса монги и переделать схему или нет?
(0017920)
Robbi   
01-05-2017 17:03   
На мой взгляд тут всего два варианта. Или делать в обход гео-индекса или пинать разработчиков MongoDB. Интересно, сколько помимо меня пользователей MongoDB в связке с SASPlanet
(0017922)
zed   
01-05-2017 17:37   
Я монгой не пользуюсь и пинать её разработчиков не буду.
(0018334)
zed   
18-06-2018 10:57   
Да, таки надо отказываться от гео-индекса и переходить на схему как у СУБД.

Планирую заняться этим вопросом в ближайшую неделю, если никто сильно не возражает.
(0018337)
zed   
22-06-2018 18:37   
Переделал. Чтобы перенести существующие метки нужно сделать экспорт (например в SQLite), а затем импорт. Старые метки в новой версии отображаться на карте не будут (по понятным причинам), но в "Управлении метками" всё останется на своём месте.