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ù)視圖計(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");

以上的方法我只設(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直接返回的站點(diǎn)數(shù)據(jù),這個怎么繪制下一節(jié)說明一下,再后面的章節(jié)就是個別問題的研究了
到此這篇關(guān)于Java MeteoInfo解析與繪圖代碼教程詳解的文章就介紹到這了,更多相關(guān)Java MeteoInfo繪圖教程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中的isTrusted屬性及其應(yīng)用場景詳解
在現(xiàn)代 Web 開發(fā)中,JavaScript 是構(gòu)建交互式應(yīng)用的核心語言,隨著前端技術(shù)的不斷發(fā)展,開發(fā)者需要處理越來越多的復(fù)雜場景,例如事件處理、數(shù)據(jù)傳遞和狀態(tài)管理等,本文將通過一個實(shí)際案例,深入探討 isTrusted 屬性的來源、作用,需要的朋友可以參考下2025-01-01
java實(shí)現(xiàn)水果超市管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)水果超市管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
SpringBoot?表單提交全局日期格式轉(zhuǎn)換器實(shí)現(xiàn)方式
這篇文章主要介紹了SpringBoot?表單提交全局日期格式轉(zhuǎn)換器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例
這篇文章主要介紹了Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例,Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包,需要的朋友可以參考下2014-10-10
Java實(shí)現(xiàn)經(jīng)典俄羅斯方塊游戲
俄羅斯方塊是一個最初由阿列克謝帕吉特諾夫在蘇聯(lián)設(shè)計(jì)和編程的益智類視頻游戲。本文將利用Java實(shí)現(xiàn)這一經(jīng)典的小游戲,需要的可以參考一下2022-01-01
IDEA創(chuàng)建springboot依賴下載很慢的解決方法
maven會使用遠(yuǎn)程倉庫來加載依賴,是一個國外的網(wǎng)站,所以會很慢,本文主要介紹了IDEA創(chuàng)建springboot依賴下載很慢的解決方法,具有一定的參考價值,感興趣的可以了解一下2023-12-12
詳解spring集成mina實(shí)現(xiàn)服務(wù)端主動推送(包含心跳檢測)
本篇文章主要介紹了詳解spring集成mina實(shí)現(xiàn)服務(wù)端主動推送(包含心跳檢測),具有一定的參考價值,與興趣的可以了解一下2017-09-09

