一、数据格式转换

  1. //将要素数据转换成站点数据
  2. StationData stationData = new StationData();
  3. for(int i=0;i<dataList.size();i++) {
  4. stationData.addData( timeBatch+i,
  5. Double.valueOf(dataList.get(i).get("lon").toString()).doubleValue()
  6. ,Double.valueOf(dataList.get(i).get("lat").toString()).doubleValue()
  7. ,Double.valueOf(dataList.get(i).get("pre_1h").toString()).doubleValue());
  8. }

二、区域Shp文件数据获取

  1. Resource resource = new ClassPathResource("shp/xx.shp");
  2. VectorLayer shapeLayer =MapDataManage.readMapFile_ShapeFile(resource.getFile().getAbsolutePath(),"gb2312");

三、数据插值

  1. /**
  2. *
  3. * stationData 站点数据
  4. * shapeLayer shp文件数据
  5. */
  6. @Override
  7. public GridData convertGridData(StationData stationData,VectorLayer shapeLayer) {
  8. GridDataSetting gridDataSetting = new GridDataSetting();
  9. gridDataSetting.dataExtent = shapeLayer.getExtent();
  10. //最小边界经度
  11. double startlon = shapeLayer.getExtent().minX;
  12. //System.out.println("startlon:"+startlon);
  13. //最大边界经度
  14. double endlon = shapeLayer.getExtent().maxX;
  15. //System.out.println("endlon:"+endlon);
  16. //最小边界纬度
  17. double startlat = shapeLayer.getExtent().minY;
  18. //System.out.println("startlat:"+startlat);
  19. //最大边界纬度
  20. double endlat = shapeLayer.getExtent().maxY;
  21. //System.out.println("endlat:"+endlat);
  22. int noun=200; //倍数
  23. //获取经纬度差值乘以倍数,也可理解为步长
  24. gridDataSetting.xNum = (int) ((endlon - startlon) * noun );
  25. gridDataSetting.yNum = (int) ((endlat - startlat) * noun );
  26. //设置插值
  27. InterpolationSetting interpolationSetting = new InterpolationSetting();
  28. interpolationSetting.setInterpolationMethod(InterpolationMethods.IDW_Neighbors);
  29. interpolationSetting.setRadius(1); //搜索半径
  30. interpolationSetting.setMinPointNum(3);
  31. interpolationSetting.setGridDataSetting(gridDataSetting);
  32. //插值成格点数据
  33. return stationData.interpolateData(interpolationSetting);
  34. }