溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TE地圖上如何畫餅狀圖

發(fā)布時間:2021-12-03 17:45:29 來源:億速云 閱讀:144 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下TE地圖上如何畫餅狀圖,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    如何在TE上畫一個餅狀圖,需要調用TE開發(fā)的幾個API接口,和一些簡單的數(shù)學算法,效果圖如下:

TE地圖上如何畫餅狀圖

具體的實現(xiàn)思路為:

       一個圓的角度為360度,首先計算餅狀圖中的對象有多少個,每個對象所占有的角度有多少,設定餅狀圖外接圓的半徑,外接圓的圓心位置;

     根據(jù)每一個角度和半徑,獲取東西向、南北向的移動距離,使用的函數(shù)為半徑*sin和半徑*cos,在根據(jù)移動距離和中心點,使用sgworld.CoordServices.MoveCoord函數(shù),具體參數(shù)參見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(); 

   }

//創(chuàng)建polygon

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

ITerrainPolygon6 ipolygon = sgworld.Creator.CreatePolygon(igeometry, color1,color1,AltitudeTypeCode.ATC_ON_TERRAIN,group);//把幾個點連成多邊形。

以上是“TE地圖上如何畫餅狀圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

te
AI