[原创.数据可视化系列之四]跨平台,多格式的等值线和等值面的生成

这些年做项目的时候,碰到等值面基本都是arcgis server来支撑的,通过构建GP服务,一般的都能满足做等值线和等值面的需求。可是突然有一天,我发现如果没有arcgis server 的话,我既然没法生成等值面等值线了。况且,还有许多别的要求:

  1. 没有arcgis server支持,arcgis server毕竟是很大一笔开销,个人基本无法负担;
  2. 跨平台,有的服务器是linux,有的是windows,看来,只能是java的类库了;
  3. 免费,生成等值线和等值面的程序不能有费用;
  4. 输出多种格式,既能输出图片格式,又能输出矢量格式,尤其是 kml之类的矢量数据;

在气象家园http://bbs.06climate.com/找到一个很不错的解决方案,MeteoInfo,作者是一个很厉害的人,具体的不说了,大家可以去看他的网站和博客,下面我说说如何使用他的类库来进行等值面的生成。如果大家有很好的类似的库,欢迎推荐给我,谢谢。

1:引用他的项目中的lib目录中的jar包,生成窗口对象:

  1 MapView mapView = new MapView();
  2 mapView.setBackground(new Color(255, 255, 255, 0));
  3 mapView.setBounds(0, 0, 200, 200);
  4 VectorLayer clipLayer = MapDataManage.readMapFile_ShapeFile(“d:/chengdu.shp”); //剪切图层,就是生成等值面的形状范围,
    //使用shp最方便了,这儿有一个坑,就是你是用的shp可以通过他自带的软件加载显示才行,否则程序会异常,至于为啥有的shp不能加载,我也没搞清楚
    //反正这个坑让我趟过去了。

2:添加站点信息,用于插值

  1 StationData stationData = new StationData();
  2 //
  3 for(int i=0;i<10;i++)
  4 {
  5 stationData.addData("st"+i, 114+0.1*i, 35+0.1*i, i*10); //站点名称,经度,维度,值
  6 }

3:设定插值参数

  1 GridDataSetting gridDataSetting = new GridDataSetting();
  2 gridDataSetting.dataExtent = clipLayer.getExtent();
  3 stationData.projInfo = clipLayer.getProjInfo();
  4 gridDataSetting.xNum = contourconfig.getGridx();// 格点点数
  5 gridDataSetting.yNum = contourconfig.getGridy();// 格点点数
  6
  7 InterpolationSetting interSet = new InterpolationSetting();
  8
  9 interSet.setGridDataSetting(gridDataSetting);
 10 interSet.setInterpolationMethod(InterpolationMethods.IDW_Radius);
 11 interSet.setRadius(5);
 12 interSet.setMinPointNum(1);
 13 GridData gridData = stationData.interpolateData(interSet);
 14
 15 LegendScheme legendScheme =LegendManage.createLegendSchemeFromGridData(gridData, LegendType.UniqueValue,ShapeTypes.Polygon);

4:插值生成图层:

  1 VectorLayer contourLayer = DrawMeteoData.createShadedLayer(gridData, legendScheme, "ContourLayer", "Data",
  2 					true);
  3 VectorLayer lastLayer = contourLayer.clip(clipLayer);
  4 mapView.addLayer(lastLayer);

5:导出数据,可以是kml或者png之类的图片格式

  1 mapView.exportToPicture(“d:/ddd.png”); //地图导出为图片
  2 //地图导出为kml
  3 lastLayer.saveAsKMLFile(“d:/ddd.kml”);

这是使用这个做出的效果图之一:

浏览数据秀(dataxiu.com)网站,了解更多数据可视化方法技术。

时间: 2024-10-24 07:22:08

[原创.数据可视化系列之四]跨平台,多格式的等值线和等值面的生成的相关文章

[原创.数据可视化系列之七]阿里竞赛作品技术展示

今年9月份,数据秀(dataxiu.com)团队参与阿里和国家公共气象服务中心主办,浙江大学和阿里云承办的“公益云图数据可视化创新大赛”. “公益云图数据可视化创新大赛”将融合开放气象.空气质量监测.企业排放和公共环境等领域的数据的,基于阿里云天池大数据平台开发一批关注环境公益的可视化技术,借助阿里云的计算能力及可视化工具,挖掘复杂异构多源数据之间的关联关系,以数据可视化的方式呈现给决策者和公众,共同促进环境治理和绿色产业创新. 数据秀团队开发的“公益云图”作品使用了美国国家环境预报中心GFS(

[原创.数据可视化系列之五]韩国&quot;萨德&quot;系统防御图

自从7月8日美国和韩国共同宣布将在韩国部署萨德反导系统后,韩国国内对此事的巨大争议以及本地区一些国家的强烈不满情绪在持续发酵.“萨德”(THAAD)全称“末段高空区域防御系统”,是美国导弹防御局和美国陆军隶下的陆基战区反导系统.韩国无视中.俄等地区国家的利益关切,执意将“萨德”引入韩国,其宣称的理由是出于保卫国家安全的考虑.但是“萨德”入韩不仅无益于韩国的安全,而且还将如同“冷战幽灵”一般威胁东北亚的和平与稳定. 现在,我们用数据可视化的方法来看看萨德的探测范围,对民用航空的影响和的防御范围,由

[原创.数据可视化系列之三]使用Ol3加载大量点数据

不管是百度地图还是高德地图,都很难得见到在地图上加载大量点要素,比如同屏1000的,因为这样客户端性能会很低,尤其是IE系列的浏览器,简直是卡的要死.但有的时候,还真的需要,比如,我要加载全球的AQI的测站和数据,这些站点在全球有4000多个,如何加载这些点并提高,OL3的ImageVector是一个很好地选择,简单的说,就是把这些要素渲染到一张图上,这样提高性能.代码如下: //加载JSON数据    mainxiu.loaddata=function(options)    {       

[原创.数据可视化系列之二]使用cesium三维地图展示美国全球军事基地分布

基于浏览器的三维地图还算是一个比较高冷的东西,最主要的技术难点是如何在浏览器上 多快好省 的显示三维数据,很遗憾,还真的没有太好的的方案,只能说还有可行的方案. 很久之前用过skyline,使用CS居多,也可以在浏览器使用actviex插件显示:另外就是arcgis globe,我没看到在项目中用的.后来google有一个globe,算是差的比较远. 一直到有一天,看到nokia的地图,没错,就是那个做手机的nokia,他们做的那个一个here.com 的地图,能够看三维地图,使用webgl在浏

[原创.数据可视化系列之六]使用openlyaers进行公网地图剪切

进行地图开发的过程中,我一般使用天地图或者微软的地图作为地图,因为这两种地图的经纬度偏差最小,基本可以满足用户需求,比如: 不用说,都是全部地图,这也是最常用的一种方法. 但是用户说,我只看大连的地图,就要大连这一块.这样需要一个整个大连地区的面,使用这个面去切地图,结果就可以了,如下图: 这样的图有点类似自己的发布的图.切图代码原理openlayers 3例子参见: http://openlayers.org/en/latest/examples/layer-clipping.html?q=c

大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用介绍.本文主要讲解如何搭建Hadoop+Hive的环境. 一.环境准备 1,服务器选择 本地虚拟机 操作系统:linux CentOS 7 Cpu:2核 内存:2G 硬盘:40G 说明:因为使用阿里云服务器每次都要重新配置,而且还要考虑网络传输问题,于是自己在本地便搭建了一个虚拟机,方便文件的传输以

数据可视化系列--svg入门基础(一)

一.前言 1.SVG(Scalable Vector Graphics)可伸缩矢量图形 特点: (1)使用xml格式来定义图形: (2)用来定义web上的使用的矢量图: (3)改变图像尺寸,图片质量不受损: (4)所有元素属性可以使用动画: (5)继承了W3C标准,在html中使用方式,html直接嵌入svg内容,或者直接引入svg文件. /* svg标签,这里的rect为矩形,在后面的图形元素中会详细说明 */ <svg width="200" height="200

大数据学习系列之五 ----- Hive整合HBase图文详解

引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环境,并进行了相应的测试.本文主要讲的是如何将Hive和HBase进行整合. Hive和HBase的通信意图 Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-*.jar工具类来实现,通信原理如下图

大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单机的搭建,是因为作为个人学习的话,单机已足以,好吧,说实话是自己的电脑不行,使用虚拟机实在太卡了... 整个的集群搭建是在公司的测试服务搭建的,在搭建的时候遇到各种各样的坑,当然也收获颇多.在成功搭建大数据集群之后,零零散散的做了写笔记,然后重新将这些笔记整理了下来.于是就有了本篇博文. 其实我在搭