Camera
描述
Camera 对象用于对控制 MapFrame 中显示的 2D 和 3D 查看器属性进行访问。
说明
ArcGIS Pro 应用程序集成了 2D 和 3D 显示,因此 Camera 对象可用于同时控制 2D 地图的比例与范围以及 MapFrame 中 3D 地图的照相机位置。
MapFrame 对象上的 camera 属性会返回 Camera 对象。
由于此对象上会提供 2D 和 3D 属性,因此检 查Camera 对象上的模式属性是非常重要的。如果Cameramode是 MAP,则您可以设置 2D 属性。如果Cameramode是 GLOBAL 或 LOCAL,则您可以设置 3D 属性。此外,您还可以检查 Map 对象上的 MapType 属性;MAP 的值表示 2D,SCENE 的值表示 3D。
由于范围并非显式属性而是派生属性,因此它并非 Camera 对象的直接属性。照相机位置不会存储范围属性,范围是从 X, Y 位置和scale派生的。getExtent 方法将返回派生范围。从 3D 地图视图返回范围后,范围取决于从上方竖直向下观察的照相机位置 (pitch=-90)。在 3D 地图上使用 setExtent 方法时,同样,结果显示为如同照相机从上方竖直向下观察的样子。
属性
属性 | 说明 | 数据类型 |
heading
(可读写)
|
用于获取或设置地图视图旋转值。同时也被称为偏航角或方位角。用于表示地图数据将从正北方向按逆时针旋转的度数。要顺时针旋转,可使用负值。对 2D 和 3D 地图类型均适用。 |
Double |
mode
(只读)
|
返回照相机的查看器模式。每个查看器模式均支持不同的照相机属性集合。
|
String |
pitch
(可读写)
|
用于获取或设置地图视图俯仰角。俯仰角等效于将机头向上或向下移动(沿着穿过飞机机翼的轴进行旋转)。向前观察,正值则高于地平线(指向上方),负值则低于地平线(指向下方)。2D 地图类型的值为 -90.0(从上方竖直向下观察)。 |
Double |
roll
(可读写)
|
用于获取或设置地图视图的滚动角。滚动角等效于飞机机翼向上或向下倾斜(沿着从前向后穿过飞机中心的轴进行旋转)。值为零表示完全水平。正值表示左侧向上倾斜(或右侧向下倾斜)。负值则与之相反。2D 地图类型的值为 0.0。 |
Double |
scale
(可读写)
|
用于获取或设置地图框中的数据比例。必须使用数值(双精度值)。由于数据的平面视图,比例仅能应用于 2D 地图类型。比例可从 3D 地图类型中返回,但只是一个估算值。 |
Double |
X
(可读写)
|
用于获取或设置 X 值。对于 2D 地图,此值取决于地图框的中心。对于 3D 地图,该值表示与视图相关的照相机的 X 位置。
扫描二维码关注公众号,回复:
9202644 查看本文章
![]() |
Double |
Y
(可读写)
|
用于获取或设置 Y 值。对于 2D 地图,此值取决于地图框的中心。对于 3D 地图,该值表示与视图相关的照相机的 Y 位置。 |
Double |
Z
(可读写)
|
用于获取或设置 Z 值。对于 3D 地图,该值表示与视图相关的照相机的 Z 位置。2D 地图不支持此值,将返回 nan。 |
Double |
方法
代码示例
照相机示例 1下面的脚本将设置名为约塞米蒂国家公园主要景点布局上约塞米蒂国家公园地图框的范围,以便与名为 Ranger Stations 的图层范围相匹配。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
m = aprx.listMaps("Yose*")[0]
lyr = m.listLayers("Ranger Stations")[0] lyt = aprx.listLayouts("Main Attr*")[0] mf = lyt.listElements("mapframe_element", "Yosemite National Park")[0] mf.camera.setExtent(mf.getLayerExtent(lyr, False, True)) aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite_Updated.aprx") del aprx
下面的脚本会将两个地图框的地图从 2D 更改为 3D 地图。首先,该脚本会将两个文档导入到空白项目中。然后,会引用相应的地图和地图框。最后也是最重要的一步,在将map属性从 2D 地图更改为 3D 地图之前,将Cameratype属性更改为 GLOBAL。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\Blank.aprx")
#Import documents into project
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite.mxd")
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite_3DViews.3dd") #Reference maps m_scenic = aprx.listMaps("Globe layers")[0] #Reference Layout and map frames lyt = aprx.listLayouts()[0] mf_inset1 = lyt.listElements("MapFrame_Element", "Inset1")[0] mf_inset2 = lyt.listElements("MapFrame_Element", "Inset2")[0] #Convert inset maps into Globe Views mf_inset1.camera.type = "GLOBAL" mf_inset1.map = m_scenic mf_inset2.camera.type = "GLOBAL" mf_inset2.map = m_scenic aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite.aprx")