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

摘要:
MeteoInfo-Java解析与绘图教程(三)上文我们说到简单绘制色斑图(卫星云图),但那种效果可定不符合要求,一般来说,客户需要的是在地图上色斑图的叠加,或者是将图片导出分别是这两种效果当然还有一种是将边界上的数据去除掉,例如下图,这种是数据生成色斑图,不适用卫星,所以卫星云图不会裁剪数据,留到下节说明首先说第一种,在前端geoserver上叠加图层的实现方式MeteoDataInfomete

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

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

MeteoInfo-Java解析与绘图教程(三)第1张MeteoInfo-Java解析与绘图教程(三)第2张

当然还有一种是将边界上的数据去除掉,例如下图,这种是数据生成色斑图,不适用卫星,所以卫星云图不会裁剪数据,留到下节说明

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

首先说第一种,在前端geoserver上叠加图层的实现方式

        MeteoDataInfo meteo = newMeteoDataInfo();
        meteo.openAWXData("D:\Download\ANI_VIS_R04_20210812_0800_FY2G.AWX");
        GridData grid =meteo.getGridData();
        //色阶文件
        String colorPath = "D:\apache-tomcat-8.0.50\alt色阶\AWX.pal";
        //绘制图层
        RasterLayer layer = DrawMeteoData.createRasterLayer(grid, "",colorPath);
        //创建视图
        MapView view = newMapView();
        //叠加图层
view.addLayer(layer);
        MapLayout layout  = newMapLayout();
        //去除图形边框
        layout.getActiveMapFrame().setDrawNeatLine(false);
        //区域边界
        Extent extent =view.getExtent();
        //设置矩形的宽和高
        Rectangle bounds = new Rectangle(800, (int) (800 * 1D / extent.getWidth() *extent.getHeight()));
        //设置地图边框
        layout.setPageBounds(new Rectangle(0, 0, bounds.width, bounds.height));
        //设置页面边框
        layout.getActiveMapFrame().setLayoutBounds(new Rectangle(0, 0, bounds.width, bounds.height));
        layout.getActiveMapFrame().setMapView(view);
        layout.exportToPicture(PathUtil.getDeskPath()+"/2.png");

这里我们需要注意的是区域边界是如何得出的,区域边界就是最大最小经纬度,而控制最大最小经纬度的度数就是数据,数据的本质就是二维数组,x与y就是经纬度,x和y对应的就是当前点的数值

下面就是第二种图片生成方式

        MeteoDataInfo meteo = newMeteoDataInfo();
        meteo.openAWXData("D:\Download\ANI_VIS_R04_20210812_0800_FY2G.AWX");
        GridData grid =meteo.getGridData();
        //色阶文件
        String colorPath = "D:\apache-tomcat-8.0.50\alt色阶\AWX.pal";
        //绘制图层
        RasterLayer layer = DrawMeteoData.createRasterLayer(grid, "",colorPath);

        //读取地图
        VectorLayer xzmap = MapDataManage.readMapFile_ShapeFile("C:\Users\Administrator\Documents\WXWork\1688854031041609\Cache\File\2021-08\中国_省界.shp");

        //描述地图边界线
        PolygonBreak pb = (PolygonBreak) xzmap.getLegendScheme().getLegendBreak(0);
        //是否设置填充
        pb.setDrawFill(false);
        //设置轮廓大小
//pb.setOutlineSize(2f);
        //设置轮廓颜色
pb.setOutlineColor(Color.white);
        //创建视图
        MapView view = newMapView();
        //叠加图层
view.addLayer(layer);
        view.addLayer(xzmap);
        //创建地图页面设置类
        MapLayout layout  = newMapLayout();
        //去除图形边框
        layout.getActiveMapFrame().setDrawNeatLine(false);
        //区域边界
        Extent extent =xzmap.getExtent();
        //设置矩形的宽和高
        Rectangle bounds = new Rectangle(800, (int) (800 * 1D / extent.getWidth() *extent.getHeight()));
        //设置地图边框
        layout.setPageBounds(new Rectangle(0, 0, bounds.width+100, bounds.height+100));
        //设置页面边框
        layout.getActiveMapFrame().setLayoutBounds(new Rectangle(50, 50, bounds.width, bounds.height));
        //设置缩放程度
view.zoomToExtent(extent);
        //设置所有图层范围
view.setExtent(extent);
        layout.getActiveMapFrame().setMapView(view);
        layout.getActiveMapFrame().setDrawGridLine(true);

        layout.exportToPicture(PathUtil.getDeskPath()+"/2.png");

请注意,我将轮廓大小去除了,因为这个设置本质上是加粗样式,用了有些粗,所以一般都是使用默认配置

layout.getActiveMapFrame()这个方法就是获取活动布局图,是控制大部分样式的api,如果修改样式就是可以调用其中的api

下节讲解第三种图片生成方式

免责声明:文章转载自《MeteoInfo-Java解析与绘图教程(三)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇中国人民银行的前世今生Linux上 Can't connect to X11 window server using XX as the value of the DISPLAY 错误解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Element-ui局部添加loading效果

Vue+element ui在加载表数据元素加载微调器=“el icon loading”时在测试过程中遇到问题:constloading=this$loading({lock://is与修改器相同text://ofv-loading图标目标:...

Ubuntu 下查看CPU 信息命令

看看带有“处理器”一词的行数,即逻辑CPU的数量。因此,您可以在cmd下输入以下命令:cat/proc/cpuinfo|greproprocessor|wc-l因此,C++程序自然会想到使用strstr函数来查找processor关键字的出现次数。...

ABB机器人功能程序(FUNC)

功能程序的应用范围非常广泛。熟练的人员可以根据不同的需求创建相应的功能程序。函数程序的固定格式是FUNC,返回结束。在ABB的学习中,许多学生对功能程序几乎一无所知,即使他们真的在使用它。在学习ABB的过程中,我遇到了几个用例,所以我总结了它们以加深我的理解。...

如何下载Chrome离线版EXE安装文件和MSI版安装文件

对于Chrome的稳定版本(官方版本),您只需添加“?”在Chrome的“最终用户许可协议”页面上的链接之后?Standalone=1对于Beta版和开发版Chrome,只需记住以下地址:http://dl.google.com/chrome/install/{versionnumber}/crome_安装程序中的版本号。exe表示要下载的Chrome版本号...

【工具技巧】:sublime notepad++ 多行编辑

将光标定位到一行-˃ctrl+shift+↑↓, 上下移动一行。选择-˃ctrl+shift后+↑↓, 上下移动所选区域。再次按6:Ctrl+Shift+Enter在光标前插入一行。...

windows下mstsc 远程Ubuntu 教程

为远程桌面控制设置Ubuntu 16.04的缺点是重新启动系统需要使用监视器登录系统。首先,我们将Ubuntu远程控制设置为允许远程连接,进入系统-˃首选项-˃桌面共享,或直接搜索桌面共享。如图所示,选中此项,然后选中安全项,并设置远程密码。...