SuperMap iObject Java 如何提取倾斜摄影三维模型单体建筑
·
作者:姜尔
一、技术思路
本文提供使用SuperMap iObject Java 提取倾斜摄影三维模型单体建筑模型的方法代码以及效果展示。
主要使用方法类:
ModelBuilder3D#extractBuildings(String scpFileName,DatasetVector datasetVectorSrc,Datasource targetDatasource,String strDatasetName, BuildingExtractParameters extractParameter)倾斜单体化提取建筑。
该工具可基于建筑物轮廓面数据集和倾斜摄影三维模型数据(S3M),提取生成带顶部和侧面真实纹理的LOD 2.1级建筑精细模型。
参数说明
|
参数名 |
参数释义 |
参数类型 |
|
SCP路径: |
选择待操作的S3M瓦片对应的配置文件。 S3M瓦片数据需要生成空间索引。 |
String |
|
矢量面数据: |
选择待操作的建筑物轮廓面数据集。 |
DatasetVector |
|
矢量面与倾斜模型中建筑准确贴合 (可选) |
设置输入的轮廓面是否准确贴合倾斜摄影三维模型数据中的建筑。 如果不勾选,表示轮廓面不准确,程序会对输入的矢量面数据进行放大偏移,使倾斜摄影三维模型数据中的建筑能完全处于轮廓面范围内。反之,则不进行操作。 |
Boolean |
|
目标数据源 |
设置存储结果数据的数据源。 |
Datasource |
|
结果数据集名 |
设置结果数据集的名称。 |
String |
输出结果
|
参数名 |
参数释义 |
参数类型 |
|
结果数据集 |
结果数据集 |
DatasetVector |
具体参数说明详见帮助文档(https://support.supermap.com/DataWarehouse/WebDocHelp/iObjectsJava/index.html):

二、主要代码
boolean falg= ModelBuilder3D.extractBuildings(scpFileName, datasetVectorSrc, targetDatasource, strDatasetName, extractParameter) ;//倾斜单体化提取建筑,是否处理成功,类型值为boolean,true表示提取成功,反之则失败。
三、完整示例代码
package gettingstarted;
import com.supermap.data.*;
import com.supermap.realspace.threeddesigner.BuildingExtractParameters;
import com.supermap.realspace.threeddesigner.ModelBuilder3D;
public class qingxieextractBuildings {
public static void main(String[] args) {
Workspace workspace = new Workspace();// 定义工作空间
WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo();
workspaceConnectionInfo.setType(WorkspaceType.SMWU);
workspaceConnectionInfo.setServer("dantihua\\WorkSpace.smwu");
workspace.open(workspaceConnectionInfo);
Datasource targetDatasource=workspace.getDatasources().get(0);//存储结果数据的数据源
String scpFileName="dantihua\\Config\\Config.scp";//倾斜SCP路径
DatasetVector datasetVectorSrc=(DatasetVector) targetDatasource.getDatasets().get("NewRegion3D");//对应建筑的矢量面数据集
String strDatasetName="倾斜单体化";//输出的模型数据集名称
BuildingExtractParameters extractParameter=new BuildingExtractParameters();//提取参数
extractParameter.setAccurateBuildingFootprint(false);//设置输入的矢量面是否准确贴合建筑。设置true,表示会对建筑矢量面进行放大偏移,以便使矢量面更贴合建筑;设置false,表示不进行放大处理,采用原矢量面。
System.out.println("开始提取倾斜单体建筑");
boolean falg= ModelBuilder3D.extractBuildings(scpFileName, datasetVectorSrc, targetDatasource, strDatasetName, extractParameter) ;//倾斜单体化提取建筑,是否处理成功,类型值为boolean,true表示提取成功,反之则失败。
System.out.println("提取状态:"+falg);
datasetVectorSrc.close();
workspaceConnectionInfo.dispose();
workspace.dispose();
}
}
四、运行结果展示



更多推荐




所有评论(0)