作者:姜尔
一、技术思路
本文主要使用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);
}
}
四、运行结果展示


498

被折叠的 条评论
为什么被折叠?



