From e171e177ca3a3ed6e46985b2e72603eb18e7248a Mon Sep 17 00:00:00 2001 From: PeterAlbus Date: Sun, 6 Feb 2022 23:38:10 +0800 Subject: [PATCH] add a api that provides a point's intensity of an earthquake --- pom.xml | 6 +++ .../controller/EstimateController.java | 39 ++++++++++++++++++- .../com/peteralbus/entity/EarthquakeInfo.java | 22 +++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e33d4d2..6f3a748 100644 --- a/pom.xml +++ b/pom.xml @@ -87,6 +87,12 @@ 1.18.22 provided + + + org.gavaghan + geodesy + 1.1.3 + org.springframework.boot diff --git a/src/main/java/com/peteralbus/controller/EstimateController.java b/src/main/java/com/peteralbus/controller/EstimateController.java index 7584416..bf659df 100644 --- a/src/main/java/com/peteralbus/controller/EstimateController.java +++ b/src/main/java/com/peteralbus/controller/EstimateController.java @@ -5,6 +5,10 @@ import com.peteralbus.entity.EarthquakeInfo; import com.peteralbus.service.EstimateService; import com.peteralbus.service.EarthquakeInfoService; import com.peteralbus.util.EstimateUtil; +import org.gavaghan.geodesy.Ellipsoid; +import org.gavaghan.geodesy.GeodeticCalculator; +import org.gavaghan.geodesy.GeodeticCurve; +import org.gavaghan.geodesy.GlobalCoordinates; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; @@ -14,10 +18,12 @@ import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** * The type Estimate controller. + * * @author PeterAlbus */ @CrossOrigin @@ -77,7 +83,7 @@ public class EstimateController { * @return the estimate result */ @GetMapping("/getAnalyzeResult") - public Estimate getPredictResult(long earthquakeId){ + public Estimate getPredictResult(Long earthquakeId){ System.out.println(earthquakeId); int count = estimateService.queryAnalyze(earthquakeId); Estimate estimate = new Estimate(); @@ -115,4 +121,35 @@ public class EstimateController { } return estimate; } + + /** + * Gets Point intensity. + * + * @param earthquakeId the earthquake id + * @param longitude the longitude + * @param latitude the latitude + * @return the intensity + */ + @GetMapping("/getPointIntensity") + public Double getPointIntensity(Long earthquakeId,Double longitude,Double latitude) + { + Double intensity= (double) 0; + Map mapParameter = new HashMap(); + mapParameter.put("earthquakeId",earthquakeId); + EarthquakeInfo earthquakeInfo = earthquakeInfoService.queryInfoWithLine(mapParameter).get(0); + GlobalCoordinates source = new GlobalCoordinates(latitude, longitude); + GlobalCoordinates target = new GlobalCoordinates(earthquakeInfo.getLatitude(), earthquakeInfo.getLongitude()); + GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.WGS84, source, target); + Double meter = geoCurve.getEllipsoidalDistance(); + Double dividingLine=105.1; + if(earthquakeInfo.getLongitude()