您好,登錄后才能下訂單哦!
小編給大家分享一下TE7如何獲取區域高程,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在te7的版本更新中,在Analysis的接口中,新增了QueryElevationBuffer的接口,按照幫助文檔中的描述,此接口可以獲得一塊區域中的高程,對比te6的api開發接口,發現te7中去掉了填挖方的接口,之前也有說明,在te7pro中,使用填挖方分析的功能網頁,發現已經使用QueryElevationBuffer的接口進行了替換。
QueryElevationBuffer這個接口要怎么進行使用呢,下邊進行一個簡單的CS版使用,詳細的使用可以去te7pro的填挖方網頁中進行分析查看。
注:此接口在使用的時候,要保證地形處于不透明的狀態。
接口中的參數為:
//地圖左上角的坐標,即要獲取的區域的起點坐標
double UpperLeftX,
double UpperLeftY,
//在地圖坐標系中,x、y單元的分辨率
double ResX,
double ResY,
//地圖中柵格影像的像素長寬,范圍是512到2048
int DimensionX,
int DimensionY)
//定義范圍的左上和右下坐標
double _upLeftX = 106.637950;
double _upLeftY = 26.646355;
double _boRightX = 106.642731;
double _boRightY = 26.642131;
//設置地圖上柵格的長寬分辨率
var gQuaryResolution = 1024;
var qualityStep = 4;
//根據范圍的差值,計算每個單元所移動的分辨率
var stepX = Math.Abs(_boRightX - _upLeftX) / gQuaryResolution;
var stepY = Math.Abs(_upLeftY - _boRightY) / gQuaryResolution;
//按照網頁上te7的說明,需要調用多次才能保證結果返回正確...
var _tmpObj = _sgworld.Analysis.QueryElevationBuffer(_upLeftX, _upLeftY, stepX, stepY, gQuaryResolution, gQuaryResolution);
_tmpObj = _sgworld.Analysis.QueryElevationBuffer(_upLeftX, _upLeftY, stepX, stepY, gQuaryResolution, gQuaryResolution);
//將獲取到的值轉換成C#數組
object[] _redata = (object[])_tmpObj;
//循環把坐標點和高程值對應上,這樣才能獲取成片的
for (int i = qualityStep / 2; i < gQuaryResolution; i = i + qualityStep)
{
for (int j = qualityStep / 2; j < gQuaryResolution; j = j + qualityStep)
{
var x = _upLeftX + i * stepX;
var y = _upLeftY - j * stepY;
var altitue= _redata[j * gQuaryResolution +i]);
}
}
此方法的效率還是比較高的,可以快速得到批量的高程值。
以上是“TE7如何獲取區域高程”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。