weizhongrun
倾斜摄影是一种通过高效的数据采集设备及专业的数据处理流程生成的数据成果直观反映地物的外观、位置、高度等属性,为真实效果和测绘级精度提供保证的高新技术,在超图的许多产品中,也支持对于倾斜摄影的导入、显示、格式转换、裁剪、压平等操作;在SuperMap iClient3D for WebGL中,对于倾斜摄影的压平时,通常使用到的是一个完整的多边形对倾斜摄影做压平修改,但是在日常的生活中,偶尔也会遇到如下图这样的压平需求:
遇到这样的情况,我们如果直接使用查询结果进行压平的话,会得到以下的结果:
也就是说,在压平的过程中将压平区域中间的空洞部分也压平了,但是中间的岛洞存在就是因为想要保留中间区域而只压平面的部分,但是由于面的节点信息都以同样的方式存储在了同一个位置,所以在查询时,尽管获取了全部的节点信息,在压平的接口中仍然只划定了一个面区域。
所以,在使用岛洞多边形对倾斜摄影进行压平时,可以适当的对岛洞多边形进行切分(对象操作-对象编辑-画线切割),在切分后即可得到两个对象,再使用这个数据集发布数据服务,在代码中进行查询压平即可得到以下的结果
以下是功能代码
function onQueryComplete(queryEventArgs) {
let features = queryEventArgs.originResult.features;
for (let k = 0; k < features.length; k++) {
yaping(features[k]);
};
}
function yaping(featureK) {
var layer = scene.layers.find("compressed");
let points = featureK.geometry.points;
let region = []
for (let j = 0; j < points.length; j++) {
region.push(points[j].x)
region.push(points[j].y)
region.push(54)
}
console.log(region);
layer.addFlattenRegion({
position: region,
name: 'flatten' + Math.random()
});
}
function doSqlQuery(SQL) {
var getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams;
getFeatureParam = new SuperMap.REST.FilterParameter({
attributeFilter: SQL
});
getFeatureBySQLParams = new SuperMap.REST.GetFeaturesBySQLParameters({
queryParameter: getFeatureParam,
toIndex: -1,
datasetNames: ["test:" + "WRegion3D_1"]
});
var url = 'http://localhost:8090/iserver/services/data-CSDNdaodong/rest/data';
getFeatureBySQLService = new SuperMap.REST.GetFeaturesBySQLService(url, {
eventListeners: {
"processCompleted": onQueryComplete,
"processFailed": processFailed
}
});
getFeatureBySQLService.processAsync(getFeatureBySQLParams);
}
function processFailed(queryEventArgs) {
alert('查询失败!');
}