首页 / 浏览问题 / 组件GIS / 问题详情
.net进行缓冲区分析方法时程序没反应
44EXP 2018年01月21日
我基于SuperMap iObject.net开发了一个系统,现在进行了路径分析,得到了路由对象,我把路由对象转换成了线几何对象,对线对象进行缓冲区分析,但是代码一旦执行到缓冲区分析方法的时候程序就没反应了(没有报错,窗体变得不可被操作),将路由对象转换为线对象没有问题,线对象是存在的并且可以加载到跟踪图层上。就是不能进行缓冲区分许,我想请问一下是什么问题,应该怎么解决。。很急,拜托了。

代码如下:

                GeoLineM geoLineM = mResult.Routes[0];
                GeoStyle m_style = new GeoStyle();
                m_style.LineColor = Color.Blue;
                m_style.LineWidth = 1;
                geoLineM.Style = m_style;
                GeoLine line = new GeoLine();
                line = geoLineM.ConvertToLine();

                    BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                //这里设置缓冲区头的类型对于线的缓冲区起作用
                bufferAnalystParam.EndType = BufferEndType.Round;
                //设置缓冲区半径    这里设置的数据集的单位  这里设置为10
                bufferAnalystParam.LeftDistance = 100
                bufferAnalystParam.RightDistance = 10;

GeoRegion bufferRegion = BufferAnalystGeometry.CreateBuffer(line, bufferAnalystParam);
                GeoStyle geoStyle_R = new GeoStyle();
                geoStyle_R.FillBackColor = Color.Green;
                geoStyle_R.FillForeColor = Color.Red;
                geoStyle_R.FillBackOpaque = true;
                geoStyle_R.FillOpaqueRate = 50;
                geoStyle_R.FillGradientAngle = 30.0;
                geoStyle_R.FillGradientMode = FillGradientMode.Linear;

                m_trackingLayer.Add(bufferRegion, "缓冲区");

            mMapcontrol.Map.RefreshTrackingLayer();
                    mMapcontrol.Map.Refresh();

3 个回答

你先试试断点调试,一步一步执行一下,或则用Trace方式捕捉一下错误的原因看看
365EXP 2018年01月21日
你这个方法是没有问题的,你仔细检查一些参数看看。
365EXP 2018年01月22日
BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                                bufferAnalystParam.EndType = BufferEndType.Flat;

                                bufferAnalystParam.RadiusUnit = BufferRadiusUnit.Meter;
                                bufferAnalystParam.LeftDistance = cacheLength;  //此处为获取缓冲区半径的一个方法.
                                bufferAnalystParam.RightDistance = cacheLength;
                                GeoRegion geometryBuffer = BufferAnalystGeometry.CreateBuffer(objCXGeolineTemp, bufferAnalystParam, mainMap.Map.PrjCoordSys);//为线几何对象建立缓冲区,并将分析结果存储在结果数据集中
 

用三个参数的那个方法 BufferAnalystGeometry.CreateBuffer试试
25EXP 2018年03月08日
...