Маски пересечения слоев (Intersecting Layers Masks) (Картография)
Резюме
Создает маскирующие полигоны определенной формы и определенного размера в местах пересечения двух отображаемых символами входных слоев — маскирующего слоя и маскируемого слоя.
Использование
-
Этот инструмент в качестве исходного объекта может использовать точечные, линейные и полигональные слои пространственных объектов, а также слои аннотаций.
-
Маски будут созданы, если значение буферного расстояния равно 0 или отрицательное. Если оно будет равно 0, будут созданы полигоны, представляющие действительную форму условного знака объекта. При отрицательном значении будут созданы полигоны, меньшие по размеру, нежели размеры символов. В общем, для буферного расстояния указывают расстояние больше 0, чтобы достичь желаемого эффекта маскирования.
-
При создании масок важно знать, что добавление масок к карте является сложным процессом, который замедляет прорисовку карты и сказывается на процессах печати и экспорта карты. Как правило, необходимо учитывать три фактора при создании масок для карты: (1) количество масок, (2) сложность масок и (3) будут ли они использоваться для маскирования полигональных объектов, заполненных маркерами или линейными символами. Увеличение количества масок, использование более сложных масок и/или маскирование поверх маркеров или полигонов приведет к замедлению отрисовки карты на экране. Кроме того, распечатка и экспорт таких карт могут быть затруднены и даже невозможны, во-первых, из-за больших системных требований, предъявляемых к печати и экспорту карт с масками, и во-вторых, из-за ограничения, накладываемого на объем графического файла, в который может быть сохранен результат экспорта карты.
-
Если возможности печати и экспорта карты для вас так же важны, как и ее наглядность, то скорее всего вам следует использовать простейшие маски для достижения ваших целей. В частности, когда вы маскируете аннотации, вы можете использовать тип маски CONVEX_HULL, который подходит для многих целей. Если вам нужны более детальные текстовые маски, используйте тип EXACT_SIMPLIFIED. В целом, при маскировании большого количества текста на большой карте, избегайте использования маски типа EXACT, поскольку при этом будет создано слишком много составных масок для корректного результата.
-
Значения буферного расстояния указываются в единицах карты или в единицах страницы. В большинстве случаев вы будете определять значение буферного расстояния в единицах страницы.
Значения буферного расстояния воспринимаются по-разному, в зависимости от выбранных единиц измерения. Если вы выберете точки, дюймы, миллиметры или сантиметры, маски будут созданы с учетом буферного расстояния, вычисленного в единицах страницы (вы можете представить его как расстояние, вычисленное на бумаге). Значение параметра базового масштаба учитывается в вычислениях.
Если вы выберете любые другие единицы измерений для буферного расстояния, маски будут созданы с учетом буферного расстояния, вычисленного в единицах карты (вы можете принять его за реальное расстояние на поверхности земли). Также, в связи с этим, значение параметра базового масштаба не используется в процессе вычислений.
-
Если входной слой является слоем аннотаций, базовый масштаб будет автоматически установлен равным базовому масштабу слоя класса объектов.Это делается для более точного вычисления маски. Если пересекаются два слоя аннотаций, они должны иметь одинаковый базовый масштаб.
-
При маскировании аннотаций, спроецированных на лету, маски будут созданы с использованием пространственной привязки карты, указанной в соответствующем параметре. Читаемость текста сохраняется при проецировании текста на лету, этим и объясняется то, что могут существовать различия в пространственных областях, занятых текстом, в разных проекциях.
-
Маски аннотаций являются спецификациями шрифта. При использовании масок с текстом важно убедиться, что для отображения используется тот же шрифт, что и для выходных объектов. Для этого выберите встроенные шрифты в векторных выходных данных или загрузите SoftFonts для принтеров и плоттеров.
Синтаксис
Параметр | Объяснение | Тип данных |
masking_layer |
Изображаемый исходный слой, который будет пересекаться с маскируемым слоем для создания маскирующих полигонов. Этот слой будет более заметен, после того как к маскируемому слою будет применено маскирование. | Layer |
masked_layer |
Изображаемый исходный слой, для которого будут создаваться маски. Этот слой будет скрыт маскирующими полигонами. | Layer |
output_fc |
Класс пространственных объектов, который будет содержать объекты маски. | Feature Class |
reference_scale |
Базовый масштаб используется для вычисления маскирующей геометрии, когда маски указываются в единицах страницы. Как правило, это базовый масштаб карты. | Double |
spatial_reference |
Пространственная привязка, для которой будут созданы маскирующие полигоны. Это не пространственная привязка, которая будет назначена выходному классу пространственных объектов. Это пространственная привязка карты, в которой будут использованы маскирующие полигоны, поскольку местоположение символов может быть изменено при проецировании объектов. | Spatial Reference |
margin |
Пространство в единицах страницы, окружающее условные обозначения входных объектов, используется для создания маскирующих полигонов. Как правило, маскирующие полигоны создаются с небольшим буферным расстоянием вокруг символа, чтобы улучшить внешний вид карты. Значения буферного расстояния указываются в единицах карты или в единицах страницы. В большинстве случаев вы будете определять значение буферного расстояния в единицах страницы. Значения буферного расстояния воспринимаются по-разному, в зависимости от выбранных единиц измерения. Если вы выберете точки, дюймы, миллиметры или сантиметры, маски будут созданы с учетом буферного расстояния, вычисленного в единицах страницы (вы можете представить его как расстояние, вычисленное на бумаге). Значение параметра базового масштаба учитывается в вычислениях. Если вы выберете любые другие единицы измерений для буферного расстояния, маски будут созданы с учетом буферного расстояния, вычисленного в единицах карты (вы можете принять его за реальное расстояние на поверхности земли). Также, в связи с этим, значение параметра базового масштаба не используется в процессе вычислений. | Linear unit |
method |
Тип созданной геометрии масок. Существует четыре типа:
| String |
mask_for_non_placed_anno |
Указывает, надо ли создавать маску для неразмещенных аннотаций. Эта опция используется только для маскирования слоев аннотаций в базе геоданных.
| String |
attributes (дополнительно) |
Определяет, какие атрибуты будут перенесены из входных объектов в выходные.
| String |
Пример кода
Следующий скрипт окна Python демонстрирует порядок непосредственного использования инструмента IntersectingLayersMasks.
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.IntersectingLayersMasks_cartography("C:/data/cartography.gdb/transportation/roads",
"C:/data/cartography.gdb/transportation/railroads",
"C:/data/cartography.gdb/transportation/ilm_polys",
"25000", "", "5 meters", "EXACT_SIMPLIFIED", "", "ALL")
Этот автономный скрипт Python демонстрирует пример использования инструмента IntersectingLayersMasks.
# Name: IntersectingLayersMasks_standalone_script.py
# Description: Creates masking polygons at a specified
# shape and size at the intersections of symbolized features.
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
masking_layer = "C:/data/cartography.gdb/transportation/roads"
masked_layer = "C:/data/cartography.gdb/transportation/railroads"
outpuf_fc = "C:/data/cartography.gdb/transportation/ilm_polys"
reference_scale = "25000"
spatial_reference = ""
margin = "5 meters"
method = "EXACT_SIMPLIFIED"
mask_for_non_placed_anno = ""
attributes = "ALL"
# Execute Intersecting Layers Masks
arcpy.IntersectingLayersMasks_cartography(masking_layer,
masked_layer,
output_fc,
reference_scale,
spatial_reference,
margin, method,
mask_for_non_placed_anno,
attributes)