首页 / 浏览问题 / 组件GIS / 问题详情
如何创建缓冲区?
25EXP 2017年12月19日
<!--StartFragment -->

我的地图是大地2000的经纬度坐标,里面有很多公路的路线,

但是进行缓冲区分析的时候,发现有有些路线绘制缓冲区失败,

得不到缓冲区,

那些路线拿到SuperMap iDesktop 7C 里是能绘制缓冲区的,

比如我想做一个 左右2边都设置10米的缓冲区,下面是我的写法,

看看是不是有啥问题?

 /// 得到路线
 GeoLine objCXGeolineTemp = objCXRecordset.GetGeometry() as GeoLine;
 /// 得到起点的纬度
 Double WD = objCXGeolineTemp[0][0].Y;//纬度
 BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
 bufferAnalystParam.EndType = BufferEndType.Flat;
 /// 就是想左右2边都设置10米的缓冲区
 bufferAnalystParam.LeftDistance = MapGeoHelper.GetRadianByDis(WD, cacheLength);  
 bufferAnalystParam.RightDistance = MapGeoHelper.GetRadianByDis(WD, cacheLength);
 //为线几何对象建立缓冲区,并将分析结果存储在结果数据集中
 GeoRegion geometryBuffer = BufferAnalystGeometry.CreateBuffer(objCXGeolineTemp, bufferAnalystParam);

MapGeoHelper.GetRadianByDis(WD, cacheLength) 是网上找的一个算法,长度转经纬度,

cacheLength * 180 / (6378178 * Math.PI * Math.Cos(latitude * Math.PI / 180));

有没有更好的方法,直接设置,不用进行转换?

1个回答

您好,使用重载方法BufferAnalystGeometry.CreateBuffer 方法 (Geometry, BufferAnalystParameter, PrjCoordSys)设置了目标坐标系之后,就可以生成以米为单位的缓冲区。
5,985EXP 2017年12月19日
...