Skip to main content

Генерализация больших наборов данных путем разделения на части

Для выполнения обработки необходимо сначала загрузить все входные данные в память инструментов геообработки, которые учитывают различные темы контекста данных. При загрузке больших наборов данных или нескольких входных наборов данных высока вероятность превышения допустимых ресурсов памяти этих инструментов. Разделение — это способ разделить большое количество данных на меньшие, более управляемые наборы объектов.

При применении инструментов к разделенным на части данным эти разделы обрабатываются поочередно. Объекты, расположенные на границах разбиения или вблизи них, тщательно контролируются во избежание несоответствий. В процессе обработки инструментом загружаются и учитываются дополнительные данные, выходящие за рамки каждого раздела, но при этом изменяются только объекты внутри самого раздела. Результатом этого являются бесшовные выходные данные.

Как правило, если общее количество объектов во всех входных слоях превышает 100 000 или если объекты являются составными с большим числом вершин, стоит подумать о том, чтобы выполнить разделение на части с помощью этого инструмента. Разделение на части поддерживают перечисленные ниже инструменты:

Как включить разделение на части

Функция разбиения на части включается для перечисленных выше инструментов геообработки путем указания класса пространственных объектов для разбиения в параметре среды геообработки Картографические разделы. Если этот параметр используется, соответствующие инструменты будут получать указание обрабатывать входные объекты последовательно (по частям), а не все одновременно.

Класс объектов, поделенный на разделы, должен максимально полно покрывать область интереса и обеспечивать максимально равномерное распределение входных объектов. Слишком большие разделы все равно будут приводить к превышению ограничений использования памяти. Однако использование слишком маленьких разделов тоже нежелательно, поскольку оно приведет к уменьшению чувствительности инструмента к контексту, что может ухудшить качество результатов.

Что можно использовать в качестве разделов

Объекты разделов могут основываться на различных источниках. Некоторые рабочие процессы могут изначально включать в себя логически завершенные части (например, экстенты данных, показанные на непрерывном наборе напечатанных карт). Из листов карты, смоделированных в виде полигонов, получатся идеальные разделы. В таком случае сетку прямоугольных полигональных объектов можно создать с помощью инструмента Объекты индексной сетки. Это позволит создать разделы разумного размера, при условии, что входные данные относительно равномерно распределены по области интереса.

При построении веб-карт приемлемый набор разделов может получиться из схемы разбиения на листы при кэшировании. При этом можно воспользоваться инструментом Сохранить схему листов кэша картографического сервиса как полигоны для создания сетки полигонов, отображающих эту схему. Так же, как и использование экстентов листов карты, этот рабочий процесс применим в том случае, если входные объекты распределены приблизительно равномерно.

В некоторых рабочих процессах наборы данных могут включать классы объектов, которые формируют естественные непрерывные части (например, области или участки, соответствующие почтовым индексам). Если эти объекты равномерно распределены по входным данным и разделяют их соответствующим образом, их можно использовать как разделы. Это эффективный подход к обработке данных, распределенных с различной плотностью. Например, полигональные участки, соответствующие почтовым индексам, вероятно, будут иметь меньший размер при более высокой плотности населения, поэтому из этих участков могут получаться разделы, хорошо подходящие для разрешения конфликтов зданий.

Если во входных данных отсутствуют подходящие полигоны, также можно создать специальные полигоны для разделения данных. С помощью инструмента Создать картографические разделы можно создать непрерывный набор полигонов, включающих в себя примерно равное количество входных объектов или вершин.

Требования к картографическим разделам

  • Размер каждого раздела (то есть объем включенных в него входных данных) не должен превышать ограничения производительности инструмента. Как правило, этот порог выражается в количестве объектов из всех входных слоев и сложности этих объектов. Он также может изменяться в зависимости от используемого инструмента и заданных параметров. В качестве общего правила следует отдавать предпочтение разделам, содержащим не более 50 000 входных объектов. Если для метода разделения используются вершины, выберите значение в зависимости от объема доступной памяти. Хотя это может варьироваться в зависимости от инструмента, для обработки 1 миллиона вершин потребуется около 0,5 ГБ памяти.

  • Объекты разделов должны представлять собой логические составные части входных объектов, обрабатываемых инструментами, которые поддерживают этот параметр. Входные объекты должны быть по возможности равномерно распределены между объектами разделов. Это могут быть взаимосвязанные в пространстве наборы объектов (например, страны или другие административно-территориальные единицы); полигоны, отображающие отдельные листы карт (например, созданные с помощью инструмента Объекты индексной сетки); или полигональные разделы, специально созданные для этой цели с помощью инструмента Создать картографические разделы.

  • Объекты разделов должны быть топологически корректными. Ребра смежных полигонов должны совпадать, не должно быть перекрытий. Пробелы между объектами разделов допустимы, но объекты разделов не могут быть составными полигонами или полигонами с пробелами. Полигоны должны иметь простую геометрию без перекрытий.

  • Площадь каждого полигона раздела должна быть больше нуля. Разделы с нулевой площадью или пустые не будут обработаны, и относительно них будет выводиться предупреждение. При обработке эти разделы будут игнорироваться.

  • Объекты разделов должны представлять собой логические составные части входных объектов, обрабатываемых инструментами, которые поддерживают этот параметр. Входные объекты должны быть по возможности равномерно распределены между объектами разделов.

  • Объекты-разделы должны охватывать экстент входных объектов.

  • Геометрия разделов должна быть максимально простой. Сложные геометрические формы ухудшают производительность инструмента при включении разделения.

Как выполняется обработка с картографическим разделением

Если включено разделение (путем указания класса объектов разделов в параметре среды геообработки Картографические разделы), то инструменты, поддерживающие обработку по разделам, будут обрабатывать входные данные посекционно, как задано в разделах. Разделы будут обрабатываться в последовательности, определяемой идентификатором каждого из них. Для обработки только определенных участков карты следует использовать слой карты как переменную среды, а затем, прежде чем запускать обработку, выбрать только соответствующие объекты-разделы. Если класс объектов-разделов не полностью соответствует входному классу, будут обрабатываться только те области, которые покрываются.

Даже если данные разделены, могут возникать ситуации, в которых объем входных данных, относящихся к одному и тому же разделу, все равно будет превышать ограничения использования памяти инструмента геообработки. В этом случае инструменту не удастся обработать раздел, и он перейдет к обработке следующего. В сообщениях геообработки будет указываться, какие разделы не были обработаны. К классу объектов разделов будет добавлено поле с именем STATUS; в это поле будет подставляться одно из указанных ниже значений, соответствующих статусу:

  • 0 — Не обработан

  • 1 — Обрабатывается

  • 2 — Успешно обработан

  • 3 — Не хватает памяти

  • 4 — Ошибка

Подсказка:

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