摘要
ElevationSurface 对象可用于访问地面表面图层或自定义表面以及其方法和属性。
说明
2D 地图或 3D 场景仅可以包含一个地面表面图层,但是可以包含零个、一个或许多自定义表面。 当您的活动门户设置为 ArcGIS Online 时,每个新的局部或全局场景均包含地面表面和 WorldElevation3D/Terrain3D 高程服务。 默认情况下,各个新地图不包含任何地面表面。 要向地图添加地面表面,您可以使用添加高程源图层对话框。 当您创建或编辑要素并希望根据基础高程表面设置 z 值时,可以将地图中的高程表面用于编辑工作流。
高程表面可以没有源(表示零表面),也可以包含一个或多个为表面提供高度值的高程源。 您可以通过 listElevationSources 方法访问高程表面中的高程源图层。
属性
属性 | 说明 | 数据类型 |
name (可读写) | 获取和设置高程表面的名称。 Ground 表面为只读状态。 | String |
verticalExaggeration (可读写) | 获取和设置高程表面的垂直夸大。 对于所有高程表面,默认值均为 1.0,此值仅适用于高程表面。 垂直夸大不适用于地图中的其他图层。 将此值设置为较大的数值可能会影响性能,因为场景会使用高度夸大的要素渲染。 | Double |
方法概述
方法 | 说明 |
listElevationSources ({wildcard}) |
返回与 ElevationSurface 对象关联的 ElevationSource 对象的 Python 列表。 |
方法
listElevationSources ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | A wildcard is based on the elevation surface name and is not case sensitive. A combination of asterisks (*) and characters can be used to help limit the resulting list. (默认值为 None) | String |
数据类型 | 说明 |
List | 返回地图中 ElevationSurface 对象的 Python 列表。 |
如果仅返回一个高程表面,则 listElevationSources 方法会返回一个列表对象。 使用后跟索引的适当 wildcard 参数来引用 ElevationSurface 对象。
地图中可能包含多个具有相同名称的图层。 在这种情况下,您可能需要使用其他属性来隔离特定图层。 为此,可以使用诸如 datasource 等图层属性。 最佳做法是为地图中的所有图层指定唯一名称。
代码示例
以下脚本可为地面高程表面设置新的垂直夸大。
p = arcpy.mp.ArcGISProject('current')
m = p.listMaps('Scene')[0]
for surface in m.listElevationSurfaces():
if surface.name == 'Ground':
surface.verticalExaggeration = 3.0
p.save()
以下脚本将打印各个高程表面中的高程数据源。
p = arcpy.mp.ArcGISProject('current')
m = p.listMaps('Scene')[0]
for surface in m.listElevationSurfaces():
for source in surface.listElevationSources():
print(source.dataSource)