`

TWaver GIS制作穹顶之下的雾霾地图

阅读更多

“我不满意,我不想等待,我也不再推诿,我要站出来做一点什么。我要做的事,就在此时,就在此刻,就在此地,就在此生”。自离职央视后,沉寂许久的知名记者、主持人柴静昨日携个人视频新作 《穹顶之下》宣告归来,并在短时间内引起广泛关注。生活在这个地球上,空气质量的好坏决定这我们的健康,每个人都希望能够呼吸新鲜空气,都希望抬起头看到的是蓝天和白云,而不是灰蒙蒙的雾霾。说到雾霾,我们用TWaver GIS实现了一个全国雾霾图的示例供大家参考。
gis2

gis1
首先要创建地图,如果熟悉TWaver GIS的人,下面的代码应该不难,如果第一次接触TWaver GIS,可以参考html5 gis的官方文档。贴出地图的代码:

network = new twaver.vector.Network();
map = new twaver.gis.Map(document.getElementById("container"),"test");
map.setSize({width:800,height:1200});
map.setEnableDoubleZoom(false);
map.setBackgroundColor(GISConsts.GOOGLE_COLOR);
map.setProjectionType(GISConsts.PROJECTION_MERCATOR);
map.addLayer("OSM",GISConsts.EXECUTOR_TYPE_OSM);
 
map.setZoomLevel(4);
map.setCenter(new twaver.gis.geometry.GeoCoordinate(40,100));
network.adjustBounds({x:0,y:0,width:900,height:800});
var box = network.getElementBox();
 
adapter = new twaver.gis.Adapter();
adapter.bindNetworkAndMap(network,map);
 
adapter.enableCombineInteraction();
 
var borderPane = new twaver.controls.BorderPane(map);
appendChild(borderPane.getView(),document.getElementById("container"),0,0,0,0);
 
var toolbar = new twaver.gis.gadget.MapToolbar("",map);
map.installGadget(toolbar.getView());
 
var navigator = new twaver.gis.gadget.Navigator("cn",map);
map.installGadget(navigator,{x:20,y:50});

 

接下来是在地图上画出每个省省会的的雾霾指数,可以用网元来表示, 先注册一下网元的样式,用我们的矢量描述来表示:

twaver.Util.registerImage('exponent', {
        w: 80,
        h: 30,
        origin: { x: 0, y: 0 },
        line: {
            width: 0,
            color: 'red'
        },
        v: [
            {
                shape: 'rect',
                rect: [ 0, 0, 80, 20],
                fill: 'white',
                r: 2
            },
            {
                shape: 'rect',
                rect: [ 50, 0, 30, 20],
                fill: '<%= data.getClient("color") %>',
                r:2
            },
            {
                shape: 'text',
                text: '<%= data.getClient("name") %>',
                textAlign: 'left',
                textBaseline: 'top',
                x: 5,
                y: 5
            },
            {
                shape: 'text',
                text: '<%= data.getClient("exponent") %>',
                textAlign: 'left',
                textBaseline: 'top',
                x: 55,
                y: 5
            },
            {
                shape: 'circle',
                cx: 40,
                cy: 22,
                r: 2,
                fill: 'red'
            }
        ]
    });
 
最后我们创建网元,网元的图片就是上边注册的图片,并且用不同的颜色表示雾霾指数的高低:
function createTopo() {
        var box = network.getElementBox();
        var geoDatas = [
            {latitude: 39.91667, longitude: 116.41667, name:"北京"}, //北京
            {latitude: 31.14, longitude:121.29, name:"上海"},//上海
            {latitude: 39.13333, longitude: 117.20000, name:"天津"},//天津
            {latitude: 22.20000, longitude:114.10000, name:"香港"}, //香港
            {latitude: 23.16667, longitude: 113.23333, name:"广州"}, //广州
            {latitude: 30.26667, longitude:120.20000, name:"杭州"},//杭州
            {latitude: 29.56667, longitude: 106.45000, name:"重庆"},//重庆
            {latitude: 26.08333, longitude:119.30000, name:"福州"},//福州
            {latitude: 36.03333, longitude: 103.73333, name:"兰州"},//兰州
            {latitude: 26.56667, longitude:106.71667, name:"贵阳"},//贵阳
            {latitude: 28.21667, longitude: 113.00000, name:"长沙"},//长沙
            {latitude: 32.05000, longitude:118.78333, name:"南京"},//南京
            {latitude: 28.68333, longitude: 115.90000, name:"南昌"},//南昌
            {latitude: 41.80000, longitude:123.38333, name:"沈阳"},//沈阳
            {latitude: 37.86667, longitude: 112.53333, name:"太原"},//太原
            {latitude: 30.66667, longitude:104.06667, name:"成都"},//成都
            {latitude: 29.60000, longitude: 91.00000, name:"拉萨"},//拉萨
            {latitude: 43.76667, longitude:87.68333, name:"乌鲁木齐"},//乌鲁木齐
            {latitude: 25.05000, longitude: 102.73333, name:"昆明"},//昆明
            {latitude: 34.26667, longitude:108.95000, name:"西安"},//西安
            {latitude: 36.56667, longitude: 101.75000, name:"西宁"},//西宁
            {latitude: 38.46667, longitude:106.26667, name:"银川"},//银川
            {latitude: 45.75000, longitude: 126.63333, name:"哈尔滨"},//哈尔滨
            {latitude: 43.88333, longitude:125.35000, name:"长春"},//长春
            {latitude: 30.51667, longitude: 114.31667, name:"武汉"},//武汉
            {latitude: 34.76667, longitude:113.65000, name:"郑州"},//郑州
            {latitude: 38.03333, longitude: 114.48333, name:"石家庄"},//石家庄
            {latitude: 20.01667, longitude:110.35000, name:"海口"},//海口
            {latitude: 22.20000, longitude: 113.50000, name:"澳门"},//澳门
            {latitude: 40.48, longitude: 111.41, name:"呼和浩特"},//呼和浩特
            {latitude: 22.48, longitude: 108.19, name:"南宁"},//南宁
            {latitude: 36.40, longitude: 117.00, name:"济南"},//济南
            {latitude: 31.52, longitude: 117.17, name:"合肥"},//合肥
            {latitude: 25.03 , longitude: 121.30, name:"台北"}//台北
 
 
        ];
        for(var i = 0; i < geoDatas.length; i++) {
            var node =  new twaver.Node();
            node.setClient(GISSettings.GEOCOORDINATE,new twaver.gis.geometry.GeoCoordinate(geoDatas[i].latitude,geoDatas[i].longitude));
            node.setImage("exponent");
            node.setClient("name",geoDatas[i].name);
            node.setClient("exponent",Math.floor(Math.random() * 200) + 20);
            if(node.getClient("exponent") < 50) {
                node.setClient("color", "green");
            }else if(node.getClient("exponent") >= 50 && node.getClient("exponent") < 100) {
                node.setClient("color", "#D6C621");
            }else if(node.getClient("exponent") >= 100 && node.getClient("exponent") < 150) {
                node.setClient("color", "#F5582E");
            } else if(node.getClient("exponent") >= 150 && node.getClient("exponent") <= 220) {
                node.setClient("color", "red");
            }
            box.add(node);
        }
    }
 
 

这样一个简单的雾霾地图就实现了,上边的数据是模拟数据,如果想反映真实数据,可以直接调用中国天气的实时数据,网址:http://openweather.weather.com.cn/Home/Package/index.html

 

这样一个简单的雾霾地图就实现了,上边的数据是模拟数据,如果想反映真实数据,可以直接调用中国天气的实时数据,网址:http://openweather.weather.com.cn/Home/Package/index.html

 

 

分享到:
评论

相关推荐

    flex Twaver组件使用

    本文主要讨论的是在Flex环境下的TWaver组件——TWaver Flex。 在配置TWaver Flex的开发环境时,首先需要创建一个MXML应用项目,如"HelloTWaver",并将TWaver.swc库文件放入项目的libs目录。Flex Builder 3会自动将...

    twaver.js使用示例

    ”这说明提供的示例不仅包含核心的twaver.js库,还有与之配合的HTML文件“alarm.html”。Jetty是一个轻量级的Java Web服务器和Servlet容器,能够方便地运行Web应用程序。这意味着用户可以直接在Jetty环境下运行这个...

    TWaver图形界面之道

    ### TWaver图形界面之道——关键知识点解析 #### 一、TWaver概述 TWaver是一款专为图形用户界面(GUI)开发而设计的组件产品。它不仅适用于电信行业的网络管理系统(NMS),同样适用于非电信领域的各类图形化界面...

    TWaver的3d图形组件库,小demo

    描述中提到的“TWaver HTML5 3D 制作的demo提供一个3d图形展示的基本代码”意味着这个压缩包内包含了一个使用TWaver库构建的3D图形演示程序,其中包含了实现基本3D效果的源代码。开发者可以通过学习和分析这个demo,...

    twaver-java-4.1

    【描述】该开发包的亮点在于其强大的可视化能力,通过TWaver,开发者可以轻松地构建出各种炫酷的图形,如流程图、网络拓扑图、时间线、地图等,为应用程序增添专业且美观的视觉效果。TWaver的API设计友好,使得即使...

    twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_

    Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织结构等场景。5.9.0是该库的一个特定版本,可能包含了新功能、性能优化或错误修复。 描述简单明了,"twaver-html5-5.9.0-api"直接...

    TWaver-java-4.1最新 官网试用版jar包及Demo

    3. demo.sh:这是Linux或Mac OS下的Shell脚本,同样用于启动Demo程序,展示了TWaver跨平台的能力。 4. License.txt:文件包含了TWaver的许可协议,详细规定了软件的使用、分发和修改权限。 5. README.txt:通常包含...

    TWaver HTML5 开发指南代码

    《TWaver HTML5 开发指南代码》是一份专为开发者准备的参考资料,它主要聚焦于如何利用TWaver库在HTML5环境下构建拓扑工具和机房展示应用。TWaver是一个强大的可视化框架,其核心特性是支持复杂的图形和网络图表的...

    Twaver-html5.zip

    Twaver学习案例的例子

    Twaver 3.7性能测试报告

    本次报告主要针对Twaver Java版本(Twaver Java)在不同节点配置及连接条件下的性能表现进行了详细评估。 #### 测试背景与目的 随着网络技术的不断发展以及数据量的日益增长,对于能够高效管理、处理大规模数据的...

    twaver例子

    TWaver的图形组件库中提供了拓扑组件、地图组件、设备图组件,以及表格、树图、属性表、图表等丰富的通用图形界面组件,为电信运营支撑系统(OSS)的开发提供“一站式”的组件产品和解决方案,是快速设计、开发和...

    TWaver文档

    - **界面交互**也是TWaver的重要组成部分之一,它提供了丰富的API来处理用户的输入事件,并且可以根据用户的操作实时更新视图。 ### 产品家族与技术栈 - TWaver支持多种技术和平台,包括**Java**、**Flex**、**...

    TWaver-java-4.1试用版jar包

    TWaver是一个强大的图形库,支持多种图表类型,如折线图、柱状图、饼图、散点图、地图等。它还支持数据绑定,使得数据驱动的可视化变得简单。此外,TWaver具备良好的可扩展性和自定义能力,允许开发者根据需求调整和...

    TWAVER-最好的JAVA 图形设计组件-试用

    3. **GIS集成**:对于地理信息系统集成,TWAVER 支持地图数据的导入和处理,可以将地理位置信息与拓扑图相结合,实现地图上的对象定位和空间分析。这在地理分布广泛的网络服务中尤为有用,比如基站位置、线路路径等...

    twaver web实例源码

    【标题】"Twaver Web实例源码"是一个关于使用Twaver与ExtJS结合的Web应用程序开发的学习资源。Twaver是一款强大的图形化建模和可视化工具,常用于数据可视化、网络拓扑图、流程图等场景。ExtJS则是一个流行的...

    twaver-java-3.7

    **标题:“twaver-java-3.7”** **描述:“twaver-java-3.7 文档”** **标签:“twaver java 3.7”** 本文将深入探讨Twaver Java 3.7版本的相关知识,这是一个强大的数据可视化库,特别适用于Java开发人员。...

    twaver 官方文档

    TWaver是用于创建交互式图表、网络图、流程图、地图等复杂可视化应用的JavaScript库。通过官方文档,我们可以深入理解其功能、用法和性能。 【描述】"达芬奇的密码"这部分可能是对TWaver能力的一种比喻,暗示TWaver...

    TWaver 4.1最新试用jar包 及Demo

    2. **丰富的图表类型**:TWaver 4.1支持各种图表,如折线图、柱状图、饼图、散点图、网络图、地图等,适合展示复杂的数据关系。`demo.jar`包含了这些图表类型的演示。 3. **交互性与自定义**:TWaver允许用户通过...

    TWaver.swc 3.3.1

    TWaver-flex的库TWaver.swc

Global site tag (gtag.js) - Google Analytics