zhangnaisong
2024-05-07 9b9af4c9457c03061ce4d0bb7656a2c3ad04894e
视频标签加入有高程及无高程判断提交
已修改1个文件
52 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarmpoints/well/service/impl/ArdAlarmpointsWellServiceImpl.java
@@ -928,24 +928,48 @@
        }
        List<Map<String,Object>> result = new ArrayList();
        for(ArdAlarmpointsWell ardAlarmpointsWell : innerList){
            Map<String,Object> map = new HashMap();
            double distance_Target = RealDistance(ardCameras.getLongitude(),ardCameras.getLatitude(),ardAlarmpointsWell.getLongitude(), ardAlarmpointsWell.getLatitude());
            double Angle_A = GetAngle(ardCameras.getLongitude(),ardCameras.getLatitude(),ardAlarmpointsWell.getLongitude(), ardAlarmpointsWell.getLatitude());
            //double Angle_E = Math.atan((ardCameras.getAltitude() - 0) / distance_Target) * 180 / Math.PI;//无高程
            double Angle_E = Math.atan((ardCameras.getAltitude() + ardTowers.getAltitude() - ardAlarmpointsWell.getAltitude()) / distance_Target) * 180 / Math.PI;//有高程
        if(ardTowers.getAltitude() > 5){//有高程
            for(ArdAlarmpointsWell ardAlarmpointsWell : innerList){
                Map<String,Object> map = new HashMap();
                double distance_Target = RealDistance(ardCameras.getLongitude(),ardCameras.getLatitude(),ardAlarmpointsWell.getLongitude(), ardAlarmpointsWell.getLatitude());
            Angle_A = Angle_A - (p - fHorFieldAngle/2);//视场角内方位
            Angle_E = Angle_E - (360 - t - fVerFieldAngle/2);//视场角内俯仰
            if(!(Angle_E/fVerFieldAngle < 0.1 || Angle_A/fHorFieldAngle < 0.08 || Angle_A/fHorFieldAngle > 0.92)){//最上,最左,最右去掉
                map.put("id",ardAlarmpointsWell.getId());
                map.put("wellId",ardAlarmpointsWell.getWellId());
                map.put("horFieldProportion",Angle_A/fHorFieldAngle);//横向占比
                map.put("verFieldProportion",Angle_E/fVerFieldAngle);//纵向占比
                result.add(map);
                double Angle_A = GetAngle(ardCameras.getLongitude(),ardCameras.getLatitude(),ardAlarmpointsWell.getLongitude(), ardAlarmpointsWell.getLatitude());
                //double Angle_E = Math.atan((ardCameras.getAltitude() - 0) / distance_Target) * 180 / Math.PI;//无高程
                double Angle_E = Math.atan((ardCameras.getAltitude() + ardTowers.getAltitude() - ardAlarmpointsWell.getAltitude()) / distance_Target) * 180 / Math.PI;//有高程
                Angle_A = Angle_A - (p - fHorFieldAngle/2);//视场角内方位
                Angle_E = Angle_E - (360 - t - fVerFieldAngle/2);//视场角内俯仰
                if(!(Angle_E/fVerFieldAngle < 0.1 || Angle_A/fHorFieldAngle < 0.08 || Angle_A/fHorFieldAngle > 0.92)){//最上,最左,最右去掉
                    map.put("id",ardAlarmpointsWell.getId());
                    map.put("wellId",ardAlarmpointsWell.getWellId());
                    map.put("horFieldProportion",Angle_A/fHorFieldAngle);//横向占比
                    map.put("verFieldProportion",Angle_E/fVerFieldAngle);//纵向占比
                    result.add(map);
                }
            }
        }else{//无高程
            for(ArdAlarmpointsWell ardAlarmpointsWell : innerList){
                Map<String,Object> map = new HashMap();
                double distance_Target = RealDistance(ardCameras.getLongitude(),ardCameras.getLatitude(),ardAlarmpointsWell.getLongitude(), ardAlarmpointsWell.getLatitude());
                double Angle_A = GetAngle(ardCameras.getLongitude(),ardCameras.getLatitude(),ardAlarmpointsWell.getLongitude(), ardAlarmpointsWell.getLatitude());
                double Angle_E = Math.atan((ardCameras.getAltitude() - 0) / distance_Target) * 180 / Math.PI;//无高程
                //double Angle_E = Math.atan((ardCameras.getAltitude() + ardTowers.getAltitude() - ardAlarmpointsWell.getAltitude()) / distance_Target) * 180 / Math.PI;//有高程
                Angle_A = Angle_A - (p - fHorFieldAngle/2);//视场角内方位
                Angle_E = Angle_E - (360 - t - fVerFieldAngle/2);//视场角内俯仰
                if(!(Angle_E/fVerFieldAngle < 0.1 || Angle_A/fHorFieldAngle < 0.08 || Angle_A/fHorFieldAngle > 0.92)){//最上,最左,最右去掉
                    map.put("id",ardAlarmpointsWell.getId());
                    map.put("wellId",ardAlarmpointsWell.getWellId());
                    map.put("horFieldProportion",Angle_A/fHorFieldAngle);//横向占比
                    map.put("verFieldProportion",Angle_E/fVerFieldAngle);//纵向占比
                    result.add(map);
                }
            }
        }
        return result;
    }