创建集成网格场景图层内容 (数据管理)

摘要

可根据 OpenSceneGraph 二进制 (OSGB) 数据创建场景图层内容(.slpk.i3sREST)。

使用情况

  • 与其他 3D 图形格式一样,OSGB 数据格式本身并不支持指定和捕捉模型坐标系。 通常,OSGB 格式文件是笛卡尔坐标系中的输出,该坐标系用于将数据定位在固定的坐标。 模型的 x、y 和 z 坐标本质上并不是地理位置;而是相对于任一几何原点 (0,0,0) 的位置。 用于此类模型的一个典型坐标系是 Easting-Northing-UP (ENU) 约定,其中可将 x 轴视为正东方向,y 轴视为正北方向,z 轴视为向上方向。 要正确地对模型进行地理配准,必须提供其他元数据 .xml.3mx 或坐标定位文件 (.wld3);可将其放置在包含 OSGB 格式文件的文件夹旁边,或通过锚点参数进行指定。

  • 如果不存在用于对模型进行地理配准的文件,则可以创建 .wld3 文件以指定原点。 该空格或逗号分隔文件可以用十进制度格式表示为 <From x,y,z> <space> <To x,y,z>

    用于对模型进行地理配准的示例坐标定位文件。 只有一个坐标对需要包含锚点坐标。

    0, 0, 0 -117.17222, 34.0392512, 0
  • 如果 OSGB 格式文件是使用已知坐标系创建的,则将投影文件 (.prj) 放置在包含 OSGB 格式文件的文件夹旁边,以正确地对模型进行地理配准。 例如,如果输入文件路径为 C:\temp\data 且 OSGB 格式文件位于子文件夹 C:\temp\data\Tile_001C:\temp\data\Tile_002 中,则将投影文件或元数据文件放置在 C:\temp\data 文件夹中。

  • 下表列出了要用于 OSGB 模型的每个输入坐标系的地理配准文件:

    输入坐标系地理配准文件

    局部坐标系 (ENU)

    .xml.wld3.3mx 文件,或点要素类

    投影坐标系

    投影文件 (.prj)

    地理坐标系

    投影文件 (.prj)

  • 使用最大纹理大小参数设置输出场景图层包中每个节点的纹理大小。 并非所有平台都支持大于 4096 的纹理大小。 Scene Viewer 支持最大纹理大小 8192。

  • OSGB 格式文件由 Drone2Map 和第三方提供商进行创建。 有关提供商的完整列表,请参阅集成网格场景图层

  • 使用目标云连接参数将场景图层内容输出到位于云中的对象存储,例如 Amazon S3Azure Blob 存储、Alibaba OSSGoogle Cloud。 可将此内容发布为场景服务,并且您选择的位置必须在 ArcGIS Enterprise 中注册为用户管理数据存储

  • 您可以使用创建云存储连接文件工具来构建连接文件 (.acs)。

参数

标注说明数据类型
输入数据集

OSGB 格式文件或包含 OSGB 格式文件的文件夹,将导入到集成网格场景图层包中。 此参数允许选择多个 OSGB 格式文件或选择包含 OSGB 格式文件的多个文件夹。

File; Folder
输出场景图层包
(可选)

将创建的集成网格场景图层包。 如果未指定目标云连接参数值,则此参数为必需项。

File
锚点
(可选)

将用于定位 OSGB 模型中心的点要素、.3mx.xml.wld3 文件。 如果要素类中存在多个点,则将仅使用第一个点对数据进行地理配准。

Feature Layer; File
文件后缀
(可选)

指定将针对输入数据集进行处理的文件。

  • 所有受支持的文件将对所有二进制文件(不考虑其扩展名)进行处理以确定其是否为 OSGB 格式。
  • 带有 * osgb 扩展名的文件将仅处理具有 .osgb 扩展名的文件。
String
输出坐标系
(可选)

输出场景图层包的坐标系。 它可以是任意投影坐标系或自定义坐标系。 支持的地理坐标系包括 WGS84 和 China Geodetic Coordinate System 2000。 WGS84 和 EGM96 大地水准面分别是默认的水平和垂直坐标系。 可通过以下任一方式指定坐标系:

  • 指定 .prj 文件的路径。
  • 引用具有正确坐标系的数据集。
  • 使用 arcpy.SpatialReference 对象。

Spatial Reference
最大纹理大小
(可选)

每个场景图层节点的最大纹理大小(以像素为单位)。

Long
纹理优化
(可选)

指定根据使用场景图层包的目标平台优化的纹理。

警告:

可能需要大量时间来处理包括 KTX2 的优化。 要获得最快结果,请使用桌面选项。

  • 全部所有用于桌面、Web 和移动平台的纹理格式都将进行优化,包括 JPEG、DXT 和 KTX2。
  • 桌面支持 WindowsLinuxMac 的纹理都将进行优化,包括 JPEG 和 DXT,可用于 Windows 上的 AllSource 客户端和 WindowsLinuxMac 上的 ArcGIS Runtime 桌面客户端。 这是默认设置。
  • 移动支持 AndroidiOS 的纹理将进行优化,包括 JPEG 和 KTX2,可用于 ArcGIS Runtime 移动应用程序。
  • JPEG 纹理将进行优化,可用于桌面和 web 平台。
String
目标云连接
(可选)

将输出场景图层内容 (.i3sREST) 的目标云连接文件 (.acs)。

Folder
输出名称
(可选)

输出到云存储时场景图层内容的输出名称。 仅在已指定目标云连接参数值的情况下,此参数才适用。

String

arcpy.management.CreateIntegratedMeshSceneLayerPackage(in_dataset, {out_slpk}, {anchor_point}, {file_suffix}, {out_coor_system}, {max_texture_size}, {texture_optimization}, {target_cloud_connection}, {out_name})
名称说明数据类型
in_dataset
[in_dataset,...]

OSGB 格式文件或包含 OSGB 格式文件的文件夹,将导入到集成网格场景图层包中。 此参数允许选择多个 OSGB 格式文件或选择包含 OSGB 格式文件的多个文件夹。

File; Folder
out_slpk
(可选)

将创建的集成网格场景图层包。 如果未指定目标云连接参数值,则此参数为必需项。

File
anchor_point
(可选)

将用于定位 OSGB 模型中心的点要素、.3mx.xml.wld3 文件。 如果要素类中存在多个点,则将仅使用第一个点对数据进行地理配准。

Feature Layer; File
file_suffix
(可选)

指定将针对输入数据集进行处理的文件。

  • *将对所有二进制文件(不考虑其扩展名)进行处理以确定其是否为 OSGB 格式。
  • osgb将仅处理具有 .osgb 扩展名的文件。
String
out_coor_system
(可选)

输出场景图层包的坐标系。 它可以是任意投影坐标系或自定义坐标系。 支持的地理坐标系包括 WGS84 和 China Geodetic Coordinate System 2000。 WGS84 和 EGM96 大地水准面分别是默认的水平和垂直坐标系。 可通过以下任一方式指定坐标系:

  • 指定 .prj 文件的路径。
  • 引用具有正确坐标系的数据集。
  • 使用 arcpy.SpatialReference 对象。

Spatial Reference
max_texture_size
(可选)

每个场景图层节点的最大纹理大小(以像素为单位)。

Long
texture_optimization
(可选)

指定根据使用场景图层包的目标平台优化的纹理。

警告:

可能需要大量时间来处理包括 KTX2 的优化。 要获得最快结果,请使用 DesktopNone 选项。

  • All所有用于桌面、Web 和移动平台的纹理格式都将进行优化,包括 JPEG、DXT 和 KTX2。
  • Desktop支持 WindowsLinuxMac 的纹理都将进行优化,包括 JPEG 和 DXT,可用于 Windows 上的 AllSource 客户端和 WindowsLinuxMac 上的 ArcGIS Runtime 桌面客户端。 这是默认设置。
  • Mobile支持 AndroidiOS 的纹理将进行优化,包括 JPEG 和 KTX2,可用于 ArcGIS Runtime 移动应用程序。
  • NoneJPEG 纹理将进行优化,可用于桌面和 web 平台。
String
target_cloud_connection
(可选)

将输出场景图层内容 (.i3sREST) 的目标云连接文件 (.acs)。

Folder
out_name
(可选)

输出到云存储时场景图层内容的输出名称。 此参数仅在已指定 target_cloud_connection 参数值时可用。

String

代码示例

CreateIntegratedMeshSceneLayerPackage 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

import arcpy
arcpy.env.workspace = "C:/temp"
arcpy.CreateIntegratedMeshSceneLayerPackage_management(
    "terrain_osgb", "mesh.slpk", "anchor.wld3", "OSGB", arcpy.SpatialReference(4326))
CreateIntegratedMeshSceneLayerPackage 示例 2(Python 窗口)

以下示例演示了如何在 Python 窗口中通过多文件夹输入使用此工具。

import arcpy
arcpy.env.workspace = "C:/temp"
arcpy.CreateIntegratedMeshSceneLayerPackage_management(
    ["Tile_+001_+001", "Tile_+001_+002", "Tile_+002_+001"], "mesh.slpk", 
    "anchor.shp", "OSGB", arcpy.SpatialReference(4326), 2048, "DESKTOP")
CreateIntegratedMeshSceneLayerPackage 示例 3(Python 窗口)

以下示例演示了如何在 Python 窗口中通过输出到云存储使用此工具。

import arcpy
arcpy.env.workspace = "C:/temp"
arcpy.CreateIntegratedMeshSceneLayerPackage_management(
    ["Tile_+001_+001", "Tile_+001_+002", "Tile_+002_+001"], "mesh.slpk", 
    "anchor.shp", "OSGB", arcpy.SpatialReference(4326), 2048, "DESKTOP",
    'AWS.acs', 'mySceneLayer.i3srest')