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

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

最新文章

  1. 微信公众帐号开发-消息创建时间long型与标准时间的互相转换
  2. .net中事件引起的内存泄漏分析
  3. iOS项目的本地化处理(多国语言)
  4. Memcached的使用
  5. flex4+fms3.5+cs4开发实时音视频直播及点播详解
  6. HTTP详解(3)-http1.0 和http1.1 区别
  7. Referenced file contains errors (http://tiles.apache.org/dtds/tiles-config_3_0.dtd)
  8. 【转】 树莓派学习笔记——I2C设备载入和速率设置
  9. Java I/O 模型的演进
  10. 还在等待漫长的iOS构建过程?来试试通过命令行的方式进行iOS应用快速构建和运行吧
  11. spark transform操作卡死,请先对rdd进行action操作
  12. jQuery控制元素隐藏和显示
  13. vue入坑总结
  14. 阶段小项目1:循环间隔1秒lcd显示红绿蓝
  15. js获取当前浏览器地址栏的链接,然后在链接后面加参数
  16. C语言第二次作业——顺序结构
  17. 【Python基础】lpthw - Exercise 44 继承与组合
  18. pip命令安装 pyinstaller失败解决办法
  19. Flink(二)CentOS7.5搭建Flink1.6.1分布式集群
  20. 让运行着的ASP.NET Web程序重新启动

热门文章

  1. kubebuilder实战之八:知识点小记
  2. mybaits源码分析--事务管理(八)
  3. zabbix 历史数据处理
  4. Spring Cloud Eureka 实践(二)
  5. 专项测试-App性能分析
  6. openswan专栏序言
  7. 第05课:GDB 常用命令详解(上)
  8. XML解析——Jsoup解析器
  9. SpingBoot-Dubbo-Zookeeper-分布式
  10. python库--pandas--文本文件读取