Обработка больших наборов данных по листам
Чтобы улучшить производительность и масштабируемость таких инструментов наложения объектов, как Объединение (Union) и Пересечение (Intersect), используется оперативная логика, называемая адаптивным разбиением на листы. Использование этой логики запускается, если данные не получается обработать по причине нехватки физической памяти. Чтобы остаться в пределах физической памяти, которая значительно улучшает производительность, последовательно обрабатываются фрагменты (поднаборы) исходного экстента. Пространственные объекты, расположенные в местах деления на фрагменты (листы), разбиваются на краях листа и собираются в один пространственный объект в процессе последней стадии обработки. Вершины, добавленные по краям листа, останутся в выходных объектах. Границы также могут остаться в выходном классе объектов, если разбитый пространственный объект настолько большой, что после обработки по листам нет возможности обратно собрать пространственный объект, используя доступную память.
Зачем делить данные?
Анализ наложения лучше всего выполняется, когда всю обработку можно выполнить в оперативной памяти компьютера (или RAM). Это не всегда бывает возможно при работе с наборами данных, которые содержат очень много пространственных объектов или очень сложные пространственные объекты (состоящие из тысяч или даже миллионов вершин). Если разбиение на листы не использовать, обработка происходит в физической памяти, пока хватает ее объема, используется также виртуальная память, а когда исчерпывается виртуальная память, используется система внутреннего пролистывания. Каждый последующий режим управления памятью (физическая, виртуальная, внутреннее пролистывание) экспоненциально медленнее предыдущего режима.
На что похожи разбитые листы?
Каждая обработка начинается с одного листа, который охватывает весь экстент данных. Если данные одного листа слишком большие, чтобы быть обработанными в физической памяти, они делятся на четыре равных листа. Затем обработка продолжается на промежуточном листе, который в дальнейшем разделяется, если данные в этом втором уровне листов опять же слишком большие. Это продолжается до тех пор, пока объем оперативной памяти сможет вместить обработку одного листа. См. пример ниже:
Контур всех входных объектов
Обработка начинается с листа, охватывающего весь экстент всех входных данных. Для обработки это называется 1 уровень листа.
Если данные слишком большие и не умещаются в оперативной памяти, лист первого уровня делится на четыре одинаковых листа. Эти четыре промежуточных листа называются листами 2 уровня.
В зависимости от размера данных в каждом из листов, некоторые листы будут поделены ещё на четыре и т.д., а некоторые будут обработаны сразу.
Какие инструменты используют разбиение на листы?
Следующие инструменты набора Анализ (Analysis Tools) имеют логику полистной обработки при работе с большими объемами данных:
- Буфер (Buffer) (при использовании опции слияния)
- Вырезание (Clip)
- Ластик (Erase)
- Идентичность (Identity)
- Пересечение (Intersect)
- Разбить (Split)
- Симметричная разность (Symmetrical Difference)
- Объединение (Union)
- Обновить (Update)
Эти инструменты набора Управление данными (Data Management) также используют логику промежуточного деления при работе с большими наборами данных:
- Слияние (Dissolve)
- Объект в линию
- Объект в полигон
- Полигон в линию
Завершение процесса с ошибкой в связи с нехваткой памяти
Подход разбиения на листы не может помочь в обработке чрезвычайно больших пространственных объектов (пространственные объекты с миллионами вершин). Разбиение и повторная компоновка чрезвычайно больших пространственных объектов несколько раз через границы листа является очень затратным, с точки зрения памяти, и может вызвать ошибки нехватки памяти, если пространственный объект слишком большой. Это определяется тем, сколько физической памяти, или RAM, доступно на компьютере при запуске процесса. Некоторые большие пространственные объекты могут привести к нехватки памяти на одной конфигурации компьютера, а на другой - нет. Ошибка нехватки памяти может возникнуть на одном компьютере один раз, а в другой раз - нет, в зависимости от ресурсов, используемых другими приложениями. Примерами очень больших пространственных объектов с большим количеством вершин является дорожное полотно для всего города или полигон, представляющий сложное устье реки.
Ошибка нехватки памяти также может произойти, если в процессе обработки инструмента запущено второе приложение или инструмент геообработки. Эта вторая обработка может использовать часть доступной физической памяти, которую процесс разбиения на листы считает доступной для использования, в результате чего процессу разбиения на листы требуется больше физической памяти, чем фактически доступно. Рекомендуется не выполнять другие операции на компьютере при обработке больших наборов данных.
Один из рекомендуемых способов - использовать инструмент Нарезать (Dice) для разделения перед обработкой больших пространственных объектов на объекты меньшего размера.
Какой формат лучше использовать при работе с большими наборами данных?
Размер персональных баз геоданных и шейп-файлов ограничен до 2 гигабайт (GB). Если выходные данные обработки превышают этот размер, могут возникнуть ошибки. Корпоративные и файловые базы геоданных не имеют этих ограничений, поэтому они рекомендуются в качестве выходной рабочей области при обработке очень больших наборов данных. Для корпоративных баз геоданных, обратитесь к администратору базы геоданных, чтобы узнать подробнее о политике загрузки данных. Может быть ограничено выполнение незапланированных / несанкционированных операций загрузки больших данных.