zoukankan      html  css  js  c++  java
  • pro Camera

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

    返回照相机的查看器模式。每个查看器模式均支持不同的照相机属性集合。

      <esri_enumhead><esri_enumvaluehd><esri_enumdeschd>
    • GLOBAL —支持非投影坐标系的 3D 地图。
    • LOCAL —仅支持本地坐标系的 3D 地图。
    • MAP —2D 地图。
    String
    pitch
    (可读写)

    用于获取或设置地图视图俯仰角。俯仰角等效于将机头向上或向下移动(沿着穿过飞机机翼的轴进行旋转)。向前观察,正值则高于地平线(指向上方),负值则低于地平线(指向下方)。2D 地图类型的值为 -90.0(从上方竖直向下观察)。

    Double
    roll
    (可读写)

    用于获取或设置地图视图的滚动角。滚动角等效于飞机机翼向上或向下倾斜(沿着从前向后穿过飞机中心的轴进行旋转)。值为零表示完全水平。正值表示左侧向上倾斜(或右侧向下倾斜)。负值则与之相反。2D 地图类型的值为 0.0。

    Double
    scale
    (可读写)

    用于获取或设置地图框中的数据比例。必须使用数值(双精度值)。由于数据的平面视图,比例仅能应用于 2D 地图类型。比例可从 3D 地图类型中返回,但只是一个估算值。

    Double
    X
    (可读写)

    用于获取或设置 X 值。对于 2D 地图,此值取决于地图框的中心。对于 3D 地图,该值表示与视图相关的照相机的 X 位置。

    Double
    Y
    (可读写)

    用于获取或设置 Y 值。对于 2D 地图,此值取决于地图框的中心。对于 3D 地图,该值表示与视图相关的照相机的 Y 位置。

    Double
    Z
    (可读写)

    用于获取或设置 Z 值。对于 3D 地图,该值表示与视图相关的照相机的 Z 位置。2D 地图不支持此值,将返回 nan。

    Double

    方法概述

    方法 说明
    getExtent ()

    返回 2D 地图框的范围对象。

    setExtent (extent)

    在布局中设置地图框的范围

    方法

    getExtent ()
     
    返回值
    数据类型 说明
    Extent

    地理处理范围对象。

    如果地图类型是 2D,则返回的范围将与地图框的 X,Y 边界框相匹配。如果地图类型是 3D,则返回的范围将取决于地图视图的heading、pitch和roll值是否等于 0。

    setExtent (extent)
    参数 说明 数据类型
    extent

    地理处理 Extent 对象。

    Extent

    此范围用于控制地图框的 X,Y 边界框。如果应用于 3D 地图类型,则结果为 2D 平面视图。

    代码示例

    照相机示例 1

    下面的脚本将设置名为约塞米蒂国家公园主要景点布局上约塞米蒂国家公园地图框的范围,以便与名为 Ranger Stations 的图层范围相匹配。

    import arcpy
    aprx = arcpy.mp.ArcGISProject(r"C:ProjectsYosemiteNPYosemite.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:ProjectsYosemiteNPYosemite_Updated.aprx")
    del aprx
    照相机示例 2

    下面的脚本会将两个地图框的地图从 2D 更改为 3D 地图。首先,该脚本会将两个文档导入到空白项目中。然后,会引用相应的地图和地图框。最后也是最重要的一步,在将map属性从 2D 地图更改为 3D 地图之前,将Cameratype属性更改为 GLOBAL。

    import arcpy
    aprx = arcpy.mp.ArcGISProject(r"C:ProjectsBlank.aprx")
    
    #Import documents into project
    aprx.importDocument(r"C:ProjectsYosemiteNPDocumentsYosemite.mxd")
    aprx.importDocument(r"C:ProjectsYosemiteNPDocumentsYosemite_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:ProjectsYosemiteNPYosemite.aprx")
  • 相关阅读:
    Java基础(01)--简介及基础语法
    高数(01)--函数、极限、连续
    未来行业及趋势
    HttpRunner基础使用一:
    web自动化中js操作的操作应用
    django框架学习六:优化views.py文件,使用rest_framework中的APIVew和Response返回
    django框架学习五:djangorestframework中ModelSerializer的关联字段的生成
    django框架学习四:引入djangorestframework中ModelSerializer
    django框架学习三:djangorestframework中序列化器的优化:添加单字段、多字段、自定义函数的校验
    django框架学习三:使用DRF框架,引入序列化器,实现对数据库的增删改查操作
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12318724.html
Copyright © 2011-2022 走看看