首页 / 浏览问题 / 组件GIS / 问题详情
创建缓冲区失败
38EXP 2017年07月11日

代码如下:

               Int32 id=bd_layerNetLine.Selection[0];
                if (m_lineRecordset != null)
                {
                    m_lineRecordset.Dispose();
                    m_lineRecordset = null;
                }
                m_lineRecordset = bd_pipeNet.Query("SMID = " + id, CursorType.Static);

                Datasource datasource = bd_datasource;
                m_regionDataset = datasource.Datasets["Region"] as DatasetVector;

                BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                bufferAnalystParam.EndType = BufferEndType.Round;
                bufferAnalystParam.LeftDistance = m_leftRadius;
                bufferAnalystParam.RightDistance = m_rightRadius;

m_bufferDataset=(DatasetVector)datasource.Datasets.CreateFromTemplate(bufferName,m_regionDataset);

Boolean isTrue = SuperMap.Analyst.SpatialAnalyst.BufferAnalyst.CreateBuffer(m_lineRecordset, m_bufferDataset, bufferAnalystParam, false, true);

先在网络数据集中获取点选的线记录集为m_lineRecordset,然后根据模板创建面数据集用来存放缓冲区图层,最后生成缓冲区出错,异常信息为不支持该类型:参数为sourceRecord,即m_lineRecordset 出错。求解。

1个回答

您好,面对象只支持左缓冲,不支持右缓冲。
5,985EXP 2017年07月11日
缓冲距离是设置1米 但应该是以线为中心 周围距离是1米做缓冲才对啊。现在缓冲区是在线的上面了
你获取的是这个管线作为缓冲对象吗,这个管线是矢量数据风格化得到的还是模型数据啊
管线数据是三维线数据经过符号化的,然后通过鼠标选择获取某一条。如下

Selection3D[] selection = bd_sceneControl.Scene.FindSelection(true);
 
m_lineRecordset = selection[0].ToRecordset();
你把高度模式设置成绝对高度试试呢
问题解决了!是模型数据集添加到场景时的风格没有设置好,后面我直接把Geometry3D添加到跟踪图层可以正常显示。
...