From 7d77fd318e575c1873c8caf549ce7617785c148f Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Thu, 20 Aug 2020 09:04:16 +0800
Subject: [PATCH] 风场图update
---
src/main/java/com/moral/service/DeviceService.java | 1
src/main/java/com/moral/controller/ScreenController.java | 22 +++++
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 162 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 184 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 207fe08..af81612 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -1995,6 +1995,28 @@
List list=deviceService.byMonitorIdGetDeviceAndWind(monitorPointId,time,table);
return list;
}
+ @GetMapping("/windAndDeviceDataByArea")
+ @ResponseBody
+ public List windAndDeviceDataByArea(String monitorPointId) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.MINUTE, (calendar.get(Calendar.MINUTE) - 2));
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String time = df.format(calendar.getTime())+":00";
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH) + 1;
+ String mon;
+ if (month<10){
+ mon="0"+month;
+ }else {
+ mon=""+month;
+ }
+ String table="history_minutely_"+year+mon;
+ log.info(table);
+ log.info(time);
+ List list=deviceService.byMonitorIdGetDeviceAndWindSpecial(monitorPointId,time,table);
+ return list;
+ }
+
@GetMapping("forecastO3")
@ApiOperation(value = "���������������������������", notes = "���������������������������")
@ApiImplicitParams(value = {
diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java
index 8b7cb04..8064130 100644
--- a/src/main/java/com/moral/service/DeviceService.java
+++ b/src/main/java/com/moral/service/DeviceService.java
@@ -81,6 +81,7 @@
Device byMacGetDevice(String mac);
List<DeviceAndWind> byMonitorIdGetDeviceAndWind(String id,String time,String tab);
+ List<DeviceAndWind> byMonitorIdGetDeviceAndWindSpecial(String id,String time,String tab);
DeviceAndWind getDeviceAndWindByMac(String mac,String time,String table);
}
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index 0db3787..52bda83 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -840,7 +840,167 @@
}
}
}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);
+ 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);
+ MonitorPoint monitorPoint=monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
+ 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;
+ }
+
+ @Override
+ public List byMonitorIdGetDeviceAndWindSpecial(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;
+ 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);
+ }
+ Double loma= 0.0;
+ Double lomi= 0.0;
+ Double lama= 0.0;
+ Double lami= 0.0;
+ 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-2000*0.00001141;
+ Double lo2=loma+2000*0.00001141;
+ Double la2=lami-2000*0.00000899;
+ Double la1=lama+2000*0.00000899;
+
+ Double dx=0.00001141*70;
+ Double dy=0.00000899*70;
+
+ int nx=(int) Math.floor((lo2-lo1)/dx);
+ int ny=(int) Math.floor((la1-la2)/dy);
+ System.out.println(nx+"----"+ny);
+ 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);
--
Gitblit v1.8.0