温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TE地图上如何画饼状图

发布时间:2021-12-03 17:45:29 来源:亿速云 阅读:135 作者:小新 栏目:大数据

小编给大家分享一下TE地图上如何画饼状图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    如何在TE上画一个饼状图,需要调用TE开发的几个API接口,和一些简单的数学算法,效果图如下:

TE地图上如何画饼状图

具体的实现思路为:

       一个圆的角度为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);//把几个点连成多边形。

以上是“TE地图上如何画饼状图”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

te
AI