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()