服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java MeteoInfo解析与绘图代码教程详解

Java MeteoInfo解析与绘图代码教程详解

2022-02-24 00:43只待时光静好 Java教程

这篇文章主要介绍了Java MeteoInfo解析与绘图代码教程,对于后端导出图片的话,就需要添加色阶了,这一文很简单,就涉及色阶,名称,网格刻度线,感兴趣的朋友一起看看吧

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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");

Java MeteoInfo解析与绘图代码教程详解

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

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

到目前简单的绘制与设定就没有什么可说的了,基本上的操作在文章里都有了,都是一些样式的东西,这些都是绘制已经进行插值的图片,但在开发中,我们也会遇到天擎和CIMISS直接返回的站点数据,这个怎么绘制下一节说明一下,再后面的章节就是个别问题的研究了

到此这篇关于Java MeteoInfo解析与绘图代码教程详解的文章就介绍到这了,更多相关Java MeteoInfo绘图教程内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/zdsgjh/p/15428842.html

延伸 · 阅读

精彩推荐
  • Java教程Mybatis @SelectKey用法解读

    Mybatis @SelectKey用法解读

    这篇文章主要介绍了Mybatis @SelectKey用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    SihgYu8432022-01-13
  • Java教程java邮件发送的实现

    java邮件发送的实现

    本篇是用于java来实现邮件的发送的实例代码,基于smtp服务,有需要的可以参考一下。...

    常风1842020-06-23
  • Java教程轻松掌握Java享元模式

    轻松掌握Java享元模式

    这篇文章主要帮助大家轻松掌握Java享元模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    断了联系1782020-06-19
  • Java教程如何优雅的进行Spring整合MongoDB详解

    如何优雅的进行Spring整合MongoDB详解

    这篇文章主要给大家介绍了如何优雅的进行Spring整合MongoDB的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    骑白马的菜鸟11372021-04-06
  • Java教程SpringCloud原理之Feign

    SpringCloud原理之Feign

    Feign是声明性Web服务客户端。它使编写Web服务客户端更加容易。要使用Feign,请创建一个接口并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX...

    六脉神剑小六六7562021-08-26
  • Java教程Java代码实现矩形覆盖实例

    Java代码实现矩形覆盖实例

    这篇文章主要介绍了Java代码实现矩形覆盖实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考...

    Maxinxx5552019-06-27
  • Java教程Struts2学习笔记(1)-入门教程

    Struts2学习笔记(1)-入门教程

    本文是一个Struts2的简单入门教程,比较简单,希望能给大家做一个参考。 ...

    meaijojo5252020-05-14
  • Java教程Java遍历Map对象的四种方式

    Java遍历Map对象的四种方式

    本文给大家介绍java遍历map对象的四种方式,对java中遍历map感兴趣的朋友可以一起了解了解 ...

    蒲公英学长5502020-01-13