如何创建缓冲区?

0 投票
50 浏览
<!--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));

有没有更好的方法,直接设置,不用进行转换?
最新提问 12月 19, 2017 分类:  50次浏览 | 用户: firesword 才疏学浅 (13 分)

1个回答

0 投票
 
已采纳
您好,使用重载方法BufferAnalystGeometry.CreateBuffer 方法 (Geometry, BufferAnalystParameter, PrjCoordSys)设置了目标坐标系之后,就可以生成以米为单位的缓冲区。
最新回答 12月 19, 2017 用户: 胡林 名扬四海 (3,363 分)
采纳于 12月 19, 2017 用户:firesword
...