动态更新热力图(纯前端实现,效率不是很高,适合小数据量)

//创建查询任务并设置查询条件
        var query = new Query();
        //此链接地址为发布的管线动态服务地址
        var queryTask = new QueryTask("http://localhost:6080/arcgis/rest/services/gx_test5/MapServer/0")
        query.where ="DJ ='A'"; 
        query.outSpatialReference = {wkid:3857}; 
        query.returnGeometry = true;
        query.outFields = ["*"];
        //存放要素集合
        var graphics_test=[];
        //执行查询并将查询符合条件的线要素转换成点要素
        queryTask.execute(query, function(eve){
            var features_test=eve.features;
            for(var i=0;i<features_test.length;i++){
                var polyline_test=features_test[i].geometry;
                for(var j=0;j<polyline_test.paths.length;j++){
                   var pointarr= polyline_test.paths[j];
                    for(var w=0;w<pointarr.length;w++){
                        var point_test=new Point(pointarr[w][0], pointarr[w][1], new SpatialReference({ wkid: 3857 }));
                        console.log(point_test);
                        var graphic_test=new Graphic(point_test,sms);
                        graphics_test.push(graphic_test);
                        gralayer.add(graphic_test);
                    }
                  
                }
            
            }         
        });
        //默认设置
        var layerDefinition = {
            "geometryType": "esriGeometryPoint",
            "fields": [{
              "name": "ID",
              "type": "esriFieldTypeInteger",
              "alias": "ID"
            }]
          }
          var featureCollection = {
            layerDefinition: layerDefinition,
            featureSet: null
          };
          //创建要素服务图层
          var featureLayer_test = new FeatureLayer(featureCollection, {
            mode: FeatureLayer.MODE_SNAPSHOT,
            outFields: ["*"],
            opacity: 1
          });
          //设置要素服务对应的要素集
          featureLayer_test.graphics=graphics_test;
         //创建热力图渲染器并对要素图层设置
         var heatmapRenderer =new HeatmapRenderer({ 
            colors: ["rgba(0, 0, 255, 0)","rgb(0, 0, 255)","rgb(255, 0, 255)", "rgb(255, 0, 0)"],
            blurRadius: 8,
            maxPixelIntensity: 120,
            minPixelIntensity: 10
            });
        featureLayer_test.setRenderer(heatmapRenderer);
        //将图层添加到地图上
        map.addLayers([baselayer,featureLayer_test]);

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是使用C#绘制小波包数据热力图的示例代码: ```csharp using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace WaveletPacketHeatmap { public partial class Form1 : Form { private Chart chart; public Form1() { InitializeComponent(); // 创建 Chart 控件 chart = new Chart(); chart.Parent = this; chart.Dock = DockStyle.Fill; chart.BackColor = Color.White; // 添加热力图 AddHeatmap(); } private void AddHeatmap() { // 读取小波包数据 double[,] data = ReadWaveletPacketData("wavelet_packet_data.txt"); // 创建数据序列 List<double> values = new List<double>(); for (int i = 0; i < data.GetLength(0); i++) { for (int j = 0; j < data.GetLength(1); j++) { values.Add(data[i, j]); } } // 计算数据范围 double minValue = values.Min(); double maxValue = values.Max(); // 创建热力图序列 List<DataPoint> points = new List<DataPoint>(); for (int i = 0; i < data.GetLength(0); i++) { for (int j = 0; j < data.GetLength(1); j++) { double value = data[i, j]; double intensity = (value - minValue) / (maxValue - minValue); Color color = Color.FromArgb((int)(255 * intensity), 0, 0); points.Add(new DataPoint(j, i, value) { Color = color }); } } // 创建热力图 Series heatmap = new Series(); heatmap.ChartType = SeriesChartType.Point; heatmap.Points.AddRange(points.ToArray()); chart.Series.Add(heatmap); // 设置坐标轴 chart.ChartAreas.Add(new ChartArea()); chart.ChartAreas[0].AxisX.Minimum = 0; chart.ChartAreas[0].AxisX.Maximum = data.GetLength(1); chart.ChartAreas[0].AxisY.Minimum = 0; chart.ChartAreas[0].AxisY.Maximum = data.GetLength(0); chart.ChartAreas[0].AxisX.Interval = 1; chart.ChartAreas[0].AxisY.Interval = 1; chart.ChartAreas[0].AxisX.MajorGrid.Enabled = false; chart.ChartAreas[0].AxisY.MajorGrid.Enabled = false; chart.ChartAreas[0].AxisX.MajorTickMark.Enabled = false; chart.ChartAreas[0].AxisY.MajorTickMark.Enabled = false; chart.ChartAreas[0].AxisX.LabelStyle.Enabled = false; chart.ChartAreas[0].AxisY.LabelStyle.Enabled = false; } private double[,] ReadWaveletPacketData(string filename) { List<double[]> rows = new List<double[]>(); using (StreamReader reader = new StreamReader(filename)) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] values = line.Split('\t'); double[] row = new double[values.Length]; for (int i = 0; i < values.Length; i++) { row[i] = double.Parse(values[i]); } rows.Add(row); } } double[,] data = new double[rows.Count, rows[0].Length]; for (int i = 0; i < rows.Count; i++) { for (int j = 0; j < rows[i].Length; j++) { data[i, j] = rows[i][j]; } } return data; } } } ``` 在上面的示例代码中,`ReadWaveletPacketData` 方法用于从文件中读取小波包数据,`AddHeatmap` 方法用于创建热力图并添加到 Chart 控件中。通过设置数据点的颜色来实现热力图效果。最后需要设置坐标轴的范围、网格线、刻度标记和标签等属性来展示热力图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值