| | |
| | | import com.ruoyi.device.camera.factory.CameraSDKFactory;
|
| | | import com.ruoyi.device.noguidezone.domain.ArdCameraNoGuideZone;
|
| | | import com.ruoyi.device.noguidezone.service.IArdCameraNoGuideZoneService;
|
| | | import com.ruoyi.device.terrain.domain.ArdTerrainMark;
|
| | | import com.ruoyi.device.terrain.service.IArdTerrainMarkService;
|
| | | import com.ruoyi.utils.gis.GisUtil;
|
| | | import com.ruoyi.utils.gis.Point;
|
| | | import com.ruoyi.utils.sdk.common.GlobalVariable;
|
| | |
| | | import org.springframework.boot.ApplicationArguments;
|
| | | import org.springframework.boot.ApplicationRunner;
|
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | | import java.util.*;
|
| | | import java.util.stream.Collectors;
|
| | |
|
| | |
|
| | | /**
|
| | |
| | | private IArdAlarmpointsWellService ardAlarmpointsWellService;
|
| | | @Resource
|
| | | private IArdCameraNoGuideZoneService ardCameraNoGuideZoneService;
|
| | | @Resource
|
| | | private IArdTerrainMarkService ardTerrainMarkService;
|
| | |
|
| | | /**
|
| | | * 启动线程方法,用于执行初始化登录相机的逻辑
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * @return
|
| | | * @Author 刘苏义
|
| | | * @Description 修正俯仰值(根据相机ID获取500米范围内的地形参数集合,计算平均值加上T值)
|
| | | * @Date 2024/6/22 11:16
|
| | | * @Param
|
| | | */
|
| | | @Override
|
| | | public Double correctPitch(CameraCmd cmd) {
|
| | | Double pitchAngle = 0.0;
|
| | | try {
|
| | | double[] targetPositions = cmd.getTargetPosition();
|
| | | ArdTerrainMark ardTerrainMark = new ArdTerrainMark();
|
| | | ardTerrainMark.setCameraId(cmd.getCameraId());
|
| | | List<ArdTerrainMark> ardTerrainMarks = ardTerrainMarkService.selectArdTerrainMarkList(ardTerrainMark);
|
| | | //过滤500米范围内的集合
|
| | | ardTerrainMarks = ardTerrainMarks.stream().filter(n -> GisUtil.getDistance(targetPositions, new double[]{n.getLongitude(), n.getLatitude(), n.getAltitude()}) <= 500).collect(Collectors.toList());
|
| | | //计算T平均值
|
| | | OptionalDouble averageT = ardTerrainMarks.stream().mapToDouble(ArdTerrainMark::getT).average();
|
| | | // 输出
|
| | | if (averageT.isPresent()) {
|
| | | pitchAngle = averageT.getAsDouble();
|
| | | log.debug("修正俯仰值:" + pitchAngle);
|
| | | }
|
| | | } catch (Exception ex) {
|
| | | log.error("修正俯仰值异常:" + ex.getMessage());
|
| | |
|
| | | }
|
| | | return pitchAngle;
|
| | | }
|
| | |
|
| | | //引导指向井
|
| | | @Override
|
| | | public AjaxResult guideTargetWell(CameraCmd cmd) {
|
| | |
| | | case 1:
|
| | | if (ardWellGuideCamera.getP1() != null) {
|
| | | ptzMap = new HashMap<>();
|
| | | ptzMap.put("p", ardWellGuideCamera.getP1());
|
| | | ptzMap.put("t", ardWellGuideCamera.getT1());
|
| | | ptzMap.put("z", ardWellGuideCamera.getZ1());
|
| | | ptzMap.put("p" , ardWellGuideCamera.getP1());
|
| | | ptzMap.put("t" , ardWellGuideCamera.getT1());
|
| | | ptzMap.put("z" , ardWellGuideCamera.getZ1());
|
| | | }
|
| | | break;
|
| | | case 2:
|
| | | if (ardWellGuideCamera.getP2() != null) {
|
| | | ptzMap = new HashMap<>();
|
| | | ptzMap.put("p", ardWellGuideCamera.getP2());
|
| | | ptzMap.put("t", ardWellGuideCamera.getT2());
|
| | | ptzMap.put("z", ardWellGuideCamera.getZ2());
|
| | | ptzMap.put("p" , ardWellGuideCamera.getP2());
|
| | | ptzMap.put("t" , ardWellGuideCamera.getT2());
|
| | | ptzMap.put("z" , ardWellGuideCamera.getZ2());
|
| | | }
|
| | | break;
|
| | |
|
| | |
| | | }
|
| | | //按井坐标开始引导
|
| | | if (!guideTargetPosition(cmd).get("code").equals(200)) {
|
| | | return AjaxResult.warn("井坐标引导失败", "cameraId:" + cameraId);
|
| | | return AjaxResult.warn("井坐标引导失败" , "cameraId:" + cameraId);
|
| | | }
|
| | | return AjaxResult.success("井坐标引导成功", "cameraId:" + cameraId);
|
| | | return AjaxResult.success("井坐标引导成功" , "cameraId:" + cameraId);
|
| | |
|
| | | }
|
| | |
|