[原创.数据可视化系列之四]跨平台,多格式的等值线和等值面的生成
2016-06-03 22:51
651 查看
这些年做项目的时候,碰到等值面基本都是arcgis server来支撑的,通过构建GP服务,一般的都能满足做等值线和等值面的需求。可是突然有一天,我发现如果没有arcgis server 的话,我既然没法生成等值面等值线了。况且,还有许多别的要求:
[align=left]没有arcgis server支持,arcgis server毕竟是很大一笔开销,个人基本无法负担;[/align]
[align=left]跨平台,有的服务器是linux,有的是windows,看来,只能是java的类库了;[/align]
[align=left]免费,生成等值线和等值面的程序不能有费用;[/align]
[align=left]输出多种格式,既能输出图片格式,又能输出矢量格式,尤其是 kml之类的矢量数据;[/align]
在气象家园http://bbs.06climate.com/找到一个很不错的解决方案,MeteoInfo,作者是一个很厉害的人,具体的不说了,大家可以去看他的网站和博客,下面我说说如何使用他的类库来进行等值面的生成。如果大家有很好的类似的库,欢迎推荐给我,谢谢。
1:引用他的项目中的lib目录中的jar包,生成窗口对象:
2:添加站点信息,用于插值
3:设定插值参数
5:导出数据,可以是kml或者png之类的图片格式
这是使用这个做出的效果图之一:
浏览数据秀(dataxiu.com)网站,了解更多数据可视化方法技术。
[align=left]没有arcgis server支持,arcgis server毕竟是很大一笔开销,个人基本无法负担;[/align]
[align=left]跨平台,有的服务器是linux,有的是windows,看来,只能是java的类库了;[/align]
[align=left]免费,生成等值线和等值面的程序不能有费用;[/align]
[align=left]输出多种格式,既能输出图片格式,又能输出矢量格式,尤其是 kml之类的矢量数据;[/align]
在气象家园http://bbs.06climate.com/找到一个很不错的解决方案,MeteoInfo,作者是一个很厉害的人,具体的不说了,大家可以去看他的网站和博客,下面我说说如何使用他的类库来进行等值面的生成。如果大家有很好的类似的库,欢迎推荐给我,谢谢。
1:引用他的项目中的lib目录中的jar包,生成窗口对象:
MapView mapView = new MapView(); mapView.setBackground(new Color(255, 255, 255, 0)); mapView.setBounds(0, 0, 200, 200); VectorLayer clipLayer = MapDataManage.readMapFile_ShapeFile(“d:/chengdu.shp”); //剪切图层,就是生成等值面的形状范围,
//使用shp最方便了,这儿有一个坑,就是你是用的shp可以通过他自带的软件加载显示才行,否则程序会异常,至于为啥有的shp不能加载,我也没搞清楚
//反正这个坑让我趟过去了。
2:添加站点信息,用于插值
StationData stationData = new StationData(); // for(int i=0;i<10;i++) { stationData.addData("st"+i, 114+0.1*i, 35+0.1*i, i*10); //站点名称,经度,维度,值 }
3:设定插值参数
GridDataSetting gridDataSetting = new GridDataSetting(); gridDataSetting.dataExtent = clipLayer.getExtent(); stationData.projInfo = clipLayer.getProjInfo(); gridDataSetting.xNum = contourconfig.getGridx();// 格点点数 gridDataSetting.yNum = contourconfig.getGridy();// 格点点数 InterpolationSetting interSet = new InterpolationSetting(); interSet.setGridDataSetting(gridDataSetting); interSet.setInterpolationMethod(InterpolationMethods.IDW_Radius); interSet.setRadius(5); interSet.setMinPointNum(1); GridData gridData = stationData.interpolateData(interSet); LegendScheme legendScheme =LegendManage.createLegendSchemeFromGridData(gridData, LegendType.UniqueValue,ShapeTypes.Polygon);
4:插值生成图层:
VectorLayer contourLayer = DrawMeteoData.createShadedLayer(gridData, legendScheme, "ContourLayer", "Data", true); VectorLayer lastLayer = contourLayer.clip(clipLayer); mapView.addLayer(lastLayer);
5:导出数据,可以是kml或者png之类的图片格式
mapView.exportToPicture(“d:/ddd.png”); //地图导出为图片 //地图导出为kml lastLayer.saveAsKMLFile(“d:/ddd.kml”);
这是使用这个做出的效果图之一:
浏览数据秀(dataxiu.com)网站,了解更多数据可视化方法技术。
相关文章推荐
- 学习进度条13
- 斯坦福大学的机器学习跟深度学习。
- iOS之支付宝集成(二)
- 自定义土司随意拖动
- InetAdress,URL类的使用
- N皇后问题
- 简易ViewHolder
- Android学习笔记之TimePicker和DatePicker
- MyEclipse中项目@Override注解报错问题
- 感悟:致在大学中感到迷茫或即将进入大学的你
- 站立会议08(第二次冲刺)
- 北航面试之离散数学
- vector介绍
- JZOJ4513. 【JSOI2016】独特的树叶
- SICP 练习1.31 product过程
- vector介绍
- leetcode.44. Wildcard Matching
- c++6.2
- 第三方社会化评论系统体验报告
- html5语义化标签