Контурные маски (Картография)
Резюме
Создает маскирующие полигоны на указанном расстоянии и указанной формы вокруг символов объектов во входном слое.
Использование
Этот инструмент в качестве исходного объекта может использовать точечные, линейные и полигональные слои пространственных объектов, а также слои аннотаций.
-
При создании масок важно знать, что добавление масок к карте является сложным процессом, который замедляет прорисовку карты и сказывается на процессах печати и экспорта карты. При создании масок для карты вам необходимо решить для себя три основных вопроса: (1) количество масок, (2) сложность масок и (3) будут ли они использоваться для маскирования полигональных объектов, заполненных маркерами или линейными символами. Увеличение количества масок, использование более сложных масок и/или маскирование поверх маркеров или полигонов приведет к замедлению отрисовки карты на экране. Кроме того, процессы печати и экспорта могут оказаться под угрозой срыва, во-первых, потому что для этих процессов требуется сложная обработка и, во-вторых, из-за существующих ограничений в том, что касается порядка хранения результатов экспорта карт, которые имеют большое число сложных масок, в графических форматах.
-
Если возможности печати и экспорта карты для вас так же важны, как и ее наглядность, то скорее всего вам следует использовать простейшие маски для достижения ваших целей. В частности, когда вы маскируете аннотации, вы можете использовать тип маски "выпуклая оболочка" –CONVEX_HULL, который подходит для многих целей. Если вам нужны более детальные текстовые маски, используйте тип EXACT_SIMPLIFIED. В целом, при маскировании большого количества текста на большой карте, избегайте использования маски типа EXACT, поскольку при этом будет создано слишком много составных масок для корректного результата.
-
Значения буферного расстояния указываются в единицах карты или в единицах страницы. В большинстве случаев вы будете определять значение буферного расстояния в единицах страницы.
Значения буферного расстояния воспринимаются по-разному, в зависимости от выбранных единиц измерения. Если вы выберете точки, дюймы, миллиметры или сантиметры, маски будут созданы с учетом буферного расстояния, вычисленного в единицах страницы (вы можете представить его как расстояние, вычисленное на бумаге). Значение параметра базового масштаба учитывается в вычислениях.
Если вы выберете любые другие единицы измерений для буферного расстояния, маски будут созданы с учетом буферного расстояния, вычисленного в единицах карты (вы можете принять его за реальное расстояние на поверхности Земли). Также, в этом случае, значение параметра базового масштаба не используется в процессе вычислений.
-
Маски будут созданы, если значение буферного расстояния равно 0 или отрицательное. Если оно будет равно 0, будут созданы полигоны, представляющие действительную форму условного знака объекта. При отрицательном значении будут созданы полигоны, меньшие по размеру, нежели размеры символов. В общем, для буферного расстояния указывают расстояние больше 0, чтобы достичь желаемого эффекта маскирования.
-
Если входной слой является слоем аннотаций, базовый масштаб будет автоматически установлен равным базовому масштабу слоя класса объектов.Это делается для более точного вычисления маски.
-
При маскировании аннотаций, спроецированных на лету, маски будут созданы с использованием пространственной привязки карты, указанной в соответствующем параметре. Читаемость текста сохраняется при проецировании текста на лету, этим и объясняется возможные различия в пространственных областях, занятых текстом, в разных проекциях.
-
Пространственные объекты масок аннотаций зависят от шрифта. При использовании масок с текстом важно убедиться, что для отображения используется тот же шрифт, что и для выходных объектов. Для этого выберите встроенные шрифты в векторных выходных данных или загрузите SoftFonts для принтеров и плоттеров.
Синтаксис
Параметр | Объяснение | Тип данных |
input_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 демонстрирует порядок непосредственного использования инструмента FeatureOutlineMasks.
import arcpy
from arcpy import env
env.workspace = "C:/data"
sr = arcpy.SpatialReference(4326)
arcpy.FeatureOutlineMasks_cartography("C:/data/cartography.gdb/transportation/roads",
"C:/data/cartography.gdb/transportation/fom_polys",
"25000", sr, "5 meters","EXACT_SIMPLIFIED", "ALL_FEATURES", "ALL")
Этот автономный скрипт Python демонстрирует пример использования инструмента FeatureOutlineMasks.
# Name: FeatureOutlineMasks_standalone_script.py
# Description: Creates mask polygons at a specified distance and shape
# around symbolized features.
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
input_layer = "C:/data/roads.lyr"
output_fc = "C:/data/cartography.gdb/transportation/fom_polys"
reference_scale = "25000"
spatial_reference = arcpy.SpatialReference(4326)
margin = "5 meters"
method = "EXACT_SIMPLIFIED"
mask_for_non_placed_anno = "ONLY_PLACED"
attributes = "ALL"
# Execute Feature Outline Masks
arcpy.FeatureOutlineMasks_cartography(input_layer,
output_fc,
reference_scale,
spatial_reference,
margin, method,
mask_for_non_placed_anno,
attributes)