场景导入器#
Aerial Omniverse 数字孪生构建于 NVIDIA Omniverse 之上。因此,它要求场景几何体采用 OpenUSD 格式。然而,地理空间信息通常以其他格式提供和分发。为了弥合这一差距,Aerial Omniverse 数字孪生提供了一条管道,用于从 CityGML 格式以及 OpenStreetMap OSM 导入地理空间数据。
通过 AODT UI 导入#
运行 GIS 处理工具的一种方法是通过 AODT UI。要为此用例设置您的容器,GIS 容器必须在容器位置 /src/aodt_gis/data
挂载一个数据文件夹。通道监听器脚本也必须正在运行。
容器设置#
首先,我们需要使用 $oauthtoken
用户名和 NGC API 密钥登录到 nvcr.io 容器注册表
docker login nvcr.io
Username: $oauthtoken
Password: <NGC_CLI_API_KEY>
有关 NGC_CLI_API_KEY 的更多信息,请访问 NGC - 用户指南。
接下来,我们运行容器并挂载 <local data>
,这是存储源数据的本地文件夹
docker run --rm -it -v <local data>:/src/aodt_gis/data --pull=always nvcr.io/esee5uzbruax/aodt-gis:1.2.0 /bin/bash
现在我们位于容器内部,我们使用以下命令启动通道监听器
cd /src/aodt_gis/aodt_py/aodt_ui_gis
python3 channel_listener.py --nucleus <Nucleus server IP> --broadcast <unique broadcast channel name here>
此处列出的广播通道将与 UI GIS 选项卡中使用的通道相同。容器现在已准备好连接到 UI。
AODT UI 设置#
连接到 GIS 工作进程#
在主机上设置好 GIS 容器后,您现在可以从 UI 附加一个工作进程。工作进程允许 UI 在主机中触发 GIS 作业,并允许 GIS 容器将进度和数据传回 UI。附加工作进程在 GIS 通道 配置
部分中进行。
服务器 路径
是 Omniverse Nucleus 服务器的 URL。广播 通道 名称
是将在 UI 和 GIS 工作进程之间创建的私有通道的名称。一旦建立,UI 和 GIS 工作进程将在此通道上独占通信。服务器路径和广播通道名称应与在 GIS 容器中启动通道监听器时使用的路径和名称相同。
注意:广播通道名称必须与 EM 工作进程广播通道名称不同。否则将不允许连接。这是为了避免在同时附加 EM 工作进程和 GIS 工作进程时发生干扰。
设置完成后,单击 附加 工作进程
以附加到可用的 GIS 工作进程。
成功验证服务器并成功附加工作进程后,应出现确认窗口

如果没有可用的工作进程,则无法建立连接,或者服务器无效,将出现错误窗口。在这种情况下,请检查服务器连接、有效性以及通道监听器是否在 GIS 容器上运行。
从 UI 启动 GIS 处理#
附加工作进程后,我们能够触发 GML 或 OSM 作业。下方的进度条将传达每个作业的状态和进度。一次只能运行一个作业。UI 或 GIS 容器生成的任何日志都将在 UI 的 控制台
选项卡中,并启用 信息
过滤器。以下是有关如何启动每种作业类型的处理的更多详细信息。
OpenStreetMap (OSM)#
有关通过图形界面提供的参数的说明,请参阅本文档的后续章节。
假设已附加工作进程,一旦设置好参数,我们就可以单击 开始 OSM 处理
按钮。下方的进度条将反映来自 GIS 容器的进度以及状态日志。
当作业成功完成时,状态将显示 已成功完成
,并且 USD 文件将位于 输出 阶段
字段中指定的路径中。控制台将包含有关附加工作进程生成的作业的附加信息。如果作业失败,状态将显示 失败 (检查 控制台 以获取更多信息)
。控制台将包含有关作业失败原因的更多信息。
CityGML#
有关通过图形界面提供的参数的说明,请参阅本文档的前一节。
假设已附加工作进程,一旦设置好参数,我们就可以单击 开始 GML 处理
按钮以生成我们要分析的场景。下方的进度条将反映 GIS 容器生成场景的进度以及状态日志。
当作业成功完成时,状态将显示 已成功完成
,并且 USD 文件将位于 输出 阶段
字段中指定的路径中。如果作业失败,状态将显示 失败 (检查 控制台 以获取更多信息)
,并且控制台将包含更多信息。
通过命令行界面 (CLI) 导入#
我们也可以直接使用 CLI 使用 CityGML 和 OSM 导入工具。为此,与其他设置步骤一样,我们通过运行以下命令启动容器
docker run --rm -it -v <local_path>:/src/aodt_gis/data --pull=always nvcr.io/esee5uzbruax/aodt-gis:1.1.0 /bin/bash
其中 <local_data> 是包含 GIS 数据的文件夹。
CityGML 导入#
GML 导入脚本可以直接在以下位置访问
cd /src/aodt_gis/aodt_py/aodt_ui_gis
python3 gis_jobs/gml_job.py
它具有以下参数
参数 |
必需 |
描述 |
---|---|---|
|
是 |
此参数指定源数据的 URL。 |
|
是 |
此参数指定需要保存 USD 场景的 URL。 |
|
否 |
如果设置,管道将执行输入和输出坐标参考系统之间的转换,如其 EPSG 代码所定义。目前,仅支持从地理坐标系(角度单位)到投影坐标系(线性单位)的转换。例如,从 EPSG:6697 到 EPSG:32654 的转换将表示为 |
|
否 |
指定是否创建程序生成的室内空间。 |
|
否 |
在移动网格中创建更粗糙的切割,即不如足迹几何体那么紧密。可用于特别复杂或大型的场景。 |
例如,假设我们要从 PLATEAU 导入一部分东京。
首先,运行脚本将东京 CityGML 包下载到我们的数据文件夹。请注意,这可能需要一些时间。
cp /src/aodt_gis/samples/get_tokyo.bash /src/aodt_gis/data
sh /src/aodt_gis/samples/get_tokyo.bash
rm -r /src/aodt_gis/data/get_tokyo.bash
接下来,我们可以运行命令
python3 gml_job.py -i /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/udx/bldg/53393599_bldg_6697_2_op.gml -ei 6697 -eo 32654 -o /src/aodt_gis/data/tokyo_small.usd
参数
-ei 6697 -eo 32654
表示我们正在从源坐标参考系统 (EPSG 6697) 投影到 UTM(通用横轴墨卡托)54N 区。
除非传递以下参数,否则将程序生成室内空间
--disable_interiors True
室内空间是根据每层的建筑物足迹创建的。
OpenStreetMap (OSM) 导入#
OSM 导入脚本可以直接在以下位置访问
cd /src/aodt_gis/aodt_py/aodt_ui_gis/
python3 gis_jobs/osm_job.py
它具有以下参数
参数 |
必需 |
描述 |
---|---|---|
|
是 |
此参数指定需要保存 USD 场景的 URL。 |
|
是 |
此参数以十进制度数指定感兴趣区域的边界框,顺序如下: |
|
否 |
指定是否创建程序生成的室内空间。 |
例如,要导入德克萨斯大学奥斯汀分校周围区域的地图,我们将运行以下命令
python3 gis_jobs/osm_job.py -o /src/aodt_gis/data/ut_austin.usd -c -97.74384 30.27690 -97.72444 30.29416
旧版 CLI#
要从以前的版本访问 CLI 工具,您可以使用以下命令或参考以前版本的文档。请注意,使用旧版管道生成的地图将不支持程序室内空间的生成。
对于 GML 导入,
python3 gis_jobs/legacy_gml_job.py --in_gmls /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/13100_tokyo23-ku_2022_citygml_1_2_op/udx/dem/533936_dem_6697_op.gml /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/13100_tokyo23-ku_2022_citygml_1_2_op/udx/dem/533935_dem_6697_op.gml /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/13100_tokyo23-ku_2022_citygml_1_2_op/udx/bldg/53393599_bldg_6697_2_op.gml /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/13100_tokyo23-ku_2022_citygml_1_2_op/udx/bldg/53393690_bldg_6697_2_op.gml /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/13100_tokyo23-ku_2022_citygml_1_2_op/udx/bldg/53393589_bldg_6697_2_op.gml /src/aodt_gis/data/13100_tokyo23-ku_2022_citygml_1_2_op/13100_tokyo23-ku_2022_citygml_1_2_op/udx/bldg/53393680_bldg_6697_2_op.gml -o /src/aodt_gis/data/tokyo_small_legacy.usd -ei EPSG:6697 -eo EPSG:32654 -s 100
对于 OSM,
python3 osm_job.py -c -97.74384 30.27690 -97.72444 30.29416 -o /src/aodt_gis/data/ut_austin_legacy.usd
示例地图#
地图名称 |
源数据 |
描述 |
纹理 |
室内 |
---|---|---|---|---|
|
OSM |
OSM 导入坐标 |
否 |
是 |
|
京都一部分,由以下图块定义。包括 DEM 和程序生成的室内空间。 |
否 |
是 |
|
|
与 kyoto.usd 相同,但不包含 DEM 文件。演示如果没有 DEM,将放置一个平面。 |
否 |
是 |
|
|
京都的较小且较轻的地图,由图块定义 |
否 |
是 |
|
|
与 ````kyoto.usd``` 覆盖相同区域的旧版京都地图。它不包含程序生成的室内空间,但包含纹理。 |
是 |
否 |
|
|
东京一部分,具有 LOD4 特征,由图块定义 |
否 |
否 |
|
|
东京一部分,由以下图块定义。包括 DEM 和程序生成的室内空间。 |
否 |
是 |
|
|
与 tokyo.usd 相同,但不包含 DEM 文件。演示如果没有 DEM,将放置一个平面。 |
否 |
是 |
|
|
此参数以十进制度数指定感兴趣区域的边界框,顺序如下: |
否 |
是 |
|
|
与 |
是 |
否 |
|
|
苏黎世地图,由图块定义 |
否 |
否 |
|
|
此地图是从使用 Blender 和 Omniverse 的摄影测量模型导出的。它包含用于模拟的图层(在 |
是 |
否 |