倾斜摄影模型单体化与属性查询操作
倾斜摄影模型通常被称作“一张皮”的模型,为发挥倾斜摄影模型应用价值,必须对倾斜摄影模型进行单体化处理。超图三维率先采用了模型叠加矢量面的方式对倾斜摄影模型进行单体化,此方式操作简单,并且在矢量面数据的属性表中存储业务方面的各类属性信息,实现单体化的同时能够在倾斜摄影模型进行属性查询。
目前,SuperMap iClient3D for WebGL提供了众多示范程序,其中“倾斜摄影属性查询”范例便演示了倾斜摄影模型实现单体化选择和属性查询的效果。
1.数据准备
必备数据包括:
①倾斜摄影模型数据:如*.osgb格式的倾斜摄影模型及配置文件(.scp),若无配置文件,请参照“加载倾斜摄影模型操作手册”的第一步生成SCP配置文件。
②二维矢量面数据:矢量面数据与倾斜摄影模型位置匹配,完善矢量面数据的属性表;矢量面数据存放于文件数据源(.udb/*.udbx)中。
为做演示,笔者制作修改了一份矢量面数据,其属性结构如下图,其中“Name/名称”和“Des/描述”字段是本示例的业务字段,将用于属性查询。
在“工作空间管理器”中选中数据集并打开其属性表,在功能区“属性表”选项卡“编辑”组中单击“属性结构”,即可查看、修改数据的属性结构,并且请根据业务需求为矢量数据添加属性字段、完善属性值。
为了能够像范例一样在选中模型时展示图片,可选地准备了图片资源(.jpg),将图片资源存放于“%WebGL产品包%\examples\images”文件夹下。图片的名称与矢量面属性表的“Name/名称”字段值相同。
2. 压缩并单体化
操作说明
通过模型单体化处理,相当于为倾斜摄影模型“绑定”位置匹配的矢量面数据。
操作步骤
(1). 在“工作空间管理器”“数据源”处打开存放有矢量面数据的文件型数据源(.udb/*.udbx);
(2). 在SuperMap iDesktop桌面产品的“三维数据”选项卡–>“三维瓦片”组中单击“压缩并单体化”按钮,如下图所示。
(4). 在对话框的左上角“+”处添加倾斜摄影模型配置文件(*.scp)。
(5). 在对话框的“参数设置”处可设置倾斜数据的压缩类型、保存类型及目标文件,具体说明如下:
压缩类型:默认DXT(PC设备)压缩方式。目前支持五种压缩类型:WebP、DXT(PC设备)、CRN_DXT5(PC设备)、PVRTC(iOS系列设备)、ETC(Android系列设备)、不压缩。对于不同用途的数据,采用不同的纹理压缩方式,可以减少纹理图像所使用的显存数量。
WebP(减少总量):适用于 Web端/PC机上通用的压缩纹理格式。数据总量减少,提高传输性能。
DXT(PC设备):适用于 PC 机(个人计算机)上通用的压缩纹理格式。显存占用减少,提升渲染性能,但是数据总量会增加。
PVRTC(iOS系列设备-快速):适用于苹果 iOS 设备上通用的压缩纹理格式。以此种方式进行纹理压缩时,同时会生成一个离线地图包,方便 iOS 设备用户使用。
PVRTC(iOS系列设备):适用于苹果 iOS 设备上通用的压缩纹理格式。以此种方式进行纹理压缩时,同时会生成一个离线地图包,方便 iOS 设备用户使用。
ETC(Android系列设备):适用于 Android 设备上通用的压缩纹理格式。以此种方式进行纹理压缩时,同时会生成一个离线地图包,方便 Android 设备用户使用。
保存类型:支持生成S3M/S3MB格式的结果数据。
目标路径:单体化处理后目标文件存放路径。
(6). 在对话框的“参数设置”处可设置矢量面数据所在的数据源、数据集和关联字段,具体说明如下:
数据源:与倾斜摄影模型匹配的矢量面数据所在的数据源。选择当前工作空间所打开的数据源。
数据集:与倾斜摄影模型匹配的矢量面数据所在的数据集。
目标字段:用于存储数据特征的字段。
(7). 设置完以上参数后,单击“确定”按钮,等待处理完成。
操作结果
操作完成后,目标路径下产生了一个*.scp文件及多个存放有模型的文件夹,其目录结构和文件数量及名称均与原文件一致。为验证单体化效果,在SuperMap iDesktop中以“添加三维切片缓存图层”方式将此单体化处理的模型添加到球面场景,定位到该图层,在场景中鼠标单击某一房屋模型,该模型被高亮显示,由此可见,单体化处理成功。
- 发布三维服务和数据服务
操作说明
在此步骤将S3M格式的倾斜摄影模型以三维服务的形式发布到本地或远程服务器上,实现Web网络资源共享,为实现属性查询,还将发布一个数据服务。
操作步骤
(1).在SuperMap iDesktop桌面产品的 “工作空间管理器”中,在“数据源”处右键点击“打开文件型数据源”,打开存有矢量面数据的数据源(.udb/.udbx);
(2).新建一个球面场景,在“图层管理器”下选中“普通图层”,右键点击“添加三维切片缓存图层”,选择“压缩并单体化”操作生成的*.scp配置文件。
(3).加载数据后,定位到图层并设置合适观察角度,保存场景和工作空间;保存后须关闭当前工作空间,占用可能导致后续服务发布失败。
(4).启动SuperMap iServer服务:在 %SuperMap iServer_HOME%/bin 目录下,点击“startup.bat“批处理文件启动服务。
(5).打开浏览器,地址栏输入http://localhost:8090/iserver/manager 进入“服务管理“页面,“首页”下点击“快速发布一个或一组服务“按钮。
(6).弹出“快速发布服务-选择发布的数据来源”对话框,在”数据来源“处选择”工作空间“,点击”下一步“。
(7).弹出“快速发布服务-配置数据“对话框,点击”远程浏览“按钮选择前述所保存的工作空间,点击”下一步“。
(8).弹出“快速发布服务-选择发布的服务类型“对话框,勾选”REST-数据服务“和”REST-三维服务“,点击”下一步“。
至此,服务发布已配置完成,按照提示点击“完成“和”关闭“按钮。操作结果,服务发布完成后,将在服务列表中显示该三维服务,如下图所示。
- 客户端浏及属性查询
操作说明
发布了三维服务以后,在此步骤中便可通过WebGL客户端浏览地形数据。
提示:在操作前请将WebGL产品包存放在 %SuperMap iServer_HOME%/webapps 目录下。
操作步骤
(1) 获取三维服务url地址,按照如下顺序点击获取:
进入服务列表页面(http://localhost:8090/iserver/services),找到并点击上一步骤所发布的三维服务;
在“服务管理”页面“基本信息”处点击“服务地址”
进入“根目录“页面,点击”realspace“;
进入”三维服务根节点(3D)“页面,点击“datas“;
进入”三维数据列表(datas)“页面,点击“Config“;
进入“三维数据资源(data)“页面,点击”获取三维数据的配置文件“,出现如下图所示的页面,复制浏览器地址栏的url地址。
(2) 进入WebGL产品包存放路径(%SuperMap iServer_HOME%/webapps),在“examples”文件夹下,文本方式打开“S3MTiles.html“范例,修改如下图的内容。
修改scene. addS3MTilesLayerByScp ()函数:将地址修改为方才复制的url地址,并更改name。
修改Cesium.Cartesian3.fromDegrees()函数:它的参数为倾斜摄影模型的中心点位置,分别为经度、纬度和高程。请更改为scp文件中的插入点坐标,用于飞行定位到倾斜摄影模型位置。
(3) 获取数据服务url地址,按照如下顺序点击获取:
进入服务列表页面(http://localhost:8090/iserver/services),找到并点击上一步骤所发布的数据服务;
在“服务管理”页面“基本信息”处点击“服务地址”
进入“根目录“页面,点击”data“;
进入”数据服务的根节点(data)“页面,复制当前页面的url地址,如下图:
(4)在“S3MTiles.html“范例中设置属性查询参数,即修改layer.setQueryParameter()部分,如下图:
其中,url为数据服务的地址,粘贴“数据服务的根节点(data)“页面的url地址;
dataSourceName为数据源的名称;
dataSetName为矢量面数据集的名称;
keyWord为查询关键字,可设置为“SmID”字段。
(5) 范例修改完毕, 以localhost方式打开“S3MTiles.html “网页,浏览器输入地址即为:http://localhost:8090/%WebGL产品包%/examples/webgl/S3MTiles.html
操作结果
打开网页后,相机飞至倾斜摄影模型所在位置,点击任一模型,模型高亮并弹出窗口显示属性,效果如下图: