WebGIS中利用AGS JS+eChart实现一些数据展示的探索

1.背景

eChart提供了迁徙图、热点图、夜视图等跟地图能够很好的结合起来的数据展示方式。但是如何将eChart和我们的AGS JS框架以及自身的地图相结合,是一个很值得研究的地方。我所在小组中的一位同事上两周作为主力对eChart和我们目前所使用的AGS JS的结合做了一些研究,取得了不错的进展。我本人对其研究进行了跟进,这里作为二传手,将这些进展以及效果做一个小的总结,同时也利于我对他研究的进一步学习。感谢我这位优秀的同事。

2.必须解决的问题——坐标问题

series中的geoCoord参数是用来设置标注点地理坐标的。标注点是否能正确叠加到我们发布的地图上,此参数至关重要。

首先,我们将此参数中的值设置为与我们发布的地图相吻合的坐标值。比如,我们地图是使用的XIAN1980 的坐标系,以117度为经线做高斯投影后的地图。此时的参数我们设置为:

我们研究eChart的源码可以发现,每个标注点之所以能显示在地图上,是因为它内部会首先在geoCoord中读取到该点的地理坐标,然后转换为此时的屏幕坐标。但是,如果我们已经给每一个标注点的X和Y赋予了值后,eChart内部会直接使用该值而不再自身进行转换。以下为eChart内部的该源码部分:

在了解了此过程后,我们便有了如下思路:

a.继承AGS上的基类Layer,扩展出一个eChartLayer。

b.将eChartLayer添加到AGS的Map中。

c.遍历Option中的Data,利用AGS提供的toScreen方法直接将geoCoord中的坐标点转换为此时的屏幕坐标,并赋予各标注点的X和Y。

通过测试,很好的解决了标注点能正确显示在地图上的问题。

3.进一步解决的问题

3.1频繁刷新问题

在将我们所写的eChartLayer加入到Map中后,我们会发现,每次地图开始平移时,eChart上的各种效果便开始不断的处于刷新重绘状态。

解决思路时,监听地图的平移事件,对eChart进行重绘控制。

3.2刷新后某些功能失效问题

eChart官网上提供的示例,因为是静止的,不会出现该问题。但是当把它们叠加到地图,对地图进行平移、放大、等需要经常刷新重绘的用途上时便会发生某些功能失效的问题。

比如,下图所示,当我们点击了图例中的案件数量时,以案卷数量为标题的标注点都会消失。但当我们平移地图后,所以位置点进行重绘时,相关设置便失效,之前消失的标注点又会被重绘出来。

                     

这里说一下我们自身的解决方法。

我们的思路时,将重绘分为两种,一种是重新参数绑定,一种是只改变标注点XY坐标的重绘。对于上述操作,我们进行只改变标注点坐标的重绘方式。该问题解决。

4.Iframe和eChart的兼容问题

在eChart中有大量的instanceof Array这样的代码。但是我们发现在Iframe中,此处会报出错误。所以如果在Iframe中应用eChart时,需要改写eChart中与此相关的代码。

5.效果展示

热点图:

荧光图:

迁徙图:

6.进一步研究的方向

eChart中的地图显示部分提供了对GeoJson的支持。我们可以利用矢量切图生成各个GeoJson文件,然后通过eChart对各矢量文件进行展示。由于eChart本身使用的HTML5进行渲染,对大数据渲染支持的很好,我们既可以解决加速请求矢量数据的问题,也能解决大数据渲染问题。

——欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

时间: 2024-11-03 19:30:52

WebGIS中利用AGS JS+eChart实现一些数据展示的探索的相关文章

asp.net中利用session对象传递、共享数据[session用法]

下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session["name"]=textbox1.text:将文本1的值赋给了session变量name,当调查到其它页面时,此值可以传递,依然存在,下面是调用或判断此值. If(session["name"]==null) {} Else { lable1.text=session["name"].tos

【转】asp.net中利用session对象传递、共享数据[session用法]

来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session["name"]=textbox1.text:将文本1的值赋给了session变量name,当调查到其它页面时,此值可以传递,依然存在,下面是调用或判断此值. If(session["name"

项目中利用AnyChat SDK实现将RGB数据作为视频源的实时推送功能

一.前期调研工作: 查看官网简介www.anychat.cn 可以知道AnyChat支持外部音视频功能,具体描述如下: AnyChat Platform Core SDK V4.2版本增加了外部音视频数据输入功能,该功能主要满足一些特殊应用场合下的需求,通常普通用户不会使用到,使用该功能,可以由上层应用程序输入视频数据.音频数据到AnyChat,然后AnyChat再对这些数据进行编码.传输,即使用上层应用的数据做为数据源,而不使用AnyChat从本地声卡.摄像头采集的音视频数据. 通过外部音视频

使用ASP.NET中的Chart.js在ASP.NETVisual数据中使用Chart.js的可视化数据

Download Chart.js你可以Chart.js从这封信中:https://github.com/chartjs/Chart.js/releases 使用VisualStudio创建新的ASP.NET项目并复制Chart.js在上一步中下载到root项目. 创建一个名为"Home.aspx"并添加如下代码行: 藏   复制码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehi

在jsp中同一页面中多个标签页之间切换数据展示

示例图片: 像这样的上面多个tab页下面也有多个tab页面,其实只要学会一个嵌套就可以了,现在就说一下简单的一个页面的多个tab页面的展示

易宝典——玩转O365中的EXO服务 之四十二 导出就地电子数据展示搜索结果

对于搜索结果,如果仅仅只能预览查看而不能提取,那么就无法将相关结果提供给第三方(如法院)作为证据或其它电子数据需求处理. 在Office 365的Exchange Online中,提供两种提取电子数据展示搜索结果的方案.分别是将就地电子数据展示搜索的结果复制到发现邮箱,以及将就地电子数据展示搜索的结果导出到PST文件. 一.复制就地电子数据展示搜索的结果到发现邮箱 在对搜索结果的数量和质量满意之后,可以将它们复制到发现邮箱.这一操作可以通过Exchange管理中心或PowerShell来完成.

(十八)WebGIS中I查询的原理及设计(包含AGS、GeoServer、Supermap)

1.背景 我们在使用arcmap时,经常会用到被称为I查询的工具.具体功能便是,当激活I查询功能后,鼠标点击到某个要素上时,界面上会弹出一个对话框用来显示该要素的各属性信息.该功能截图如下: 2.原理 在WebGIS中设计和实现该功能之前,我们有必要对该功能的原理做一个了解. 在OGC的WMS标准中规定了一个接口:GetFeatureInfo.该接口的功能描述便是:根据屏幕坐标.当前视图范围等参数,获得屏幕坐标某处要素的信息. 在OGC的WFS标准中也规定了一个接口:GetFeature.该接口

(九)WebGIS中的矢量查询(针对AGS和GeoServer)

1.前言 在第七章里我们知道了WebGIS中要素的本质是UIComponent,而矢量图层的本质是包含了n(n>=0)个UIComponent的Canvas.我们在UIComponent的graphics中,根据矢量数据画出矢量的形状(shape),并且将矢量数据的属性(attributes)赋予该UIComponent. 在接下来进行要素和矢量图层的设计前,我们有必要了解这四个问题 (1)矢量数据是什么? (2)矢量数据从何而来? (3)矢量数据如何组织的? (4)矢量数据得到后如何使用? 在

js中利用cookie实现记住密码功能

js中利用cookie实现记住密码功能 在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: 1 HttpServletRequest request 2 HttpServletResponse response 3 Cookie username = new Cookie("username ","cookievalue"); 4 Cookie password = new Cookie("password