Skip to main content

setElevationMode

Краткая информация

Класс LayerElevation позволяет определять характеристики высоты для 3D-слоев на Карте.

Обсуждение

Чтобы пространственные данные отображались в 3D, вы можете задавать параметры высоты для слоев в категории 3D-слои вашей локальной или глобальной сцены. Сюда входит определение elevationMode и verticalUnits слоя, а также при необходимости определение cartographicOffset.

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

Для дополнительной информации о настройке параметров высоты слоя в ArcGIS Pro см. раздел справки Определение высотных характеристик для слоев.

Примечание:

3D-слои могут поддерживать или не поддерживать все режимы высот. Используйте поиск ошибок для задания нужного режима высот для данного типа слоя. См. примеры ниже, чтобы понять, как это работает.

Синтаксис

setElevationMode()

Свойства

Имя Объяснение Тип данных

cartographicOffset

(Чтение / Запись)

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

Double

elevationMode

(Чтение / Запись)

Получает и устанавливает режим отображения рельефа, который управляет высотой слоя. Слои в категории 3D-слои на панели Содержание поддерживают ON_THE_GROUND, ABSOLUTE_HEIGHT, ON_CUSTOM_SURFACE, RELATIVE_TO_GROUND, RELATIVE_TO_SCENE и RELATIVE_TO_CUSTOM_SURFACE.

String

verticalExaggeration

(Чтение / Запись)

Получает и устанавливает вертикальное преувеличение Все объекты будут увеличены в зависимости от заданного значения. Единицы измерения, в которых выражается это значение, соответствуют единицам измерения по вертикали. Применяется только если для elevationMode задано ABSOLUTE_HEIGHT, RELATIVE_TO_GROUND или RELATIVE_TO_CUSTOM_SURFACE.

Double

verticalUnits

(Чтение / Запись)

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

Примечание:

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

String

Методы

setElevationMode(elevation_mode, expression, surface)

Базовая высота слоя настраивается с использованием одного или нескольких параметров в зависимости от указанного elevation_mode.

Имя Объяснение Тип данных

elevation_mode

Below is a list of valid strings.

  • ABSOLUTE_HEIGHT— For features that occur at a constant height above a datum, regardless of ground elevation, such as airplanes. In addition, you can add a vertical exaggeration to the absolute height. Use the Shape.Z keyword for the expression argument.

  • ON_CUSTOM_SURFACE— For features that occur on a surface not represented by ground level, such as a well site intersection on a subsurface geologic plane. You can choose a custom elevation surface from a list of defined surfaces in the scene.

  • ON_THE_GROUND— For features that are situated at ground level, such as trees.

  • RELATIVE_TO_CUSTOM_SURFACE— Where additional height values are added to the feature's location on a custom surface. You need a custom elevation surface to use this option. Use the feature's Z values or use the Feature Z profile to create an Arcade expression to adjust feature Z values.

  • RELATIVE_TO_GROUND— For features that are placed at a known height above the ground, such as security camera positions on the side of a building. Use the feature's Z values or use the Feature Z profile to create an Arcade expression to adjust feature Z values.

  • RELATIVE_TO_SCENE— For features that know where they are compared to the scene. These features align to the ground and 3D objects such as extruded polygons or buildings.

String

expression

An optional VB Script or Arcade expression to be applied depending on the specified elevation_mode.

Примечание:

VB Script is deprecated in Windows. It is recommended to use Arcade.

String

surface

An optional ElevationSurface to be applied depending on the specified elevation_mode.

Object

setVerticalUnits({vertical_units})

Строковая константа, которая задает вертикальные единицы измерения высоты. Рекомендуется, чтобы вертикальные единицы измерения всегда совпадали с горизонтальными единицами измерения слоя при отсутствии вертикальной системы координат. Могут быть случаи, например, когда набор данных был создан с горизонтальными линейными единицами измерения в метрах, но вертикальные единицы измерения в футах.

Имя Объяснение Тип данных

vertical_units

(Дополнительный)

Below is a list of valid strings.

  • FEET—Feet

  • KILOMETERS—Kilometers

  • METERS—Meters

  • MILES—Miles

  • YARDS—Yards

(Значение по умолчанию — METERS)

String

Пример кода

LayerElevation, пример 1

Следующий скрипт перебирает 3D-слои в сцене и задает их режим высот На поверхности земли.

import arcpy

aprx = arcpy.mp.ArcGISProject("C:/projects/redlands/redlands.aprx")
m = aprx.listMaps("Scene")[0]
for lyr in m.listLayers():
    e = lyr.elevation
    # Use try/except for layers that support on the ground and
    # skip over layers that do not support this elevation mode
    try:
        e.setElevationMode('ON_THE_GROUND')
    except Exception as e:
        print(f"An error occurred: {e} for {lyr.name}")
aprx.save()
LayerElevation, пример 2

Следующий скрипт перебирает 3D-слои в вашей сцене и задает их режим высот Относительно пользовательской поверхности с выражением Arcade 50.

import arcpy

aprx = arcpy.mp.ArcGISProject("C:/projects/redlands/redlands.aprx")
m = aprx.listMaps("Scene")[0]
for lyr in m.listLayers():
    e = lyr.elevation
    # Use try/except for layers that support on the ground and
    # skip over layers that do not support this elevation mode
    try:
        e.setElevationMode('RELATIVE_TO_CUSTOM_SURFACE','50',s)
    except Exception as e:
        print(f"An error occurred: {e} for {lyr.name}")
aprx.save()
LayerElevation, пример 3

Следующий скрипт перебирает 3D-слои в вашей сцене и задает их режим высот Абсолютная высота на основе Z-значений объектов.

import arcpy

aprx = arcpy.mp.ArcGISProject("C:/projects/redlands/redlands.aprx")
m = aprx.listMaps("Scene")[0]
for lyr in m.listLayers():
    e = lyr.elevation
    # Use try/except for layers that support on the ground and
    # skip over layers that do not support this elevation mode
    try:
        e.setElevationMode('ABSOLUTE_HEIGHT', 'Shape.Z')
    except Exception as e:
        print(f"An error occurred: {e} for {lyr.name}")
aprx.save()
LayerElevation, пример 4

Следующий скрипт перебирает 3D-слои в вашей сцене и задает картографическое смещение 100, если текущее смещение равно 0.

import arcpy

aprx = arcpy.mp.ArcGISProject("C:/projects/redlands/redlands.aprx")
m = aprx.listMaps("Scene")[0]
for lyr in m.listLayers():
    e = lyr.elevation
    if e.cartographicOffset == 0:
        e.cartographicOffset = 100
aprx.save()