熱力圖,也就熱圖或者熱點圖,它能以特殊高亮的的形式顯示某一區域的等級的優越性、重要性或者某一區域類別的密度和變換趨勢;例如百度地圖熱力圖 是用不一樣顏色的區塊疊加在地圖上實時描述人羣分佈、密度和變化趨勢的一個產品,是基於百度大數據的一個便民出行服務。算法
上圖主要顯示一個城市的某個地方人員比較集中甚至擁擠程度,顏色越深表示人員越多,顏色淺表明人比較少,能夠提早考慮本身的行程避開人多的地方。ide
PIE支持算法功能的執行,下面對熱力圖算法功能進行介紹。工具
第一步測試 |
算法參數設置大數據 |
第二步spa |
算法執行code |
第三步視頻 |
結果顯示blog |
C#算法DLL內存 |
PIE.CommonAlgo.dll |
|
C#算法名稱 |
PIE.CommonAlgo.HotMapContructAlgo |
|
參數結構體 |
HotMapContruct_Exchange_Info |
|
參數說明 |
||
BCreateFeatureDataset |
bool |
是否建立矢量數據集 |
BUseWeightFiled |
bool |
是否使用權重字段 |
CellSize |
double |
像元大小(影響輸出寬高 爲負數不參與計算) |
DefualtWeightValue |
int |
默認權重值(0-255,不使用權重字段狀況下) |
DeviceHeight |
int |
輸出影像高度 |
DeviceWidth |
int |
輸出影像寬度(高度自動計算) |
InputFeatureDataset |
IFeatureDataset |
輸入矢量數據集 |
ListInvalidValue |
IList<double> |
無效值列表 |
OutputFeatureDataset |
IFeatureDataset |
輸出矢量數據集(內存) |
OutputRasterDataset |
IRasterDataset |
輸出柵格數據集 |
OutRasterFilePath |
string |
輸出柵格路徑 |
OutRasterType |
string |
輸出柵格類型 |
Radius |
double |
半徑(像素單位) |
WeightFeildName |
String |
權重字段名稱 |
數據路徑 |
百度雲盤地址下/PIE示例數據/矢量數據/Shape/省會城市.shp |
視頻路徑 |
百度雲盤地址下/10.算法調用/實用工具/熱力圖算法.avi |
示例代碼 |
|
![]() 1 /// <summary> 2 /// 熱力圖生成算法 3 /// </summary> 4 private void Test_HotMapContructAlgo() 5 { 6 #region 1參數設置 7 string strFileName = @"D:\\data\\China\\省會城市.shp"; 8 IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(strFileName); 9 if (fDataset.GetGeomType() != GeometryType.GeometryPoint) return; 10 HotMapContruct_Exchange_Info info = new HotMapContruct_Exchange_Info(); 11 info.InputFeatureDataset = fDataset; 12 //具體分析 13 info.BUseWeightFiled = true; 14 info.WeightFeildName = "GDP";//根據數據的權重字段進行設置 15 info.Radius = 20; 16 info.BCreateFeatureDataset = false; 17 info.DeviceWidth = 2000; 18 info.DefualtWeightValue = 50; 19 info.OutRasterType = "GTIFF"; 20 info.DeviceWidth = 1000; 21 info.CellSize = fDataset.GetExtent().GetWidth() / info.CellSize; 22 info.OutRasterFilePath = @"D:\\temp\\省會城市熱力圖測試.tiff"; 23 #endregion 24 25 //二、算法執行 26 PIE.CommonAlgo.HotMapContructAlgo alog = new HotMapContructAlgo(); 27 alog.Params = info; 28 alog.Execute(); 29 30 //三、結果顯示 31 ILayer layer = LayerFactory.CreateDefaultLayer(info.OutRasterFilePath); 32 if (layer == null) 33 { 34 MessageBox.Show("執行失敗"); 35 return; 36 } 37 m_HookHelper.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 38 (fDataset as IDisposable).Dispose();//釋放內存 39 fDataset = null; 40 } |