Для выполнения обработки необходимо сначала загрузить все входные данные в память инструментов геообработки, которые учитывают различные темы контекста данных. При загрузке больших наборов данных или нескольких входных наборов данных высока вероятность превышения допустимых ресурсов памяти этих инструментов. Разделение на части – это способ, позволяющий разбить большой объем данных на наборы данных меньшего размера, которыми легче управлять.
При применении инструментов к разделенным на части данным эти разделы обрабатываются поочередно. Объекты, входящие в пределы того или иного раздела или расположенные рядом с ними, рассматриваются в совокупности, во избежание расхождений. В дополнение к каждому разделу инструмент загружает вспомогательные данные. Эти данные учитываются при обработке, но изменяются только объекты внутри раздела. Результатом этого являются бесшовные выходные данные.
Как правило, если общее количество объектов во всех входных слоях превышает 100 000 либо если объекты являются составными с большим числом вершин, подумайте о том, чтобы выполнить разделение на части с помощью этого инструмента. Разделение на части поддерживают перечисленные ниже инструменты.
- Инструмент Агрегировать полигоны
- Инструмент Выровнять маркеры по отношению к штриховке или заливке
- Инструмент Упростить дорожную сеть
- Инструмент Очертить области застройки
- Инструмент Выявить конфликты графики
- Инструмент Маски пересечения слоев
- Инструмент Слияние фрагментов дорог
- Инструмент Решить конфликты зданий
- Инструмент Решить конфликты дорог
- Инструмент Установить контрольные точки в пересечениях
- Инструмент Упростить здание
- Инструмент Упростить линию
- Инструмент Упростить полигон
- Инструмент Упростить общие ребра
- Инструмент Сгладить линию
- Инструмент Сгладить полигон
- Инструмент Сгладить общие ребра
- Инструмент Проредить дорожную сеть
Как включить разделение на части
Для перечисленных выше инструментов геообработки использование разделов делается доступным, если в настройках параметров среды для Картографических разделов указан класс пространственных объектов-разделов. Если этот параметр используется, соответствующие инструменты будут получать указание обрабатывать входные объекты последовательно (по частям), а не все одновременно.
Класс объектов разделов должен максимально полно покрывать область интереса и обеспечивать максимально равномерное распределение входных объектов. Слишком большие разделы все равно будут приводить к превышению ограничений использования памяти. Однако использование слишком маленьких частей тоже нежелательно, поскольку оно приведет к уменьшению чувствительности инструмента к контексту, что может ухудшить качество результатов.
Что можно использовать в качестве разделов
Объекты разделов могут основываться на различных источниках. Некоторые рабочие процессы могут изначально включать в себя логически завершенные части (например, экстенты данных, показанные на непрерывном наборе напечатанных карт). Из листов карты, смоделированных в виде полигонов, получатся идеальные части. В таком случае с помощью инструмента Объекты индексной сетки можно создать сетку прямоугольных полигональных объектов. Это позволит создать разделы разумного размера, при условии, что входные данные относительно равномерно распределены по области интереса.
При построении веб-карт приемлемый набор частей может получиться из схемы разбиения на листы при кэшировании. При этом можно воспользоваться инструментом Сохранить схему листов кэша картографического сервиса как полигоны для создания сетки полигонов, отображающих эту схему. Так же, как и использование экстентов листов карты, этот рабочий процесс применим в том случае, если входные объекты распределены приблизительно равномерно.
В некоторых рабочих процессах наборы данных могут включать классы объектов, которые формируют естественные непрерывные части (например, области или участки, соответствующие почтовым индексам). Если эти объекты равномерно распределены по входным данным и разделяют их соответствующим образом, их можно использовать как разделы. Это эффективный подход к обработке данных, распределенных с различной плотностью. Например, полигональные участки, соответствующие почтовым индексам, вероятно, будут иметь меньший размер при более высокой плотности населения, поэтому из этих участков могут получаться части, хорошо подходящие для разрешения конфликтов зданий.
Если во входных данных отсутствуют подходящие полигоны, также можно создать специальные полигоны для разделения на части. С помощью инструмента Создать картографические разделы можно создать непрерывный набор полигонов, включающих в себя примерно равное количество входных объектов или вершин.
Требования к картографическим разделам
- Размер каждого раздела (то есть объем включенных в него входных данных) не должен превышать ограничения производительности инструмента. Как правило, этот порог выражается в количестве объектов из всех входных слоев и сложности этих объектов. Он также может изменяться в зависимости от используемого инструмента и заданных параметров. Практическое правило гласит, что разделы не должны содержать более 50 000 входных объектов. Если для метода разбиения используются вершины, выберите значение в зависимости от объема доступной памяти. Хотя оно может быть различным в зависимости от инструмента, один миллион вершин использует 0.5 Гб памяти.
- Объекты разделов должны представлять собой логические составные части входных объектов, обрабатываемых инструментами, которые поддерживают этот параметр. Входные объекты должны быть по возможности равномерно распределены между объектами разделов. Это могут быть взаимосвязанные в пространстве наборы объектов (например, страны или другие административно-территориальные единицы); полигоны, отображающие отдельные листы карт (например, созданные с помощью инструмента Класс объектов индексной сетки); или полигональные разделы, специально созданные для этой цели с помощью инструмента Создать картографические разделы.
- Объекты разделов должны быть топологически корректными. Ребра смежных полигонов должны совпадать, не должно быть перекрытий. Пробелы между объектами разделов допустимы, но объекты разделов не могут быть составными полигонами или полигонами с пробелами. Полигоны должны иметь простую геометрию без перекрытий.
- Площадь каждого полигона раздела должна быть больше нуля. Разделы с нулевой площадью или пустые не будут обработаны, и относительно них будет выводиться предупреждение. При обработке эти разделы будут игнорироваться.
- Объекты разделов должны представлять собой логические составные части входных объектов, обрабатываемых инструментами, которые поддерживают этот параметр. Входные объекты должны быть по возможности равномерно распределены между объектами разделов.
- Объекты-разделы должны охватывать экстент входных объектов.
- Геометрия частей должна быть максимально простой. Сложные геометрические формы ухудшат производительность инструмента при включении разделения на формы.
Как выполняется обработка с картографическими разделами
Если включено использование разделов (путем указания класса объектов разделов в параметре среды геообработки Картографические разделы, то инструменты, поддерживающие обработку по разделам, будут обрабатывать входные данные посекционно, как задано в разделах. Разделы будут обрабатываться в последовательности, определяемой идентификатором каждого из них. Для обработки только определенных участков карты следует использовать слой карты как переменную среды, а затем выбрать только соответствующие частичные объекты, прежде чем запускать обработку. Если класс частичных объектов не полностью соответствует входному классу, будут обрабатываться только те, области, которые перекрываются.
Даже если данные разделены на части, могут возникать ситуации, в которых объем входных данных, относящихся к одной и той же части, все равно будет превышать ограничения использования памяти инструмента геообработки. В этом случае инструменту не удастся обработать раздел, и он перейдет к обработке следующего. В сообщениях геообработки будет указываться, какие разделы не были обработаны. К классу объектов разделов будет добавлено поле с именем STATUS; в это поле будет подставляться одно из указанных ниже значений, соответствующих статусу:
- 0 – Не обработан
- 1 – Обрабатывается
- 2 – Успешно обработан
- 3 – Не хватает памяти
- 4 – Ошибка
Подсказка:
Если необходимо сохранить состояние обработки, указанное в поле STATUS, то перед запуском следующего инструмента обработки разделов добавьте к этим данным новое поле и вычислите для него значения из поля STATUS.