首页 > 其他分享 >TE地图上画饼状图

TE地图上画饼状图

时间:2022-09-27 23:35:55浏览次数:68  
标签:double 画饼 jiaodu sgworld radius TE 状图 Math

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

    

TE地图上画饼状图_2d

具体的实现思路为:

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

标签:double,画饼,jiaodu,sgworld,radius,TE,状图,Math
From: https://blog.51cto.com/speciallist/5717776

相关文章

  • TE对NPAPI的支持
    NPAPI,就是指网景插件应用程序接口(NetscapePluginApplicationProgrammingInterface),是一种外部程序作为插件和浏览器共同完成网页展示的调用通道。插件就相当于运行在网页......
  • TE二次开发加载wmts
    TE中可以通过网络服务加载地图,常用的服务有wms,wmts等,WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS针对......
  • TE二次开发中的画圆
    在TE的二次开发中,有时会用到画圆标示一个范围,圆的半径根据鼠标移动而变化,跟直接使用TE画一个圆的效果相同。这需要定义TE二次开发中的鼠标点击等事件,以下是详细的画法代码。......
  • English words chapter 20220927
    ......
  • Semi-supervised New Event Type Induction and Event Detection
    Motivation手动构造事件类型和标注数据成本非常高手动标注的时间覆盖率比较低Method本文提出了一个基于VQ-VAE的半监督事件检测方法。TriggerRepresentationLear......
  • Java: Command Patterns
     /***版权所有2022涂聚文有限公司*许可信息查看:*描述:*命令模式CommandPatterns*历史版本:JDK14.02*2022-09-12创建者geovindu*2022-09-12......
  • 是时候优雅地和NullPointException说再见了
    大家好,又见面了。NullPointException应该算是每一个码农都很熟悉的家伙了吧?谁的代码不曾抛过几个空指针异常呢...比如:你写了段如下的代码:publicvoidgetCompanyFromEmp......
  • 编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
    大家好,又见面了。不知道下面这玩意大家有没有见过或者使用过?这是一个插座转换器。我们都知道日常使用的是220v的交流电,而国外不同国家使用的电流电压是不一样的(比如日本使......
  • Test 2022.09.27
    今天不知道是什么专场了,但是我知道的是我今天真的没有改完!!!!太气了,最短路的赋值号写成大于竟然不会报错,害得我改了半个下午一个晚上,lz快要崩溃了T1Windy数简简单单数位dp,......
  • golang map 和 interface 的一些记录
    golang的map读取是不需要判断key是否存在的,不存在的key会返回默认值。如果map的value是interface,那么interface是需要先进行类型转换的,非要求类型的转换,得到结果是nil。......