一、数据格式转换
//将要素数据转换成站点数据StationData stationData = new StationData();for(int i=0;i<dataList.size();i++) { stationData.addData( timeBatch+i, Double.valueOf(dataList.get(i).get("lon").toString()).doubleValue() ,Double.valueOf(dataList.get(i).get("lat").toString()).doubleValue() ,Double.valueOf(dataList.get(i).get("pre_1h").toString()).doubleValue());}
二、区域Shp文件数据获取
Resource resource = new ClassPathResource("shp/xx.shp"); VectorLayer shapeLayer =MapDataManage.readMapFile_ShapeFile(resource.getFile().getAbsolutePath(),"gb2312");
三、数据插值
/** * * stationData 站点数据 * shapeLayer shp文件数据 */ @Override public GridData convertGridData(StationData stationData,VectorLayer shapeLayer) { GridDataSetting gridDataSetting = new GridDataSetting(); gridDataSetting.dataExtent = shapeLayer.getExtent(); //最小边界经度 double startlon = shapeLayer.getExtent().minX; //System.out.println("startlon:"+startlon); //最大边界经度 double endlon = shapeLayer.getExtent().maxX; //System.out.println("endlon:"+endlon); //最小边界纬度 double startlat = shapeLayer.getExtent().minY; //System.out.println("startlat:"+startlat); //最大边界纬度 double endlat = shapeLayer.getExtent().maxY; //System.out.println("endlat:"+endlat); int noun=200; //倍数 //获取经纬度差值乘以倍数,也可理解为步长 gridDataSetting.xNum = (int) ((endlon - startlon) * noun ); gridDataSetting.yNum = (int) ((endlat - startlat) * noun ); //设置插值 InterpolationSetting interpolationSetting = new InterpolationSetting(); interpolationSetting.setInterpolationMethod(InterpolationMethods.IDW_Neighbors); interpolationSetting.setRadius(1); //搜索半径 interpolationSetting.setMinPointNum(3); interpolationSetting.setGridDataSetting(gridDataSetting); //插值成格点数据 return stationData.interpolateData(interpolationSetting); }