千家信息网

如何理解Java MeteoInfo解析与绘图代码教程

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"如何理解Java MeteoInfo解析与绘图代码教程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解Java MeteoI
千家信息网最后更新 2025年01月19日如何理解Java MeteoInfo解析与绘图代码教程

这篇文章主要讲解了"如何理解Java MeteoInfo解析与绘图代码教程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解Java MeteoInfo解析与绘图代码教程"吧!

最近太忙了,终于有时间继续写了,上文说到了基本上的绘图方法,但缺少色阶呈现,一般图叠加着地图上,后端不需要管色阶,但也要注意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直接返回的站点数据,这个怎么绘制下一节说明一下,再后面的章节就是个别问题的研究了

感谢各位的阅读,以上就是"如何理解Java MeteoInfo解析与绘图代码教程"的内容了,经过本文的学习后,相信大家对如何理解Java MeteoInfo解析与绘图代码教程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0