setElevationMode
Краткая информация
Класс LayerElevation позволяет определять характеристики высоты для 3D-слоев на Карте.
Обсуждение
Чтобы пространственные данные отображались в 3D, вы можете задавать параметры высоты для слоев в категории 3D-слои вашей локальной или глобальной сцены. Сюда входит определение elevationMode и verticalUnits слоя, а также при необходимости определение cartographicOffset.
elevationMode позволяет выбирать, где отображается объект по отношению к поверхности Земли или пользовательской поверхности высот. См. класс ElevationSurface для дополнительных примеров работы с поверхностью Земли или пользовательскими поверхностями высот. Картографическое смещение можно применить для уточнения места по вертикали, где объекты будут прорисованы относительно базовой высоты. Используйте свойство вертикальных единиц измерения в ситуациях, когда значения Z могут иметь другие линейные единицы измерения, чем значения XY.
Для дополнительной информации о настройке параметров высоты слоя в ArcGIS Pro см. раздел справки Определение высотных характеристик для слоев.
Примечание:
3D-слои могут поддерживать или не поддерживать все режимы высот. Используйте поиск ошибок для задания нужного режима высот для данного типа слоя. См. примеры ниже, чтобы понять, как это работает.
Синтаксис
setElevationMode()
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
cartographicOffset (Чтение / Запись) |
Получает и устанавливает картографическое смещение. Смещение может применяться для настройки положения объектов по вертикали относительно базовой высоты, заданной значением |
Double |
|
elevationMode (Чтение / Запись) |
Получает и устанавливает режим отображения рельефа, который управляет высотой слоя. Слои в категории 3D-слои на панели Содержание поддерживают |
String |
|
verticalExaggeration (Чтение / Запись) |
Получает и устанавливает вертикальное преувеличение Все объекты будут увеличены в зависимости от заданного значения. Единицы измерения, в которых выражается это значение, соответствуют единицам измерения по вертикали. Применяется только если для |
Double |
|
verticalUnits (Чтение / Запись) |
Получает и устанавливает для данного слоя единицы измерения по вертикали. Если для источника данных слоя задана вертикальная система координат, то единицы измерения высоты такого слоя совпадают с линейной единицей измерения вертикальной системы координат. Примечание:Единицы измерения по вертикали, отображаемые в категории Высота в диалоговом окне Свойства слоя, могут показывать значение "Вертикальные единицы измерения источника данных", но свойство |
String |
Методы
setElevationMode(elevation_mode, expression, surface)
Базовая высота слоя настраивается с использованием одного или нескольких параметров в зависимости от указанного elevation_mode.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
elevation_mode |
Below is a list of valid strings.
|
String |
|
expression |
An optional VB Script or Arcade expression to be applied depending on the specified Примечание:VB Script is deprecated in Windows. It is recommended to use Arcade. |
String |
|
surface |
An optional ElevationSurface to be applied depending on the specified |
Object |
setVerticalUnits({vertical_units})
Строковая константа, которая задает вертикальные единицы измерения высоты. Рекомендуется, чтобы вертикальные единицы измерения всегда совпадали с горизонтальными единицами измерения слоя при отсутствии вертикальной системы координат. Могут быть случаи, например, когда набор данных был создан с горизонтальными линейными единицами измерения в метрах, но вертикальные единицы измерения в футах.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
vertical_units (Дополнительный) |
Below is a list of valid strings.
(Значение по умолчанию — METERS) |
String |
Пример кода
Следующий скрипт перебирает 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()
Следующий скрипт перебирает 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()
Следующий скрипт перебирает 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()
Следующий скрипт перебирает 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()