SuperMap iObject Java实现倾斜数据预处理
一、技术思路
本文主要使用SuperMap iObject Java 12.0.1版本(https://support.supermap.com/DownloadCenter/ProductPlatform.aspx)实现倾斜预处理功能,并输出日志文件记录错误文件及错误类别等相关信息。
倾斜数据预处理功能是对OSGB格式倾斜摄影三维模型数据入库前进行检查,数据检查后会在OSGB文件夹下生成一个文本文件,文本中记录了错误的OSGB倾斜数据,文本中记录了错误的OSGB倾斜数据文件及错误的类别等信息。对于损坏的文件,自动剪切到新文件夹中;对于错误数据,在原文件中生成了修复处理后的错误数据,并将原始数据进行备份。您可以将备份的错误数据剪切到别的文件夹下,再进行倾斜入库操作。
主要使用类及接口:
类 | 类说明 | 方法 | |
ObliquePhotogrammetryGovernance |
| checkAndRepair() | 执行检查文件完整性以及修复 |
isContainErrorFile() | 是否存在已损坏文件 优先检查倾斜数据是否有损坏,如没有损坏的文件,再检查不规范的数据。 | ||
setGovernanceParameters(GovernanceParameters params) | 设置倾斜检查参数 | ||
setInputFolder(String inputFolder) | 设置输入目录,原始倾斜数据所在文件目录。 | ||
setLogFilePath(String logFilePath) | 设置输出日志文件路径。 | ||
GovernanceParameters |
| setCheckFileIntegrity(boolean isCheckFileIntegrity) | 设置是否检查文件的完整性。 |
setRemoveErrorFile(boolean isRemoveErrorFile) | 设置是否移除损坏的文件 | ||
setRemoveRedundantTexture(boolean isRemoveRedundantTexture) | 设置是否移除冗余的纹理,默认为false。 | ||
setRepairErrorBoundingBox(boolean isRepairErrorBoundingBox) | 设置是否修复错误的包围盒,默认值为false。 | ||
setRepairErrorGeometry(boolean isRepairErrorGeometry) | 设置是否修复错误的几何信息 | ||
setScaleTexture(boolean isScaleTexture) | 设置是否缩放纹理 | ||
setCacheLimitTextureSize(CacheLimitTextureSize cacheLimitTextureSize) | 设置纹理限制尺寸大小,大于这个值才会提示,默认值为8192。 | ||
setVaildPositionRange(double vaildPositionRange) | 设置几何顶点坐标阈值,用于检查和识别*.osgb倾斜摄影三维模型中几何顶点位置异常的数据。 |
二、主要代码
ObliquePhotogrammetryGovernance obliquePhotogrammetryGovernance= new ObliquePhotogrammetryGovernance();obliquePhotogrammetryGovernance.setInputFolder("..\\data");//设置输入目录,原始倾斜数据所在文件目录。Boolean falg =obliquePhotogrammetryGovernance.isContainErrorFile();//是否存在已损坏文件 优先检查倾斜数据是否有损坏,如没有损坏的文件,再检查不规范的数据。如果检查到损坏的文件,返回true,并在原始倾斜数据目录下生成一个lod.txt文件,文件里记录了哪些osgb文件已经损坏,需要将这些数据修复后再继续使用。 如果未检查到损坏的文件,则返回false。System.out.println("是否存在已损坏文件:"+falg);obliquePhotogrammetryGovernance.setLogFilePath("..\\test.log");//设置输出日志文件路径。obliquePhotogrammetryGovernance.setGovernanceParameters(governanceParameters);//设置倾斜检查参数Boolean flag7=obliquePhotogrammetryGovernance.checkAndRepair();//执行检查文件完整性以及修复System.out.println("是否执行检查文件完整性以及修复:"+flag7);
三、完整示例代码
package gettingstarted;import com.supermap.data.processing.CacheLimitTextureSize;
import com.supermap.data.processing.GovernanceParameters;
import com.supermap.data.processing.ObliquePhotogrammetryGovernance;public class qingxieObliquePhotogrammetryGovernance {
// 倾斜预处理:支持对倾斜数据进行检查和修复,是否检查和修复损坏文件、是否修复错误的包围盒、是否修复错误的骨架、是否修复过大的纹理(支持设置纹理阈值)、是否修复冗余纹理。public static void main(String[] args) {GovernanceParameters governanceParameters=new GovernanceParameters();governanceParameters.setCacheLimitTextureSize(CacheLimitTextureSize.LimitSize_1024);//设置纹理限制尺寸大小,大于这个值才会提示,默认值为8192。governanceParameters.setCheckFileIntegrity(true);// 设置是否检查文件的完整性。governanceParameters.setRemoveErrorFile(true);// 设置是否移除损坏的文件governanceParameters.setRemoveRedundantTexture(true);// 设置是否移除冗余的纹理,默认为false。governanceParameters.setRepairErrorBoundingBox(true);// 设置是否修复错误的包围盒,默认值为false。governanceParameters.setRepairErrorGeometry(true);// 设置是否修复错误的几何信息governanceParameters.setScaleTexture(true);// 设置是否缩放纹理governanceParameters.setVaildPositionRange(1.0e8);// 设置几何顶点坐标阈值,用于检查和识别*.osgb倾斜摄影三维模型中几何顶点位置异常的数据。Boolean falg1 =governanceParameters.isCheckFileIntegrity();// 获取是否检查文件的完整性,默认值为true。Boolean falg2 =governanceParameters.isRemoveErrorFile();// 是否移除损坏的文件 默认值为false。Boolean falg3 =governanceParameters.isRemoveRedundantTexture(); // 获取是否移除冗余的纹理,默认为false。Boolean falg4 =governanceParameters.isRepairErrorBoundingBox(); // 获取是否修复错误的包围盒,默认值为false。Boolean falg5 =governanceParameters.isRepairErrorGeometry(); // 是否修复错误的几何信息,默认值为false。Boolean falg6 =governanceParameters.isScaleTexture(); // 是否缩放纹理,默认值为false。System.out.println("是否检查文件的完整性:"+falg1+" 是否移除损坏的文件:"+falg2+" 是否移除冗余的纹理:"+falg3+" 是否修复错误的包围盒:"+falg4+" 是否修复错误的几何信息:"+falg5+" 是否缩放纹理:"+falg6);ObliquePhotogrammetryGovernance obliquePhotogrammetryGovernance= new ObliquePhotogrammetryGovernance();obliquePhotogrammetryGovernance.setInputFolder("E:\\software\\supermap\\iobjectsjava\\1201\\offical\\supermap-iobjectsjava-2025u1-win-all\\GettingStarted\\GettingStarted\\src\\testData\\data");//设置输入目录,原始倾斜数据所在文件目录。Boolean falg =obliquePhotogrammetryGovernance.isContainErrorFile();//是否存在已损坏文件 优先检查倾斜数据是否有损坏,如没有损坏的文件,再检查不规范的数据。如果检查到损坏的文件,返回true,并在原始倾斜数据目录下生成一个lod.txt文件,文件里记录了哪些osgb文件已经损坏,需要将这些数据修复后再继续使用。 如果未检查到损坏的文件,则返回false。System.out.println("是否存在已损坏文件:"+falg);obliquePhotogrammetryGovernance.setLogFilePath("E:\\software\\supermap\\iobjectsjava\\1201\\offical\\supermap-iobjectsjava-2025u1-win-all\\GettingStarted\\GettingStarted\\src\\testData\\test.log");//设置输出日志文件路径。obliquePhotogrammetryGovernance.setGovernanceParameters(governanceParameters);//设置倾斜检查参数Boolean flag7=obliquePhotogrammetryGovernance.checkAndRepair();//执行检查文件完整性以及修复System.out.println("是否执行检查文件完整性以及修复:"+flag7);}
}