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

 

 

汽车市场数据分析:从乘联会与中汽协数据看懂市场真实冷暖 在数据分析领域,理解数据背后的逻辑和关联是洞察行业趋势的基础。数据交叉验证是核心方法,通过对比不同统计口径的数据,可以揭示市场真实的供需状况。例如,在汽车行业,乘联会的零售数据直接反映终端消费,而中汽协的产销数据则体现制造端动态。将两者结合分析,可以判断市场回暖是源于真实的消费复苏,还是渠道压库的“虚假繁荣”。这种分析方法对于库存管理、生产规划和投资决策具有重要价值。本文以汽车市场为例,深入解读如何通过零售数据与批发数据的交叉验证,并结合库存系数、新能源渗透率等热词,穿透数据表象,精准把握市场脉搏,为从业者 阅读详情

相关推荐

TWaver HTML5学习笔记 —— 通过图层方式控制元素是否显示

一、学习内容概述:      学习如何在拓扑图中,通过图层方式控制元素是否显示。 二、学习内容总结: 1、添加图层: // 创建各图层 var layerBox = box.getLayerBox(); var nodeLayer = new twaver.Layer("Node"); nodeLayer.setName("Node"); l

Steven的专栏 3406

关注细节-TWaver Android

一款优秀的产品体现在细节,UI产品更是如此,精确到每个像素,平衡性能与效果的最佳点,是我们追求的目标,细节的实现过程会有困难,结果却让人兴奋,TWaver Android的开发正是如此,所以我忍不住想分享一些细节点。 位置的细节 位置与坐标是图形界面的基础,TWaver Android中使用了绝对与相对坐标结合的思路,采用漫游模式交互,代码上与以往twaver产品会有所不同,这里列举部

TWaver可视化 1343

ARCGIS绘制全国各省PM2.5浓度图操作步骤

ArcGIS新手小白一枚,经常需要帮助老师绘制一些简单的空间图,利用ArcGIS绘制全国各省的pm2.5浓度图,简单又方便,不记下来会忘记~

weixin_43458484的博客 1万+

Twaver-HTML5基础学习(28)工具条(添加自定义按钮_自定义事件)

Twaver-HTML5基础学习(28)工具条(添加自定义按钮_自定义事件)

见贤思齐焉,见不贤内自省 718

中国雾霾浓度分布示意图(gis)

中国雾霾分布,不同浓度划分出不同的地方位置,并筛选出浓度等级的区域

OpenClaw 技能编排实战|如何组合多个技能完成复杂任务链

多技能协作的设计思路;技能链的执行顺序控制;案例:自动监控新闻 → 摘要生成 → 发送到飞书的一站式自动化流程。

我是一个扣子,优快云博客专家,阿里云专家。专注AI(代码智能体、OpenClaw、AI视频制作)与Java全栈(Java、MySQL、Redis)实战。坚持AI赋能开发,输出有深度的技术内容。 535

Twaver-HTML5基础学习(33)自动布局

Twaver-HTML5基础学习(33)自动布局

见贤思齐焉,见不贤内自省 1068

火山引擎之火山方舟知识库+OpenWebUI,搭建独属于自己的AI智能客服

创建接入点,接入点名称可按个人需求而定,比如Doubao-1.5-pro-32k,在添加模型选择Doubao-1.5-pro-32k,点击确定(PS:有些模型不支持知识库,若发现后续无法选择,请重新创建推理接入点。选择应用广场,创建零代码应用,在创建好的应用设置内编辑相关信息,并选择推理接入点,即先前建好的推理接入点;此处的模型名称是火山的模型ID名称,可在OpenWebUI设置-模型 中修改名称。至此所需的apikey和模型ID和请求的api地址(可选配置,非本文重点参数)。进入火山官网,注册账号。

AmaZInGvCH的博客 2651

twaver html5软件价格,TWaver HTML5 (2D)----数据元素

概述数据元素是数据模型的基本要素,用于描述图形网元,业务网元,或者纯数据。TWaver HTML5中所有数据元素都继承自twaver.Data。为不同功能的需求,预定义了三类数据类型:twaver.Element,twaver.Alarm,twaver.Layer,分别用来描述拓扑的网元,告警和图层。其中拓扑网元扩展定义了十几种网元类型,用以描述丰富的拓扑网元特性,其中最常用的几类拓扑网元包括:N...

weixin_33971453的博客 458

告别裸机SPI!用HAL库和CubeMX重新玩转STM32与MAX6675温度传感器

本文详细介绍了如何利用STM32CubeMX和HAL库高效驱动MAX6675温度传感器,实现稳定可靠的热电偶温度监测系统。通过图形化配置SPI接口和封装专用驱动函数,开发者可以快速构建嵌入式温度测量方案,适用于工业控制、物联网设备等多种应用场景。

weixin_42525632的博客 234

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8160

TWaver GIS在电信中的使用

TWaver提供的是电信行业中的图形解决方案,TWaver GIS是基于地图服务的一套解决方案。您可以这样理解,TWaver GIS就是在地理信息系统(GIS)上使用TWaver,TWaver的各种图形组件都可以在GIS上使用。TWaver本身不提供地图数据,我们与传统的arcgis相比更轻量,更简单,而且价格也更便宜,我们更加专注在地图上来实现复杂的电信业务,可以兼容OpenstreetMap,BingMap,GoogleMap,MapABC等多种主流地图。甚至只要你的地图是ogc标准的WMS服务格式,我

TWaver可视化 2436

10天冲刺国自然基金!用这套实战AI提示词指令教程,助你中标率翻倍!亲测DeepSeek和ChatGPT不好用

虽然以上国自然提示词指令经过反复实测,但并不是万能无脑帮你搞定所有,大模型AI的特性是你专业领域能力越强,它的智商表现就会更加强大,通过以上提示词教程的使用,大大提升中标概率是肯定的。还有就是大模型的使用上,不是市面上大家都说好的就一定适用,目前来看,Gemini和Claude的两个模型是非常适合国自然本子的修改的。在使用大模型进行国自然本子撰写修改时,首先是角色的设定,然后是目标和背景的描述,好用的提示词指令都是要经过无数次的实测,比对输出结果后又反复调整,达到最佳的效果状态的提示词指令。

智能AI让学术科研更容易 1245

Arcgis与GIS学习总结2:常用学习网站

Python与开源GIS网站发布:http://www.osgeo.cn/pygis/ GDAL_API介绍:https://www.gdal.org/annotated.html

一片雾霾的博客 1346

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1876

多物理场光学仿真软件:COMSOL_(10).激光器与谐振腔仿真

定义Nd:YAG晶体的材料属性% 折射率% 吸收系数% 发射截面% 定义光泵浦源% 泵浦光波长% 泵浦光强度% 泵浦光方向% 定义全反射镜% 选择边界% 完美电导体边界条件% 定义部分反射镜% 选择边界% 反射率边界条件% 反射率通过 COMSOL 对激光器和光学谐振腔进行仿真,可以全面评估激光器的性能,包括输出功率、效率、稳定性和模式选择等。这些仿真结果为激光器的设计和优化提供了重要的参考依据。

kkchenjj的博客 1648

浅析GIS行业地图绘制基本要求

附件一:《产品规格、技术要求及其他》 一、技术参数 1、地图覆盖范围  石家庄全市,以及省高速公路,国道,省道图层数据以及行政区划图层数据 2、坐标系 WGS84国家标准坐标系 3、参考地图比例     参考1:1万   3、数据格式   ARCGIS

哈里·雪利博客 2888

华为MetaERP国资委语境下的 DRP(全域数字化资源管理平台/Digitalized Resource-management Platform)与传统 ERP(以 SAP、Oracle 为代表)的

【摘要】国资委推动的DRP(全域数字化资源管理平台)正在重构央国企数智化转型路径,其本质是通过"ERP管交易+DRP管管控"的双层架构实现升维替代。与传统ERP相比,DRP具有三大突破:采用国产分布式数据库实现全级次穿透监管、构建数据中台打破信息孤岛、以实时分析替代事后报表。当前政策明确2026-2030年分阶段建设目标,这将重塑产业格局——倒逼传统ERP厂商转型,为云原生/AI/信创企业创造新机遇。需注意DRP并非简单替代ERP,而是通过治理模式变革实现"交易系统做薄、管控中

金牌架构师 286

TWaver 3D应用于大型数据中心(续)

在2014年11月份,我们当时发了一篇有关TWaver HTML5 3D应用于大型数据中心的文章,该blog比较详细的描述一些常用的功能的实现方法,比如:动态添加机柜,告警,温度,湿度等相关的功能的具体实现。其实会用这些东西的话基本上可以使用我们的TWaver HTML5 3D来实现相关的应用了,可是在有些客户觉得这还不够“动态”,都是代码一下生成的,少了一些交互,前些天同事说要不再加点功能,让...

subnetwork的专栏 2657

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HTML5数据可视化第二弹:打造最美3D机房

最近项目开发任务告一段落,刚好有时间整理这大半年的一些成果。使用html5时间还不久,对js的认识还不够深入。没办法,以前一直搞java,对js的一些语言特性和概念一时还转换不过来。   上一篇第一弹介绍了项目中做的一个彩虹爆炸图,主要用了 html5的canvas的2d绘制技术。这一回我想介绍一下项目中的一个亮点技术:html5的3D,以及如何用它打造精美的3D机房监控系统。   目...

subnetwork的专栏 2044

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HTML5流程图之复杂关系网

关系网图的呈现方式多种多样,今天我们给大家分享的是和弦式的关系网图,先来看看效果: 例子中我们展示的是各部门员工之间的复杂关系图。在公司内部,不仅部门内部员工之间发生着关系往来,部门和部门之间的员工也在发生这各种往来关系。如果你还是用原先的那种表格来呈现,显然很难直观看出各种关系,用图形化的拓扑呈现就会显得一目了然。好了,我们就来分析一下这张图如何用twaver实现它。首先我们要定义部门的网...

subnetwork的专栏 1579

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HTML5数据可视化第三弹:萌萌哒拓扑图分组

前言   最近忙着给客户折腾一个复杂的多层嵌套关系。客户一句话“要好看!”,哥就忙白了头啊,还好最终搞定了。   需求描述   先简单描述下这次客户的需求。 现实应用中,网络拓扑图结构可能很简单,也可能非常复杂。 比如这种节点较多的单层拓扑: 稍复杂一些的:   再复杂一些的:   在这些拓扑图中常见的场景是,很多网络节点需要组成一组,这常被称为“网元组”...

subnetwork的专栏 1212

HTML5组织结构图之名片式网元布局

组织结构图(Organization chart)是企业的流程运转、部门设置及职能规划等最基本的结构依据。和客户交流时,不少人都提到需要一个灵活的工具来绘制呈现企业的组织架构,今天就给大家带来一款用TWaver实现的组织结构图,提供多种布局方式,为了清晰呈现组织里每个人的职能,我们定制了名片样式来展示网元。首先来看下整体的效果,是上下布局的样式: 也可以调整为圆形布局:   这些布局...

subnetwork的专栏 855

TWaver动画之雷达扫描效果

UI和功能是好的产品的两个重要因素,很多产品往往只注重功能上的设计,而忽略了UI。在这个“看脸”的时代,就算产品的功能很强大,如果UI跟不上步伐,你的产品都会在客户心中大打折扣。做安全和监控的项目中经常会进行扫描,一般会用一个gif图片来表示软件正在进行扫描,但是如果想更换这个图标的样式,就需要美工重新做图。TWaver提供了动画效果,如果对图标的动画样式不满意,可以通过简单的更改程序来实现,避...

subnetwork的专栏 695

如何允许WebGL从本地载入资源

随着mono-design不断推广,用户越来越多,陆续有电话来询问“为什么3D展现的时候,是一团黑?”,针对这个问题,专门写个帖子说明原因并给出解决方案,并且在mono-design编辑器中加了判断功能,同时链接到这里,不用等到发现一团黑时,才知道出问题。 好了,言归正传,开始分析问题:当发现3D展现是一团黑的时候,在控制台如果看到“Unable to get image data from...

subnetwork的专栏 552
上一篇: TWaver HTML5之树形布局
下一篇: 当ECharts碰到TWaver
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值