溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何理解Java MeteoInfo解析與繪圖代碼教程

發(fā)布時間:2021-10-21 15:23:51 來源:億速云 閱讀:243 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“如何理解Java MeteoInfo解析與繪圖代碼教程”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何理解Java MeteoInfo解析與繪圖代碼教程”吧!

最近太忙了,終于有時間繼續(xù)寫了,上文說到了基本上的繪圖方法,但缺少色階呈現(xiàn),一般圖疊加著地圖上,后端不需要管色階,但也要注意web頁面色階和我們的生成色階一定要對的上

對于后端導(dǎo)出圖片的話,就需要添加色階了,這一文很簡單,就涉及色階,名稱,網(wǎng)格刻度線

順便對代碼我進(jìn)行了優(yōu)化,看起來更直接

MeteoDataInfo meteoDataInfo = new MeteoDataInfo();
        meteoDataInfo.openMICAPSData("D:\\解析數(shù)據(jù)\\cldas\\cldas\\TEM\\20081000.000");
        GridData grid = meteoDataInfo.getGridData();
        //讀取地圖A
        VectorLayer scmap = MapDataManage.readMapFile_ShapeFile("C:\\Users\\Administrator\\Downloads\\好例子網(wǎng)_全國省、縣界線shp格式矢量圖(精確到縣區(qū)域)\\全國省、縣界線shp格式矢量圖(精確到縣區(qū)域)\\sichuan.shp");
        //讀取地圖B
        VectorLayer qgmap = MapDataManage.readMapFile_ShapeFile("E:\\shp\\四川\\四川省(3)_市界.shp");

        //描述地圖邊界線
        PolygonBreak pb = (PolygonBreak) qgmap.getLegendScheme().getLegendBreak(0);
        //是否設(shè)置填充
        pb.setDrawFill(false);
        //設(shè)置輪廓顏色
        pb.setOutlineColor(Color.black);

        //讀取色階
        LegendScheme als = LgsUtil.readFromLgs("D:\\apache-tomcat-8.0.50\\alt色階\\TEM.lgs");
        //繪制圖層
        VectorLayer layer = DrawMeteoData.createShadedLayer(grid,als,"","",true);
        //創(chuàng)建視圖
        MapView view = new MapView();
        layer = layer.clip(scmap);
        //疊加圖層
        view.addLayer(layer);
        view.addLayer(qgmap);

        //視圖設(shè)置
        MapLayout layout = new MapLayout();
        //去除圖形邊框
        layout.getActiveMapFrame().setDrawNeatLine(true);
        //抗鋸齒
        layout.getActiveMapFrame().setMapView(view);
        view.setAntiAlias(true);
        layout.setAntiAlias(true);

        //根據(jù)視圖計算視圖的寬高
        Extent extent = view.getExtent();
        int size = 800;
        Rectangle rectangle = new Rectangle(size, (int) (size * 1D / extent.getWidth() * extent.getHeight()));

        //設(shè)置地圖區(qū)域大小和外邊距
        int width = rectangle.width;
        int left = 50;
        int height = rectangle.height;
        int right = 140;
        int top = 50;
        int bottom = 50;
        //設(shè)置頁面邊界
        layout.setPageBounds(new Rectangle(0, 0, width + left + right, height + top + bottom));
        //獲取地圖框
        MapFrame frame = layout.getActiveMapFrame();
        //設(shè)置布局邊界
        frame.setLayoutBounds(new Rectangle(left, top, width, height));
        //繪制網(wǎng)格刻度線
        frame.setDrawGridLine(true);
        //設(shè)置網(wǎng)格間隔值
        frame.setGridXDelt(0.5);
        frame.setGridYDelt(0.5);
        //設(shè)置圖例
        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);

        //導(dǎo)出
        layout.exportToPicture(PathUtil.getDeskPath()+"/1.png");

如何理解Java MeteoInfo解析與繪圖代碼教程

以上的方法我只設(shè)定了刻度線和色階,其他的也很簡單,我在下面說明一下

標(biāo)題設(shè)定-放到設(shè)定好視圖大小的后面
Rectangle bounds = layout.getActiveMapFrame().getLayoutBounds();
layout.addText(title, bounds.x + bounds.width / 2, y, 18);

到目前簡單的繪制與設(shè)定就沒有什么可說的了,基本上的操作在文章里都有了,都是一些樣式的東西,這些都是繪制已經(jīng)進(jìn)行插值的圖片,但在開發(fā)中,我們也會遇到天擎和CIMISS直接返回的站點數(shù)據(jù),這個怎么繪制下一節(jié)說明一下,再后面的章節(jié)就是個別問題的研究了

感謝各位的閱讀,以上就是“如何理解Java MeteoInfo解析與繪圖代碼教程”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何理解Java MeteoInfo解析與繪圖代碼教程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI