From 9b9f6e309a0b0ffd5c2495eaf8438b36704991a6 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Mon, 28 Sep 2020 11:02:07 +0800 Subject: [PATCH] update --- src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 269 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 219 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index 53e3cc1..f31a2d0 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -719,67 +719,38 @@ @Override public List byMonitorIdGetDeviceAndWind(String id,String time,String tab) { - List<DeviceAndWind> deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id),time,tab); List loList=new ArrayList(); List laList=new ArrayList(); Double U=0.0; Double V=0.0; - log.info("id="+id); - log.info("time="+time); - log.info("tab="+tab); - log.info("deviceAndWinds="+deviceAndWinds); + List list=new ArrayList(); for (DeviceAndWind andWind : deviceAndWinds) { Double lo=andWind.getLongitude(); Double la=andWind.getLatitude(); - log.info("lo="+lo); - List list= LatLngTransformation.Convert_BD09_To_GCJ02(la,lo); - log.info("list2="+list); - Double transLo=(Double) list.get(0); - Double transLa=(Double) list.get(1); + List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(la,lo); + Double transLo=(Double) tranlist.get(0); + Double transLa=(Double) tranlist.get(1); loList.add(transLo); laList.add(transLa); } - log.info(loList.size()); - log.info(loList); - Double loma=0.0; - Double lomi=0.0; - Double lama=0.0; - Double lami=0.0; - - + Double loma= 0.0; + Double lomi= 0.0; + Double lama= 0.0; + Double lami= 0.0; if (loList.size()>0){ - loma= (Double) loList.get(0); - lomi= (Double) loList.get(0); + loma= (Double) Collections.max(loList); + lomi= (Double) Collections.min(loList); } if (laList.size()>0){ - lama= (Double) laList.get(0); - lami= (Double) laList.get(0); + lama= (Double) Collections.max(laList); + lami= (Double) Collections.min(laList); } - for (int i = 1; i <loList.size() ; i++) { - if (loma<=(Double) loList.get(i)){ - loma=(Double) loList.get(i); - } - if (lomi>=(Double) loList.get(i)){ - lomi=(Double) loList.get(i); - } - } - - for (int i = 1; i <laList.size() ; i++) { - if (lama<=(Double) laList.get(i)){ - lama=(Double) laList.get(i); - } - if (lami>=(Double) laList.get(i)){ - lami=(Double) laList.get(i); - } - } - Map laLaMap=new HashMap(); laLaMap.put("maxLo",loma); laLaMap.put("minLo",lomi); laLaMap.put("maxLa",lama); - laLaMap.put("lami",lami); - System.out.println(laLaMap); + laLaMap.put("minLa",lami); Double lo1=lomi-250*0.00001141; Double lo2=loma+250*0.00001141; @@ -817,11 +788,11 @@ windDir=0.0; windSpeed=0.0; } - Double tvoc=deviceAndWinds.get(j).gettVoc(); + Double tvoc=deviceAndWinds.get(j).getTVoc(); - List list= LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(),deviceAndWinds.get(j).getLongitude()); - Double transLo=(Double) list.get(0); - Double transLa=(Double) list.get(1); + List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(),deviceAndWinds.get(j).getLongitude()); + Double transLo=(Double) tranlist.get(0); + Double transLa=(Double) tranlist.get(1); if (tvoc==null){ tvoc=0.0; } @@ -867,7 +838,7 @@ } } }else { - if (y>=1 && j==y*nx+x && uList.get(j)==0.0 && vList.get(j)==0.0){ + if (y>=1 && j==y*nx+x){ int k; for (k = j-2*nx; k <=j+2*nx ;) { uList.set(k-1,U); @@ -896,7 +867,6 @@ List transList= LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa,monitorLo); Double transLo=(Double) transList.get(0); Double transLa=(Double) transList.get(1); - List list=new ArrayList(); list.add(jsonArray); list.add(transLo); list.add(transLa); @@ -905,7 +875,206 @@ } @Override - public DeviceAndWind getDeviceAndWindByMac(String mac,String time,String table) { - return deviceMapper.getDeviceAndWindByMac(mac,time,table); + public List byMonitorIdGetDeviceAndWindSpecial(String id, String time, String tab) { + MonitorPoint monitorPoint=monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id)); + Integer areaCode=monitorPoint.getAreaCode(); + String townCode= monitorPoint.getTownCode()+""; + int monitorPointId=monitorPoint.getId(); + Map<String, Object> parm=new HashMap<>(); + List<DeviceAndWind> deviceAndWinds=new ArrayList<>(); + Double loma= 0.0; + Double lomi= 0.0; + Double lama= 0.0; + Double lami= 0.0; + + int length=1; + int perdlen=1; + if (areaCode==320581){ + parm.put("areaCode",areaCode); + List<Device> deviceList=deviceMapper.getDeviceByCode(parm); + for (Device d : deviceList) { + String mac=d.getMac(); + DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac,time,tab); + if (deviceAndWind!=null){ + deviceAndWinds.add(deviceAndWind); + } + } + length=8000; + perdlen=2200; + }else if ((areaCode == 320583) && (townCode.equals("320583108000"))){ + parm.put("townCode",townCode); + List<Device> deviceList=deviceMapper.getDeviceByCode(parm); + for (Device d : deviceList) { + String mac=d.getMac(); + DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac,time,tab); + if (deviceAndWind!=null){ + deviceAndWinds.add(deviceAndWind); + } + } + length=2000; + perdlen=280; + }else if(monitorPointId==35){ + DeviceAndWind deviceAndWind=deviceMapper.getDeviceAndWindByMac("898607b0101730392253",time,tab); + DeviceAndWind deviceAndWind1=deviceMapper.getDeviceAndWindByMac("p5dnd7a0392083",time,tab); + deviceAndWinds.add(deviceAndWind); + deviceAndWinds.add(deviceAndWind1); + length=2000; + perdlen=50; + + }else { + deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id),time,tab); + length=2000; + perdlen=80; + } + List loList=new ArrayList(); + List laList=new ArrayList(); + Double U=0.0; + Double V=0.0; + List list=new ArrayList(); + for (DeviceAndWind andWind : deviceAndWinds) { + Double lo=andWind.getLongitude(); + Double la=andWind.getLatitude(); + List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(la,lo); + Double transLo=(Double) tranlist.get(0); + Double transLa=(Double) tranlist.get(1); + loList.add(transLo); + laList.add(transLa); + } + + if (loList.size()>0){ + loma= (Double) Collections.max(loList); + lomi= (Double) Collections.min(loList); + } + if (laList.size()>0){ + lama= (Double) Collections.max(laList); + lami= (Double) Collections.min(laList); + } + Map laLaMap=new HashMap(); + laLaMap.put("maxLo",loma); + laLaMap.put("minLo",lomi); + laLaMap.put("maxLa",lama); + laLaMap.put("minLa",lami); + + Double lo1=lomi-length*0.00001141; + Double lo2=loma+length*0.00001141; + Double la2=lami-length*0.00000899; + Double la1=lama+length*0.00000899; + + Double dx=0.00001141*perdlen; + Double dy=0.00000899*perdlen; + int nx=(int) Math.floor((lo2-lo1)/dx); + int ny=(int) Math.floor((la1-la2)/dy); + String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 + + ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy + + ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 + + ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 + + ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}"; + + String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 + + ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy + + ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 + + ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 + + ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}"; + + List<Double> uList=new ArrayList<Double> (); + List<Double> vList=new ArrayList<Double> (); + int x=0; + int y=0; + List<Map> mapList=new ArrayList<Map>(); + + for (int j = 0; j <deviceAndWinds.size() ; j++) { + Map<String,Double> map=new HashMap<String,Double> (); + Double windDir= deviceAndWinds.get(j).getWindDir(); + Double windSpeed=deviceAndWinds.get(j).getWindSpeed(); + if (windDir==null){ + windDir=0.0; + windSpeed=0.0; + } + Double tvoc=deviceAndWinds.get(j).getTVoc(); + + List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(),deviceAndWinds.get(j).getLongitude()); + Double transLo=(Double) tranlist.get(0); + Double transLa=(Double) tranlist.get(1); + if (tvoc==null){ + tvoc=0.0; + } + Double dir = (270.0 - windDir * Math.PI / 180.0); + + U = windSpeed * Math.cos(dir); + V = windSpeed * Math.sin(dir); + map.put("lo",transLo); + map.put("la",transLa); + map.put("U",U); + map.put("V",V); + mapList.add(map); + } + for (int i = 0; i <mapList.size() ; i++) { + Double lo= (Double) mapList.get(i).get("lo"); + Double la= (Double) mapList.get(i).get("la"); + x= (int) Math.floor((lo-lo1)/dx); + y=Math.abs((int)Math.floor((la-la1)/dy)); + //y=Math.floor(Math.abs(la-la1)/dy); + U=(Double) mapList.get(i).get("U"); + V=(Double) mapList.get(i).get("V"); + if (i==0){ + for (int j = 0; j <nx*ny ; j++) { + uList.add(0.0); + vList.add(0.0); + } + } + for (int j = 0; j <nx*ny ; j++) { + if (i==0){ + if ((y>=2 && j==(y)*nx+x)){ + int k; + for (k = j-2*nx; k <=j+2*nx ;k=k+nx) { + uList.set(k,U); + uList.set(k-1,U); + uList.set(k-2,U); + uList.set(k+1,U); + uList.set(k+2,U); + vList.set(k,V); + vList.set(k-1,V); + vList.set(k-2,V); + vList.set(k+1,V); + vList.set(k+2,V); + } + } + }else { + if (y>=1 && j==y*nx+x){ + int k; + for (k = j-2*nx; k <=j+2*nx ;) { + uList.set(k-1,U); + uList.set(k-2,U); + uList.set(k+1,U); + uList.set(k+2,U); + vList.set(k-1,V); + vList.set(k-2,V); + vList.set(k+1,V); + vList.set(k+2,V); + k=k+nx; + } + uList.set(j,U); + vList.set(j,V); + } + } + } + } + String uData = "\"" + "data" + "\"" + ": " + uList; + String vData = "\"" + "data" + "\"" + ": " + vList; + String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]"; + JSONArray jsonArray = JSONArray.parseArray(s1); + + Double monitorLo=monitorPoint.getLongitude(); + Double monitorLa=monitorPoint.getLatitude(); + List transList= LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa,monitorLo); + Double transLo=(Double) transList.get(0); + Double transLa=(Double) transList.get(1); + + list.add(jsonArray); + list.add(transLo); + list.add(transLa); + list.add(laLaMap); + return list; } + } -- Gitblit v1.8.0