DataGear 使用座標映射表製作地理座標數據可視化看板

DataGear 的數據集結構是由數據集屬性表示的,數據集屬性並不要求與實際的數據結構一致,可以自由新增、編輯、刪除。利用這一特性,可以爲數據集添加佔位屬性(沒有對應實際數據),然後在看板展示其關聯的圖表時,通過dg-chart-listeneronUpdate函數補全數據,從而實現數據擴展功能。

本文以地圖飛線圖爲例,介紹如何利用上述特性,爲僅包含地區名稱信息的數據集,製作數據可視化看板。

假設有如下地區名稱數據集:

名稱:

源點地區名/終點地區名

數據: 

源點地區名, 終點地區名
新疆,      北京
四川,      北京
廣東,      北京
浙江,      北京

執行預覽後,它的屬性列表爲:

名稱        類型
源點地區名   字符串
終點地區名   字符串

地圖飛線圖需要數據集具有如下屬性:源點經度、源點緯度、終點經度、終點緯度,因此,這裏爲上述數據集手動添加這四個佔位屬性:

名稱           類型
源點地區名      字符串
終點地區名      字符串
源地區經度      數值
源地區緯度      數值
終地區經度      數值
終地區緯度      數值

然後,新建地圖飛線圖,如下所示:

名稱:地圖飛線圖
圖表類型:地圖飛線圖
數據集:
源地區經度  ->  源點經度
源地區緯度  ->  源點緯度
終地區經度  ->  終點經度
終地區緯度  ->  終點緯度

此時展示圖表將是空白飛線圖,因爲並沒有實際的地理座標數據。

然後,新建看板,添加上述圖表,爲其添加dg-chart-listener圖表監聽器,並通過它的onUpdate函數補全地理座標數據,如下所示:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.chart{
  display: inline-block;
  width: 100%;
  height: 500px;
}
</style>
<script>
//地區名->地理座標映射表
var coordMap=
{
  "新疆": [85.523256,41.094106],
  "四川": [103.037483,30.450264],
  "廣東": [113.560737,23.669933],
  "浙江": [119.962996,29.037435],
  "北京": [116.651482,40.253657],
};
var chartListener=
{
  onUpdate: function(chart, results)
  {
    var result = chart.resultFirst(results);
    var datas = chart.resultDatas(result);
    
    for(var i=0; i<datas.length; i++)
    {
      var di = datas[i];
      
      var srcCoord = (coordMap[di['源點地區名']] || {});
      var targetCoord = (coordMap[di['終點地區名']] || {});
      
      di['源地區經度'] = srcCoord[0];
      di['源地區緯度'] = srcCoord[1];
      di['終地區經度'] = targetCoord[0];
      di['終地區緯度'] = targetCoord[1];
    }
    
    chart.resultData(result, datas);
  }
};
</script>
</head>
<body>
<div class="chart" dg-chart-listener="chartListener"
      dg-chart-widget="上述圖表ID"></div>
</body>
</html>

點擊[保存並展示]按鈕,打開看板展示頁面,完成!!!

效果圖如下所示:

官網地址:http://www.datagear.tech

源碼地址:

Gitee:https://gitee.com/datagear/datagear

Github:https://github.com/datageartech/datagear

大屏模板地址:https://gitee.com/datagear/DataGearDashboardTemplate

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章