MeteoInfo-Java解析与绘图教程(五)

最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意web页面色阶和我们的生成色阶一定要对的上

对于后端导出图片的话,就需要添加色阶了,这一文很简单,就涉及色阶,名称,网格刻度线

顺便对代码我进行了优化,看起来更直接

        MeteoDataInfo meteoDataInfo = new MeteoDataInfo();
meteoDataInfo.openMICAPSData("D:\\解析数据\\cldas\\cldas\\TEM\\20081000.000");
GridData grid = meteoDataInfo.getGridData();
//读取地图A
VectorLayer scmap = MapDataManage.readMapFile_ShapeFile("C:\\Users\\Administrator\\Downloads\\好例子网_全国省、县界线shp格式矢量图(精确到县区域)\\全国省、县界线shp格式矢量图(精确到县区域)\\sichuan.shp");
//读取地图B
VectorLayer qgmap = MapDataManage.readMapFile_ShapeFile("E:\\shp\\四川\\四川省(3)_市界.shp"); //描述地图边界线
PolygonBreak pb = (PolygonBreak) qgmap.getLegendScheme().getLegendBreak(0);
//是否设置填充
pb.setDrawFill(false);
//设置轮廓颜色
pb.setOutlineColor(Color.black); //读取色阶
LegendScheme als = LgsUtil.readFromLgs("D:\\apache-tomcat-8.0.50\\alt色阶\\TEM.lgs");
//绘制图层
VectorLayer layer = DrawMeteoData.createShadedLayer(grid,als,"","",true);
//创建视图
MapView view = new MapView();
layer = layer.clip(scmap);
//叠加图层
view.addLayer(layer);
view.addLayer(qgmap); //视图设置
MapLayout layout = new MapLayout();
//去除图形边框
layout.getActiveMapFrame().setDrawNeatLine(true);
//抗锯齿
layout.getActiveMapFrame().setMapView(view);
view.setAntiAlias(true);
layout.setAntiAlias(true); //根据视图计算视图的宽高
Extent extent = view.getExtent();
int size = 800;
Rectangle rectangle = new Rectangle(size, (int) (size * 1D / extent.getWidth() * extent.getHeight())); //设置地图区域大小和外边距
int width = rectangle.width;
int left = 50;
int height = rectangle.height;
int right = 140;
int top = 50;
int bottom = 50;
//设置页面边界
layout.setPageBounds(new Rectangle(0, 0, width + left + right, height + top + bottom));
//获取地图框
MapFrame frame = layout.getActiveMapFrame();
//设置布局边界
frame.setLayoutBounds(new Rectangle(left, top, width, height));
//绘制网格刻度线
frame.setDrawGridLine(true);
//设置网格间隔值
frame.setGridXDelt(0.5);
frame.setGridYDelt(0.5);
//设置图例
Rectangle bounds = layout.getActiveMapFrame().getLayoutBounds();
LayoutLegend legend = layout.addLegend(bounds.x + bounds.width + 15, 0);
legend.setLegendStyle(LegendStyles.Normal);
legend.setTop(bounds.y + (bounds.height - legend.getHeight()) / 2);
legend.setLegendLayer(layer); //导出
layout.exportToPicture(PathUtil.getDeskPath()+"/1.png");

以上的方法我只设定了刻度线和色阶,其他的也很简单,我在下面说明一下

标题设定-放到设定好视图大小的后面
Rectangle bounds = layout.getActiveMapFrame().getLayoutBounds();
layout.addText(title, bounds.x + bounds.width / 2, y, 18);

到目前简单的绘制与设定就没有什么可说的了,基本上的操作在文章里都有了,都是一些样式的东西,这些都是绘制已经进行差值的图片,

但在开发中,我们也会遇到天擎和CIMISS直接返回的站点数据,这个怎么绘制下一节说明一下,再后面的章节就是个别问题的研究了

MeteoInfo-Java解析与绘图教程(五)的更多相关文章

  1. MeteoInfo-Java解析与绘图教程(一)

    MeteoInfo-Java解析与绘图教程(一) 已经进入开发行业很多年了,这两年一直从事气象开发行业,为此对气象绘图有了新的见解 像色斑图与卫星图一直都有python去绘制,在偶然的情况下,我接触到 ...

  2. MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)

    MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例) 最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下 卫星的一级产品,里面是没 ...

  3. MeteoInfo-Java解析与绘图教程(三)

    MeteoInfo-Java解析与绘图教程(三) 上文我们说到简单绘制色斑图(卫星云图),但那种效果可定不符合要求,一般来说,客户需要的是在地图上色斑图的叠加,或者是将图片导出分别是这两种效果 当然还 ...

  4. MeteoInfo-Java解析与绘图教程(四)

    MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义配置 首先我们解析micaps数据,将之 ...

  5. MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称

    MeteoInfo-Java解析与绘图教程(七)_图层添加站点名称或区域名称 在上文说了用自动站的数据经过插值绘制色斑图,这种一般是在geoserver上叠加图片呈现,但遇到后端导出图片,我们又想添加 ...

  6. Java 解析 XML

    Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...

  7. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

  8. 高性能Java解析器实现过程详解

    如果你没有指定数据或语言标准的或开源的Java解析器, 可能经常要用Java实现你自己的数据或语言解析器.或者,可能有很多解析器可选,但是要么太慢,要么太耗内存,或者没有你需要的特定功能.或者开源解析 ...

  9. Hadoop教程(五)Hadoop分布式集群部署安装

    Hadoop教程(五)Hadoop分布式集群部署安装 1 Hadoop分布式集群部署安装 在hadoop2.0中通常由两个NameNode组成,一个处于active状态,还有一个处于standby状态 ...

随机推荐

  1. 【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?

    问题描述 当创建一个App Service 后,运行时环境和版本选择Windows 和 Python 3.6. 登录Kudu 站点查看,默认的文件有 web.config, hostingstart- ...

  2. idea字节码插件JClassLib——阅读JVM字节码

    idea字节码插件JClassLib--阅读JVM字节码 生成字节码文件并查看 查看字节码文件的方式:javac 文件名.java 即可生成.class文件,但是这种方式不方便 java:是运行字节码 ...

  3. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...

  4. java代码覆盖实战

    Jacoco原理 代码插桩 On-the-fly插桩: JVM中通过-javaagent参数指定特定的jar文件启动Instrumentation的代理程序,代理程序在通过Class Loader装载 ...

  5. Nginx rewrite跳转 location匹配

    目录: 一.常用的Nginx 正则表达式 二.location 三.rewrite 一.常用的Nginx 正则表达式 1 ^ :匹配输入字符串的起始位置 2 $ :匹配输入字符串的结束位置 3 * : ...

  6. Storm近年的发展

    storm作为第一款大数据领域的流式计算引擎,在2013年推出之后风头一时无二.后续虽然有spark streaming也作为流式计算的引擎,但storm依然在流式计算的江湖占有稳定的地位.直到201 ...

  7. Vue项目-初始化之 vue-cli

    1.初始化项目 a.Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-servi ...

  8. Sentry 监控 - Dashboards 事件数据可视化大屏

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  9. 傻子都能懂的并查集题解——HDU1232畅通工程

    原题内容: Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都 ...

  10. Jmeter系列(10)- Linux环境安装之Jmeter下载配置

    step-1下载 我是之前windows有,就直接copy到Linux系统了 step-2Jmter放到local目录 mv apache-jmeter-5.2.1 /usr/local/ step- ...