skyline开发:地图上画饼状图

如何在TE上画一个饼状图,需要调用TE开发的几个API接口,和一些简单的数学算法,效果图如下:
在这里插入图片描述
具体的实现思路为:

   一个圆的角度为360度,首先计算饼状图中的对象有多少个,每个对象所占有的角度有多少,设定饼状图外接圆的半径,外接圆的圆心位置;

 根据每一个角度和半径,获取东西向、南北向的移动距离,使用的函数为半径*sin和半径*cos,在根据移动距离和中心点,使用sgworld.CoordServices.MoveCoord函数,具体参数参见API帮助,获取一个新的圆弧坐标点,再同理的方法,获取终点的圆弧坐标点,中心点和两个新获取的点连起来,得到一个三角形,为了使圆弧看起来比较平滑,需要在中间进行差值点,之后把所有点连起来,即为饼状图的一块。

  简略代码示意:

//两个方向距离获取

double dushu = jiaodu + 360 * yi1 / sum;

double sin = Math.Sin(dushu *Math.PI/180);

double cos = Math.Cos(dushu * Math.PI / 180);

double eastwest = radius * cos;

double southnorth = radius * sin;

//坐标方向移动

int chazhi = Convert.ToInt32((dushu - jiaodu) / 2);

ICoord2D move = sgworld.CoordServices.MoveCoord(yuanxi.X, yuanxi.Y, eastwest, southnorth);

//差值

for (int j = 1; j < chazhi; j++)

{

double sinint = Math.Sin((jiaodu + j * 2) * Math.PI / 180);

double cosint = Math.Cos((jiaodu + j * 2) * Math.PI / 180);

double eastwestint = radius * cosint;

double southnorthint = radius * sinint;

ICoord2D moveint = sgworld.CoordServices.MoveCoord(yuanxi.X, yuanxi.Y, eastwestint, southnorthint);

 polygon += "," + moveint.X.ToString() + " " + moveint.Y.ToString(); 

}

//创建polygon

IGeometry igeometry = sgworld.Creator.GeometryCreator.CreateGeometryFromWKT(polygon);

ITerrainPolygon6 ipolygon = sgworld.Creator.CreatePolygon(igeometry, color1,color1,AltitudeTypeCode.ATC_ON_TERRAIN,group);//把几个点连成多边形。

更多文章请关注公众号查看!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值