Чтобы улучшить производительность и масштабируемость таких инструментов наложения объектов, как Объединение и Пересечение, используется оперативная логика, называемая адаптивная разбиение на листы. Использование этой логики запускается, если данные не получается обработать по причине нехватки физической памяти. Чтобы остаться в пределах физической памяти, которая значительно улучшает производительность, последовательно обрабатываются фрагменты (поднаборы) исходного экстента. Пространственные объекты, расположенные в местах деления на фрагменты (листы), разбиваются на краях листа и собираются в один пространственный объект в процессе последней стадии обработки. Вершины, добавленные по краям листа, останутся в выходных объектах. Границы также могут остаться в выходном классе объектов, если разбитый пространственный объект настолько большой, что после обработки по листам нет возможности обратно собрать пространственный объект, используя доступную память.
Зачем делить данные?
Анализ наложения лучше всего выполняется, когда всю обработку можно выполнить в доступной оперативной памяти компьютера (свободной памяти, не занятой системой или другими приложениями). Это не всегда бывает возможно при работе с наборами данных, которые содержат большое количество пространственных объектов со сложными взаимоотношениями, или когда пространственные объекты содержат сотни тысяч или миллионы вершин (а также при комбинации обоих случаев). Без использования листов, доступная память будет быстро заполнена, и операционная система задействует файл подкачки (начнет использовать вторичное хранилище в качестве основной памяти). Это сильно снижает производительность, а в некоторых случаях системе может не хватить ресурсов и произойдет сбой выполнения. Разбиение на листы позволяет избежать этой проблемы. В наиболее сложных случаях управление памятью может быть передано системе, чтобы предпринять попытку завершить обработку, разрешив системе использовать все доступные ресурсы для завершения процесса.
Как выглядит разбиение на листы?
Каждая обработка начинается с одного листа, который охватывает весь экстент данных. Если данные одного листа слишком большие, чтобы быть обработанными в физической памяти, они делятся на четыре равных листа. Затем обработка продолжается на промежуточном листе, который в дальнейшем разделяется, если данные в этом втором уровне листов опять же слишком большие. Это продолжается до тех пор, пока объем оперативной памяти сможет вместить обработку одного листа. См. пример ниже:
Контур всех входных объектов
Обработка начинается с листа, охватывающего весь экстент всех входных данных. Для обработки это называется 1 уровень листа.
Если данные слишком большие и не умещаются в оперативной памяти, лист первого уровня делится на четыре одинаковых листа. Эти четыре промежуточных листа называются листами 2 уровня.
В зависимости от размера данных в каждом из листов, некоторые листы будут поделены ещё на четыре и т.д., а некоторые будут обработаны сразу.
Какие инструменты используют разбиение на листы?
Следующие инструменты набора Анализ используют логику полистной обработки при работе с большими объемами данных:
- Буфер (при использовании опции слияния)
- Clip
- Стирание
- Идентичность
- Пересечение
- Разбиение
- Симметричная разность
- Объединение
- Обновление
Эти инструменты набора Управление данными также используют логику промежуточного деления при работе с большими наборами данных:
- Слияние
- Объект в линию
- Объект в полигон
- Полигон в линию
Завершение процесса с ошибкой в связи с нехваткой памяти
Подход разбиения на листы не может помочь в обработке чрезвычайно больших пространственных объектов (пространственные объекты с миллионами вершин). Разбиение и повторная компоновка чрезвычайно больших пространственных объектов несколько раз через границы листа является очень затратным, с точки зрения памяти, и может вызвать ошибки нехватки памяти, если пространственный объект слишком большой. Это определяется доступным объемом памяти (свободной памятью, не занятой системой или другими приложениями) на компьютере при запуске процесса. Некоторые большие пространственные объекты могут привести к нехватки памяти на одной конфигурации компьютера, а на другой - нет. Ошибка нехватки памяти может возникнуть на одном компьютере один раз, а в другой раз - нет, в зависимости от ресурсов, используемых другими приложениями. Примерами очень больших пространственных объектов с большим количеством вершин являются дороги для всего города или полигон, представляющий сложную дельту реки.
Ошибка нехватки памяти также может произойти, если в процессе обработки инструмента запущено второе приложение или инструмент геообработки. Эта вторая обработка может использовать часть доступной памяти, которую процесс разбиения на листы считает доступной для использования, в результате чего процессу разбиения на листы требуется больше памяти, чем фактически доступно. Рекомендуется не выполнять другие операции на компьютере при обработке больших наборов данных.
Один из рекомендуемых способов - использовать инструмент Нарезать для разделения перед обработкой больших пространственных объектов на объекты меньшего размера.
Какой формат лучше использовать при работе с большими наборами данных?
Размер персональных баз геоданных и шейп-файлов ограничен до 2 гигабайт (GB). Если выходные данные обработки превышают этот размер, могут возникнуть ошибки. Корпоративные и файловые базы геоданных не имеют этих ограничений, поэтому они рекомендуются в качестве выходной рабочей области при обработке очень больших наборов данных. Для многопользовательских баз геоданных, обратитесь к администратору базы геоданных, чтобы узнать подробнее о политике загрузки данных. Может быть ограничено выполнение незапланированных / несанкционированных операций загрузки больших данных.