首页 / 浏览问题 / 组件GIS / 问题详情
三维场景缓冲区分析结果加载到问题
45EXP 2020年08月10日

三维场景下,使用Geometrist3D.CreateBuffer生成了缓冲区分析结果GeoModel3D,添加到kml图层后能够正确显示,然后使用kml图层的Features.ToKMLFile方法保存为kml文件,重新加载kml文件到新的kml图层后,显示结果变了,这个该如何处理?

图1是添加缓冲区分析结果到kml图层后到显示结果;

图2是用idesktop打开保存的kml文件后的结果;

图3是用我的程序加载kml文件后的结果;

2 个回答

你用的组件是那个版本
4,620EXP 2020年08月10日
.net iobjects 10.0.1
这个问题能解决吗?
使用kml图层的Features.ToKMLFile方法保存为kml文件时,如果存在GeoModel3D对象,会在路径下生成osgb文件,并在kml文件中指向此文件。这个文件我用了好几种模型预览工具,都无法打开正确查看,会不会是生成的osgb模型文件有问题?
45EXP 2020年08月11日
测试没有问题,你那边代码是怎么写的,你将这部分代码贴出来看看呢
1. 生成缓冲区分析结果(geometry3D 是在地图上选择的一条线)

GeoLine3D tmp = new GeoLine3D((geometry3D as GeoLine3D)[0]);
                for (int i = 0; i < tmp[0].Count; i++)
                {
                    Point3D p = tmp[0][i];
                    tmp[0][i] = MapUtils.Point2DToPoint3D(sceneControl, p.X, p.Y);
                }
                geometry3DBuffer = Geometrist3D.CreateBuffer(tmp, bufferAnalyst3DParameter, PrjCoordSys.FromEPSG(4326));

GeoModel3D geoModel3D = geometry3DBuffer as GeoModel3D;
            geoModel3D.Style3D = bufferGeoStyle3D;

return geoModel3D;

2. 保存kml

Layer3DKML layer3DKMLTmp = this.SceneControl.Scene.Layers[this.kmlLayerTmp] as Layer3DKML;
                layer3DKMLTmp.Features.Add(bufferResult);

layer3DKMLTmp.Features.ToKMLFile(kmlFilePath);

3. 加载kml

Layer3DKML layer3DKML = sceneControl.Scene.Layers.Add(kmlFilePath, Layer3DType.KML, true, kmlLayerName) as Layer3DKML;
方便的话,加个qq,远程看看
你的bufferGeoStyle3D设置了些什么
GeoStyle3D bufferGeoStyle3D = new GeoStyle3D();
                bufferGeoStyle3D.AltitudeMode = AltitudeMode.ClampToGround;
                bufferGeoStyle3D.FillForeColor = this.colorPickEdit_fill.Color;
                bufferGeoStyle3D.LineColor = this.colorPickEdit_line.Color;
                bufferGeoStyle3D.LineWidth = 0;
                bufferGeoStyle3D.FillMode = FillMode3D.Fill;
重现了,需要上报研发处理一下,处理后通知你
好的,谢谢
这个处理周期是多长?
这个暂时没办法给你时间节点,需要看研发的处理情况,如果着急话可以用模型数据集替代,将结果保存到模型数据集
模型数据集是哪个对象?
就是datasetvector,里面存储的是模型对象
...