InternalError: слишком много рекурсии при вставке большого полигона

#mongodb #recursion #insert #geospatial

#mongodb #рекурсия #вставить #геопространственный

Вопрос:

У меня есть файл GeoJSON, содержащий набор окрестностей с их соответствующей геометрией, и я хочу добавить его в свою коллекцию MongoDB. Проблема в том, что полигоны содержат слишком много точек. Это один из них (вставлен в ссылку, потому что он слишком большой):

http://hastebin.com/ukekekayad.pl

2 из 3 раз я получаю ошибку InternalError: слишком много рекурсии Как я могу предотвратить это? Я не могу уменьшить количество точек автоматическим способом, так как полигон может потерять свою правильную форму.

Есть предложения?

Комментарии:

1. Какой код выполняет рекурсию? Добавление полигона в базу данных не является естественным рекурсивным алгоритмом, поэтому я надеюсь, что вы контролируете исходный код.

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

Ответ №1:

MongoDB, вероятно, каким-то образом индексирует точки во время вставки, на самом деле не знает, какой предел.

Альтернативным решением является упрощение координат с помощью следующего инструмента.

http://www.mapshaper.org/