Browse Source

feat: AirAreaUtils - areaUtils merge

feature/change-airspace
지대한 2 months ago
parent
commit
63df42d875
  1. 30
      http/server/server.http
  2. 5
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  3. 35
      pav-server/src/main/java/com/palnet/comn/utils/AirAreaUtils.java

30
http/server/server.http

@ -7,10 +7,10 @@
// } // }
// dev-gmp-admin // dev-gmp-admin
const loginInfo = { // const loginInfo = {
userId: "gmp-admin", // userId: "gmp-admin",
userPswd: "palnet5909!" // userPswd: "palnet5909!"
} // }
// prod-root // prod-root
// const loginInfo = { // const loginInfo = {
@ -37,10 +37,10 @@
// } // }
// 김항소-관제과 // 김항소-관제과
// const loginInfo = { const loginInfo = {
// userId: "GMPATC2", userId: "GMPATC2",
// userPswd: "GMPATC12!@" userPswd: "GMPATC12!@"
// } }
request.variables.set("loginInfo", JSON.stringify(loginInfo)) request.variables.set("loginInfo", JSON.stringify(loginInfo))
@ -63,9 +63,21 @@ GET {{appHost}}/api/acnt/jwt/profile/{{cstmrSno}}
Authorization: {{accessToken}} Authorization: {{accessToken}}
### dos(드론원스톱) 목록 조회 ### dos(드론원스톱) 목록 조회
GET {{appHost}}/api/bas/dos/plan?searchStDt=2024-06-29&searchEndDt=2024-06-29 GET {{appHost}}/api/bas/dos/plan?searchStDt=2024-06-14&searchEndDt=2024-06-15
Authorization: {{accessToken}} Authorization: {{accessToken}}
> {%
const respData = response.body;
console.log('plan count: ', respData.length);
let cnt = 0;
respData.forEach(plan => {
cnt += plan.areaList.length;
})
console.log('area count: ', cnt);
%}
### dos(드론원스톱) 목록 수정 ### dos(드론원스톱) 목록 수정
PUT {{appHost}}/api/bas/dos/plan PUT {{appHost}}/api/bas/dos/plan
Content-Type: application/json Content-Type: application/json

5
pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java

@ -152,7 +152,7 @@ public class BasDosService {
Coordinate centerPoint = new Coordinate(area.getLon(), area.getLat()); Coordinate centerPoint = new Coordinate(area.getLon(), area.getLat());
if("DF0002".equals(cptAuthCode)) { if("DF0002".equals(cptAuthCode)) {
// 관제과(9.3km) // 관제과(9.3km)
AirspaceUtils airspaceUtils = AirspaceUtils.getInstance(); AirspaceUtils airspaceUtils = AirspaceUtils.getInstance();
List<AirspaceUtils.FeatureInfo> airspaces = airspaceUtils.getAirspaces(AirspaceUtils.AirspaceType.GIMPO); List<AirspaceUtils.FeatureInfo> airspaces = airspaceUtils.getAirspaces(AirspaceUtils.AirspaceType.GIMPO);
GeometryFactory geometryFactory = new GeometryFactory(); GeometryFactory geometryFactory = new GeometryFactory();
Point point = geometryFactory.createPoint(centerPoint); Point point = geometryFactory.createPoint(centerPoint);
@ -162,7 +162,7 @@ public class BasDosService {
}); });
if(!isContain) continue; if(!isContain) continue;
}else if("DF0002-1".equals(cptAuthCode)) { }else if("DF0002-1".equals(cptAuthCode)) {
// TODO 운항과(김항소 관리 전역) // TODO 운항과(김항소 관리 전역 + 김포공항 9.3km)
// if(boundary == null) { // if(boundary == null) {
// boundary = comnCoordinateService.getDeptGeometry("F0002"); // boundary = comnCoordinateService.getDeptGeometry("F0002");
// } // }
@ -874,5 +874,4 @@ public class BasDosService {
return null; return null;
} }
} }
} }

35
pav-server/src/main/java/com/palnet/comn/utils/AirAreaUtils.java

@ -15,6 +15,7 @@ import org.json.simple.parser.JSONParser;
import org.locationtech.jts.geom.*; import org.locationtech.jts.geom.*;
import org.locationtech.jts.operation.buffer.BufferOp; import org.locationtech.jts.operation.buffer.BufferOp;
import org.locationtech.jts.operation.buffer.BufferParameters; import org.locationtech.jts.operation.buffer.BufferParameters;
import org.locationtech.jts.util.GeometricShapeFactory;
import org.locationtech.proj4j.BasicCoordinateTransform; import org.locationtech.proj4j.BasicCoordinateTransform;
import org.locationtech.proj4j.CRSFactory; import org.locationtech.proj4j.CRSFactory;
import org.locationtech.proj4j.ProjCoordinate; import org.locationtech.proj4j.ProjCoordinate;
@ -664,6 +665,7 @@ public class AirAreaUtils {
// ---------------------- AreaUtils ---------------------- // ---------------------- AreaUtils ----------------------
// TODO 버퍼 생성시 임의로 좌표변환을 해야만 하는지 확인 ex) espg:4326 -> espg:5181 -> espg:4326
/** /**
* 좌표계 변환 * 좌표계 변환
* *
@ -723,6 +725,39 @@ public class AirAreaUtils {
return new ArrayList<>(Arrays.asList(coords)); return new ArrayList<>(Arrays.asList(coords));
} }
// TODO 곡률로 구성된 원 생성방법 확인(타원이 아닌)
/**
* 타원 생성
*
* @param CircleCoord
* @param BufferZone
* @return
*/
public List<Coordinate> createCircle(Coordinate CircleCoord, double BufferZone) {
GeometricShapeFactory shapeFactory = new GeometricShapeFactory();
double lng = CircleCoord.x;
double lat = CircleCoord.y;
double diameterInMeters = BufferZone;
shapeFactory.setCentre(new Coordinate(lng , lat));
shapeFactory.setHeight((diameterInMeters * 2) / 111320d);
shapeFactory.setWidth((diameterInMeters * 2) / (40075000 * Math.cos(Math.toRadians(lat)) / 360));
shapeFactory.setNumPoints(64);
final Polygon circle = shapeFactory.createCircle();
circle.setSRID(4326);
Geometry geometry = geometryFactory.createGeometry(circle);
Coordinate[] coords = geometry.getCoordinates();
List<Coordinate> coordList = new ArrayList<>();
coordList.addAll(Arrays.asList(coords));
return coordList;
}
public static void main(String[] args) { public static void main(String[] args) {
AirAreaUtils utils = AirAreaUtils.getInstance(); AirAreaUtils utils = AirAreaUtils.getInstance();
log.info("utils: {}", utils); log.info("utils: {}", utils);

Loading…
Cancel
Save