lkd9125
1 year ago
20 changed files with 48650 additions and 14956 deletions
@ -0,0 +1,109 @@
|
||||
package com.palnet.biz.api.bas.flight.template.service; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileOutputStream; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.io.StringReader; |
||||
import java.nio.charset.Charset; |
||||
import java.nio.file.Files; |
||||
import java.nio.file.Paths; |
||||
import java.time.Instant; |
||||
import java.util.Map; |
||||
import java.util.Map.Entry; |
||||
|
||||
import javax.transaction.Transactional; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.beans.factory.annotation.Value; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
||||
import com.palnet.biz.api.bas.flight.template.vo.LaancPdfVO; |
||||
import com.palnet.biz.jpa.entity.ComFileBas; |
||||
import com.palnet.biz.jpa.repository.com.ComFileBasRepository; |
||||
import com.palnet.comn.utils.InstantUtils; |
||||
import com.palnet.comn.utils.PdfUtils; |
||||
|
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
@Service |
||||
@Slf4j |
||||
public class TemplateService { |
||||
|
||||
@Autowired |
||||
private PdfUtils pdfUtils; |
||||
|
||||
@Autowired |
||||
private JwtTokenUtil jwtTokenUtil; |
||||
|
||||
@Autowired |
||||
private ComFileBasRepository comFileBasRepository; |
||||
|
||||
@Value("${base-url}") |
||||
private String BASE_PATH; |
||||
|
||||
private final String FILE_EXTENSION = ".pdf"; |
||||
|
||||
/** |
||||
* 파일명 만들기, 앞에 기본으로 금일 날짜있음 |
||||
* [예시] 20230102_[추가파라미터] |
||||
* @param etcName |
||||
* @return |
||||
*/ |
||||
private String getLaancSaveName(String ...etcName){ |
||||
|
||||
String date = InstantUtils.toDateString(Instant.now()).replace("-", ""); |
||||
|
||||
StringBuilder result = new StringBuilder(); |
||||
result.append(date); |
||||
|
||||
for(String name : etcName){ |
||||
result.append("-") |
||||
.append(name); |
||||
} |
||||
|
||||
result.append(this.FILE_EXTENSION); |
||||
|
||||
return result.toString(); |
||||
} |
||||
|
||||
/** |
||||
* PDF 생성 |
||||
* @param vo |
||||
* @return |
||||
*/ |
||||
public ComFileBas makeLaancPdf(LaancPdfVO vo){ |
||||
|
||||
String airUser = vo.getUserName(); |
||||
String etc = String.valueOf(System.currentTimeMillis()); // 동명이인 방지
|
||||
String fileName = getLaancSaveName(airUser, etc); |
||||
|
||||
String htmlContent = pdfUtils.getHtmlToString(vo); |
||||
ComFileBas comFileBas = pdfUtils.generatePDF(htmlContent, fileName); |
||||
|
||||
String userId = jwtTokenUtil.getUserIdByToken(); |
||||
comFileBas.setCreateUserId(userId); |
||||
|
||||
return comFileBas; |
||||
} |
||||
|
||||
|
||||
|
||||
/** |
||||
* DB 인서트, 최신데이터 가져온 후 Group NO 1추가함 |
||||
* @param comFileBas |
||||
*/ |
||||
@Transactional |
||||
public void save(ComFileBas comFileBas){ |
||||
|
||||
// DB Insert
|
||||
ComFileBas lastComFileBas = comFileBasRepository.findFirstByOrderByFileSnoDesc(); |
||||
int fileGroupNo = (lastComFileBas == null) ? 1 : lastComFileBas.getFileGroupNo() + 1; |
||||
|
||||
comFileBas.setFileGroupNo(fileGroupNo); |
||||
|
||||
comFileBasRepository.save(comFileBas); |
||||
} |
||||
|
||||
} |
@ -1,4 +1,4 @@
|
||||
package com.palnet.biz.api.bas.flight.dto; |
||||
package com.palnet.biz.api.bas.flight.template.vo; |
||||
|
||||
import java.util.Map; |
||||
|
@ -0,0 +1,26 @@
|
||||
package com.palnet.biz.api.external.model; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
/** |
||||
* packageName : com.palnet.biz.api.external.model |
||||
* fileName : PilotValidRq |
||||
* author : dhji |
||||
* date : 2023-09-21(021) |
||||
* description : |
||||
* =========================================================== |
||||
* DATE AUTHOR NOTE |
||||
* ----------------------------------------------------------- |
||||
* 2023-09-21(021) dhji 최초 생성 |
||||
*/ |
||||
@Data |
||||
@Builder |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
public class PilotValidRq { |
||||
private String pilotci; // 조종사 ci - 본인인증
|
||||
private String declarationnum; // 기체신고번호
|
||||
} |
@ -0,0 +1,30 @@
|
||||
package com.palnet.biz.api.external.model; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
/** |
||||
* packageName : com.palnet.biz.api.external.model |
||||
* fileName : PilotValidRq |
||||
* author : dhji |
||||
* date : 2023-09-21(021) |
||||
* description : |
||||
* =========================================================== |
||||
* DATE AUTHOR NOTE |
||||
* ----------------------------------------------------------- |
||||
* 2023-09-21(021) dhji 최초 생성 |
||||
*/ |
||||
@Data |
||||
@Builder |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
public class PilotValidRs { |
||||
private String rspCode; // 결과코드
|
||||
private String rspMessage; // 결과메시지
|
||||
private String pilotcredentialyn; // 조종사자격증명여부
|
||||
private String arcrftinsuranceyn; // 기체보험가입여부
|
||||
private String arcrftdeclaration; // 기체신고여부
|
||||
private String corpregyn; // 사업자유무
|
||||
} |
@ -0,0 +1,41 @@
|
||||
package com.palnet.biz.api.external.service; |
||||
|
||||
import com.palnet.biz.api.external.model.PilotValidRq; |
||||
import com.palnet.biz.api.external.model.PilotValidRs; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* packageName : com.palnet.biz.api.external.service |
||||
* fileName : TsService |
||||
* author : dhji |
||||
* date : 2023-09-21(021) |
||||
* description : |
||||
* =========================================================== |
||||
* DATE AUTHOR NOTE |
||||
* ----------------------------------------------------------- |
||||
* 2023-09-21(021) dhji 최초 생성 |
||||
*/ |
||||
@Slf4j |
||||
@RequiredArgsConstructor |
||||
@Service |
||||
public class TsService { |
||||
|
||||
public PilotValidRs callPilotValid(PilotValidRq rq) { |
||||
// if(rq.getPilotci() == null || rq.getDeclarationnum() == null) {
|
||||
// return null;
|
||||
// }
|
||||
// TODO: call pilot valid api
|
||||
|
||||
// RS 임시코드 - 추후 조건에 따른 TRUE/FALSE 처리 필요
|
||||
PilotValidRs pilotValidRs = new PilotValidRs(); |
||||
pilotValidRs.setRspCode("200"); |
||||
pilotValidRs.setRspMessage("success"); |
||||
pilotValidRs.setPilotcredentialyn("Y"); |
||||
pilotValidRs.setArcrftinsuranceyn("Y"); |
||||
pilotValidRs.setArcrftdeclaration("Y"); |
||||
pilotValidRs.setCorpregyn("Y"); |
||||
return pilotValidRs; |
||||
} |
||||
} |
@ -0,0 +1,456 @@
|
||||
package com.palnet.comn.utils; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.geotools.geojson.feature.FeatureJSON; |
||||
import org.geotools.geojson.geom.GeometryJSON; |
||||
import org.json.simple.JSONArray; |
||||
import org.json.simple.JSONObject; |
||||
import org.json.simple.parser.JSONParser; |
||||
import org.locationtech.jts.geom.*; |
||||
import org.opengis.feature.simple.SimpleFeature; |
||||
import org.springframework.core.io.ClassPathResource; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.IOException; |
||||
import java.io.InputStreamReader; |
||||
import java.math.BigDecimal; |
||||
import java.nio.charset.StandardCharsets; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* packageName : com.palnet.comn.utils |
||||
* fileName : AirspaceUtils |
||||
* author : dhji |
||||
* date : 2023-09-20(020) |
||||
* description : |
||||
* =========================================================== |
||||
* DATE AUTHOR NOTE |
||||
* ----------------------------------------------------------- |
||||
* 2023-09-20(020) dhji 최초 생성 |
||||
*/ |
||||
@Slf4j |
||||
public class AirspaceUtils { |
||||
|
||||
private final String CLASS_PATH = "air/elev2d"; |
||||
private final GeometryFactory geometryFactory = new GeometryFactory(); |
||||
private List<FeatureInfo> airspaces; |
||||
|
||||
|
||||
private AirspaceUtils() { |
||||
log.info(">>> AirspaceUtils init..."); |
||||
// 초기화
|
||||
this.getResourceAirspace(); |
||||
} |
||||
|
||||
public static AirspaceUtils getInstance() { |
||||
return LazyHolder.INSTANCE; |
||||
} |
||||
|
||||
private static class LazyHolder { |
||||
private static final AirspaceUtils INSTANCE = new AirspaceUtils(); |
||||
} |
||||
|
||||
// 공역 중복 검사
|
||||
public boolean isDuplicatedAirspace(FeatureInfo target) { |
||||
if (this.airspaces == null || this.airspaces.isEmpty()) return true; |
||||
Integer targetHighElev = target.getHighElev(); |
||||
if (targetHighElev == null) targetHighElev = 0; |
||||
Geometry targetGeometry = target.getGeometry(); |
||||
|
||||
for (FeatureInfo airspace : this.airspaces) { |
||||
Integer airspaceHighElev = airspace.getHighElev(); |
||||
Geometry airspaceGeometry = airspace.getGeometry(); |
||||
|
||||
// 임시로 0~최대고도 기준으로 검증
|
||||
if(airspaceHighElev <= targetHighElev) { |
||||
if (airspaceGeometry.intersects(targetGeometry)) { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public Geometry createGeometryByCoordinate(List<Coordinate> target) { |
||||
return this.createGeometryByCoordinate(target, "Polygon"); |
||||
} |
||||
|
||||
public Geometry createGeometryByCoordinate(List<Coordinate> target, String type) { |
||||
Geometry geometry = null; |
||||
if ("Polygon".equals(type)) { |
||||
geometry = this.geometryFactory.createPolygon(target.toArray(new Coordinate[0])); |
||||
} else if ("LineString".equals(type)) { |
||||
geometry = this.geometryFactory.createLineString(target.toArray(new Coordinate[0])); |
||||
} else if ("Point".equals(type)) { |
||||
geometry = this.geometryFactory.createPoint(target.get(0)); |
||||
} |
||||
return geometry; |
||||
} |
||||
|
||||
// get geometry
|
||||
private List<Geometry> getAirspaceGeometry() { |
||||
return this.airspaces.stream().map(FeatureInfo::getGeometry).collect(Collectors.toList()); |
||||
} |
||||
|
||||
// 파일에서 공역 데이터 가져와서 geometry로 변환 - 초기화.
|
||||
private void getResourceAirspace() { |
||||
ClassPathResource resource = new ClassPathResource(CLASS_PATH); |
||||
log.debug(">>> {}", resource); |
||||
List<File> geoJsonFiles = new ArrayList<>(); |
||||
try { |
||||
File folder = resource.getFile(); |
||||
log.debug(">>> {}", folder); |
||||
File[] files = folder.listFiles(); |
||||
for (File file : files) { |
||||
if (file.isFile() && file.getName().endsWith("elev.json")) { |
||||
log.debug(">>> {}", file.getName()); |
||||
geoJsonFiles.add(file); |
||||
} |
||||
} |
||||
} catch (IOException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
|
||||
List<FeatureInfo> featureInfos = new ArrayList<>(); |
||||
for (File file : geoJsonFiles) { |
||||
log.debug("============ {} ===================", file.getName()); |
||||
try (InputStreamReader isr = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)) { |
||||
JSONParser jsonParser = new JSONParser(); |
||||
JSONObject jsonObject = (JSONObject) jsonParser.parse(isr); |
||||
List<FeatureInfo> convertFeatureInfos = convertGeoJsonToGeometry(jsonObject); |
||||
featureInfos.addAll(convertFeatureInfos); |
||||
} catch (Exception e) { |
||||
log.error("ERROR : ", e); |
||||
featureInfos = null; |
||||
} |
||||
if (featureInfos != null && featureInfos.isEmpty()) { |
||||
featureInfos = null; |
||||
} |
||||
} |
||||
|
||||
this.airspaces = featureInfos; |
||||
} |
||||
|
||||
private List<FeatureInfo> convertGeoJsonToGeometry(JSONObject jsonObject) { |
||||
List<FeatureInfo> featureInfos = new ArrayList<>(); |
||||
String type = (String) jsonObject.get("type"); |
||||
if ("FeatureCollection".equals(type)) { |
||||
List<JSONObject> features = (List<JSONObject>) jsonObject.get("features"); |
||||
// log.debug(">>> features size : {}", features.size());
|
||||
for (JSONObject feature : features) { |
||||
JSONObject geometryObject = (JSONObject) feature.get("geometry"); |
||||
String geometryType = String.valueOf(geometryObject.get("type")); |
||||
|
||||
List<JSONObject> coordinatesObject = (List<JSONObject>) geometryObject.get("coordinates"); |
||||
if ("Polygon".equals(geometryType)) { |
||||
List<JSONArray> innerObject = (List<JSONArray>) coordinatesObject.get(0); |
||||
JSONArray firstCoords = innerObject.get(0); |
||||
JSONArray lastCoords = innerObject.get(innerObject.size() - 1); |
||||
BigDecimal ff = new BigDecimal(String.valueOf(firstCoords.get(0))); |
||||
BigDecimal fl = new BigDecimal(String.valueOf(firstCoords.get(1))); |
||||
BigDecimal lf = new BigDecimal(String.valueOf(lastCoords.get(0))); |
||||
BigDecimal ll = new BigDecimal(String.valueOf(lastCoords.get(1))); |
||||
if (!ff.equals(lf) || !fl.equals(ll)) { |
||||
JSONObject propertiesObject = (JSONObject) feature.get("properties"); |
||||
// String nameObject = String.valueOf(propertiesObject.get("name"));
|
||||
// String descriptionObject = String.valueOf(propertiesObject.get("description"));
|
||||
// log.info("coords first and last coords not eqauls : name/descriion = {}/{}", nameObject, descriptionObject);
|
||||
innerObject.add(firstCoords); |
||||
} |
||||
} |
||||
|
||||
try { |
||||
FeatureJSON featureJSON = new FeatureJSON(); |
||||
SimpleFeature simpleFeature = null; |
||||
simpleFeature = featureJSON.readFeature(feature.toJSONString()); |
||||
Boolean use = Boolean.valueOf(String.valueOf(simpleFeature.getAttribute("use"))); |
||||
if (use) { |
||||
String name = String.valueOf(simpleFeature.getAttribute("name")); |
||||
String description = String.valueOf(simpleFeature.getAttribute("description")); |
||||
Integer lowElev = Integer.parseInt(String.valueOf(simpleFeature.getAttribute("lowElev"))); |
||||
Integer highElev = Integer.parseInt(String.valueOf(simpleFeature.getAttribute("highElev"))); |
||||
Geometry geometry = (Geometry) simpleFeature.getDefaultGeometry(); |
||||
// log.debug(">>> name, description, use, lowElev, highElev : {}, {}, {}, {}, {}", name, description, use, lowElev, highElev);
|
||||
FeatureInfo info = new FeatureInfo(name, description, lowElev, highElev, geometry); |
||||
featureInfos.add(info); |
||||
} |
||||
} catch (IOException e) { |
||||
log.error("geometry json read error : {}", e.getMessage()); |
||||
} |
||||
} |
||||
} else if ("Feature".equals(type)) { |
||||
FeatureJSON featureJSON = new FeatureJSON(); |
||||
try { |
||||
SimpleFeature simpleFeature = featureJSON.readFeature(jsonObject.toJSONString()); |
||||
Boolean use = Boolean.valueOf(String.valueOf(simpleFeature.getAttribute("use"))); |
||||
if (use) { |
||||
String name = String.valueOf(simpleFeature.getAttribute("name")); |
||||
String description = String.valueOf(simpleFeature.getAttribute("description")); |
||||
Integer lowElev = Integer.parseInt(String.valueOf(simpleFeature.getAttribute("lowElev"))); |
||||
Integer highElev = Integer.parseInt(String.valueOf(simpleFeature.getAttribute("highElev"))); |
||||
Geometry geometry = (Geometry) simpleFeature.getDefaultGeometry(); |
||||
FeatureInfo info = new FeatureInfo(name, description, lowElev, highElev, geometry); |
||||
featureInfos.add(info); |
||||
} |
||||
} catch (IOException e) { |
||||
log.error("geometry json read error : {}", e.getMessage()); |
||||
} |
||||
|
||||
} else { |
||||
GeometryJSON geoJson = new GeometryJSON(); |
||||
try { |
||||
Geometry geometry = geoJson.read(jsonObject.toJSONString()); |
||||
FeatureInfo info = new FeatureInfo(null, null, null, null, geometry); |
||||
} catch (IOException e) { |
||||
log.error("geometry json read error : {}", e.getMessage()); |
||||
} |
||||
} |
||||
return featureInfos; |
||||
} |
||||
|
||||
@Data |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
public static class FeatureInfo { |
||||
private String name; |
||||
private String description; |
||||
private Integer lowElev; |
||||
private Integer highElev; |
||||
private Geometry geometry; |
||||
} |
||||
|
||||
public static void main(String[] args) { |
||||
AirspaceUtils airspaceUtils = AirspaceUtils.getInstance(); |
||||
|
||||
GeometryFactory geometryFactory = new GeometryFactory(); |
||||
/* |
||||
126.6186219,37.4260888 |
||||
126.7662507,37.4473521 |
||||
126.7223054,37.3578964 |
||||
126.6186219,37.4260888 |
||||
|
||||
126.6828233,37.4553499 |
||||
126.7456514,37.5082038 |
||||
126.7796403,37.4414491 |
||||
126.6828233,37.4553499 |
||||
|
||||
126.6750825,37.5134229 |
||||
126.7804826,37.5168269 |
||||
126.7679513,37.4853679 |
||||
126.6750825,37.5134229 |
||||
|
||||
126.7679513,37.4853679 |
||||
126.8074335,37.5572547 |
||||
126.9097436,37.4477632 |
||||
126.7679513,37.4853679 |
||||
|
||||
*/ |
||||
|
||||
log.info("=== 김포 정상 ==="); |
||||
Coordinate[] polygonCoordinates6 = new Coordinate[]{ |
||||
new Coordinate(126.6186219,37.4260888), |
||||
new Coordinate(126.7662507,37.4473521), |
||||
new Coordinate(126.7223054,37.3578964), |
||||
new Coordinate(126.6186219,37.4260888) |
||||
}; |
||||
LinearRing linearRing6 = geometryFactory.createLinearRing(polygonCoordinates6); |
||||
Polygon polygon6 = geometryFactory.createPolygon(linearRing6); |
||||
FeatureInfo target6 = new FeatureInfo(); |
||||
target6.setHighElev(0); |
||||
target6.setLowElev(0); |
||||
target6.setGeometry(polygon6); |
||||
boolean duplicatedAirspace6 = airspaceUtils.isDuplicatedAirspace(target6); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace6); |
||||
|
||||
log.info("=== 김포 120m 걸침 - 100 ==="); |
||||
Coordinate[] polygonCoordinates7 = new Coordinate[]{ |
||||
new Coordinate(126.6828233,37.4553499), |
||||
new Coordinate(126.7456514,37.5082038), |
||||
new Coordinate(126.7796403,37.4414491), |
||||
new Coordinate(126.6828233,37.4553499) |
||||
}; |
||||
LinearRing linearRing7 = geometryFactory.createLinearRing(polygonCoordinates7); |
||||
Polygon polygon7 = geometryFactory.createPolygon(linearRing7); |
||||
FeatureInfo target7 = new FeatureInfo(); |
||||
target7.setHighElev(100); |
||||
target7.setLowElev(0); |
||||
target7.setGeometry(polygon7); |
||||
boolean duplicatedAirspace7 = airspaceUtils.isDuplicatedAirspace(target7); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace7); |
||||
|
||||
log.info("=== 김포 120m 걸침 - 150 ==="); |
||||
Coordinate[] polygonCoordinates8 = new Coordinate[]{ |
||||
new Coordinate(126.6828233,37.4553499), |
||||
new Coordinate(126.7456514,37.5082038), |
||||
new Coordinate(126.7796403,37.4414491), |
||||
new Coordinate(126.6828233,37.4553499) |
||||
}; |
||||
LinearRing linearRing8 = geometryFactory.createLinearRing(polygonCoordinates8); |
||||
Polygon polygon8 = geometryFactory.createPolygon(linearRing8); |
||||
FeatureInfo target8 = new FeatureInfo(); |
||||
target8.setHighElev(150); |
||||
target8.setLowElev(0); |
||||
target8.setGeometry(polygon8); |
||||
boolean duplicatedAirspace8 = airspaceUtils.isDuplicatedAirspace(target8); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace8); |
||||
|
||||
log.info("=== 김포 120m 걸침 - 120 ==="); |
||||
Coordinate[] polygonCoordinates9 = new Coordinate[]{ |
||||
new Coordinate(126.6828233,37.4553499), |
||||
new Coordinate(126.7456514,37.5082038), |
||||
new Coordinate(126.7796403,37.4414491), |
||||
new Coordinate(126.6828233,37.4553499) |
||||
}; |
||||
LinearRing linearRing9 = geometryFactory.createLinearRing(polygonCoordinates9); |
||||
Polygon polygon9 = geometryFactory.createPolygon(linearRing9); |
||||
FeatureInfo target9 = new FeatureInfo(); |
||||
target9.setHighElev(120); |
||||
target9.setLowElev(0); |
||||
target9.setGeometry(polygon9); |
||||
boolean duplicatedAirspace9 = airspaceUtils.isDuplicatedAirspace(target9); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace9); |
||||
|
||||
log.info("=== 김포 40m 걸침 - 20 ==="); |
||||
Coordinate[] polygonCoordinates10 = new Coordinate[]{ |
||||
new Coordinate(126.6750825,37.5134229), |
||||
new Coordinate(126.7804826,37.5168269), |
||||
new Coordinate(126.7679513,37.4853679), |
||||
new Coordinate(126.6750825,37.5134229) |
||||
}; |
||||
LinearRing linearRing10 = geometryFactory.createLinearRing(polygonCoordinates10); |
||||
Polygon polygon10 = geometryFactory.createPolygon(linearRing10); |
||||
FeatureInfo target10 = new FeatureInfo(); |
||||
target10.setHighElev(20); |
||||
target10.setLowElev(0); |
||||
target10.setGeometry(polygon10); |
||||
boolean duplicatedAirspace10 = airspaceUtils.isDuplicatedAirspace(target10); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace10); |
||||
|
||||
log.info("=== 김포 40m 걸침 - 100 ==="); |
||||
Coordinate[] polygonCoordinates11 = new Coordinate[]{ |
||||
new Coordinate(126.6750825,37.5134229), |
||||
new Coordinate(126.7804826,37.5168269), |
||||
new Coordinate(126.7679513,37.4853679), |
||||
new Coordinate(126.6750825,37.5134229) |
||||
}; |
||||
LinearRing linearRing11 = geometryFactory.createLinearRing(polygonCoordinates11); |
||||
Polygon polygon11 = geometryFactory.createPolygon(linearRing11); |
||||
FeatureInfo target11 = new FeatureInfo(); |
||||
target11.setHighElev(100); |
||||
target11.setLowElev(0); |
||||
target11.setGeometry(polygon11); |
||||
boolean duplicatedAirspace11 = airspaceUtils.isDuplicatedAirspace(target11); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace11); |
||||
|
||||
log.info("=== 김포 40m 걸침 - 40 ==="); |
||||
Coordinate[] polygonCoordinates12 = new Coordinate[]{ |
||||
new Coordinate(126.6750825,37.5134229), |
||||
new Coordinate(126.7804826,37.5168269), |
||||
new Coordinate(126.7679513,37.4853679), |
||||
new Coordinate(126.6750825,37.5134229) |
||||
}; |
||||
LinearRing linearRing12 = geometryFactory.createLinearRing(polygonCoordinates12); |
||||
Polygon polygon12 = geometryFactory.createPolygon(linearRing12); |
||||
FeatureInfo target12 = new FeatureInfo(); |
||||
target12.setHighElev(40); |
||||
target12.setLowElev(0); |
||||
target12.setGeometry(polygon12); |
||||
boolean duplicatedAirspace12 = airspaceUtils.isDuplicatedAirspace(target12); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace12); |
||||
|
||||
log.info("=== 김포 0 ==="); |
||||
Coordinate[] polygonCoordinates13 = new Coordinate[]{ |
||||
new Coordinate(126.7679513,37.4853679), |
||||
new Coordinate(126.8074335,37.5572547), |
||||
new Coordinate(126.9097436,37.4477632), |
||||
new Coordinate(126.7679513,37.4853679) |
||||
}; |
||||
LinearRing linearRing13 = geometryFactory.createLinearRing(polygonCoordinates13); |
||||
Polygon polygon13 = geometryFactory.createPolygon(linearRing13); |
||||
FeatureInfo target13 = new FeatureInfo(); |
||||
target13.setHighElev(0); |
||||
target13.setLowElev(0); |
||||
target13.setGeometry(polygon13); |
||||
boolean duplicatedAirspace13 = airspaceUtils.isDuplicatedAirspace(target13); |
||||
log.info(">>> duplicatedAirspace : {}", duplicatedAirspace13); |
||||
|
||||
// 김포
|
||||
// log.info("=== 김포 걸침 ===");
|
||||
// Coordinate[] polygonCoordinates = new Coordinate[]{
|
||||
// new Coordinate(126.6932891, 37.4789188),
|
||||
// new Coordinate(126.7343162, 37.4989414),
|
||||
// new Coordinate(126.729853, 37.4676111),
|
||||
// new Coordinate(126.6932891, 37.4789188)
|
||||
// };
|
||||
// LinearRing linearRing = geometryFactory.createLinearRing(polygonCoordinates);
|
||||
// Polygon polygon = geometryFactory.createPolygon(linearRing);
|
||||
// FeatureInfo target = new FeatureInfo();
|
||||
// target.setHighElev(0);
|
||||
// target.setLowElev(0);
|
||||
// target.setGeometry(polygon);
|
||||
// boolean duplicatedAirspace = airspaceUtils.isDuplicatedAirspace(target);
|
||||
// log.info(">>> duplicatedAirspace : {}", duplicatedAirspace);
|
||||
//
|
||||
// // 인천공항
|
||||
// log.info("=== 인천공항 걸침 ===");
|
||||
// Coordinate[] polygonCoordinates2 = new Coordinate[]{
|
||||
// new Coordinate(126.57605, 37.3278721),
|
||||
// new Coordinate(126.4181215, 37.4691545),
|
||||
// new Coordinate(126.6351015, 37.5203648),
|
||||
// new Coordinate(126.57605, 37.3278721)
|
||||
// };
|
||||
// LinearRing linearRing2 = geometryFactory.createLinearRing(polygonCoordinates2);
|
||||
// Polygon polygon2 = geometryFactory.createPolygon(linearRing2);
|
||||
// FeatureInfo target2 = new FeatureInfo();
|
||||
// target2.setHighElev(0);
|
||||
// target2.setLowElev(0);
|
||||
// target2.setGeometry(polygon2);
|
||||
// boolean duplicatedAirspace2 = airspaceUtils.isDuplicatedAirspace(target2);
|
||||
// log.info(">>> duplicatedAirspace : {}", duplicatedAirspace2);
|
||||
//
|
||||
//
|
||||
//
|
||||
// // 정상
|
||||
// log.info("=== 정상(안겹침) ===");
|
||||
// Coordinate[] polygonCoordinates3 = new Coordinate[]{
|
||||
// new Coordinate(126.6879518, 37.4444476),
|
||||
// new Coordinate(126.6179139, 37.3462549),
|
||||
// new Coordinate(126.7820222, 37.3528051),
|
||||
// new Coordinate(126.6879518, 37.4444476)
|
||||
// };
|
||||
// LinearRing linearRing3 = geometryFactory.createLinearRing(polygonCoordinates3);
|
||||
// Polygon polygon3 = geometryFactory.createPolygon(linearRing3);
|
||||
// FeatureInfo target3 = new FeatureInfo();
|
||||
// target3.setHighElev(0);
|
||||
// target3.setLowElev(0);
|
||||
// target3.setGeometry(polygon3);
|
||||
// boolean duplicatedAirspace3 = airspaceUtils.isDuplicatedAirspace(target3);
|
||||
// log.info(">>> duplicatedAirspace : {}", duplicatedAirspace3);
|
||||
//
|
||||
//
|
||||
// // 수원 완전 포함
|
||||
// log.info("=== 수원 포함 ===");
|
||||
// Coordinate[] polygonCoordinates4 = new Coordinate[]{
|
||||
// new Coordinate(126.9475038,37.2212829),
|
||||
// new Coordinate(127.0226914,37.2857752),
|
||||
// new Coordinate(127.0525605,37.192845),
|
||||
// new Coordinate(126.9475038,37.2212829)
|
||||
// };
|
||||
// LinearRing linearRing4 = geometryFactory.createLinearRing(polygonCoordinates4);
|
||||
// Polygon polygon4 = geometryFactory.createPolygon(linearRing4);
|
||||
// FeatureInfo target4 = new FeatureInfo();
|
||||
// target4.setHighElev(0);
|
||||
// target4.setLowElev(0);
|
||||
// target4.setGeometry(polygon4);
|
||||
// boolean duplicatedAirspace4 = airspaceUtils.isDuplicatedAirspace(target4);
|
||||
// log.info(">>> duplicatedAirspace : {}", duplicatedAirspace4);
|
||||
|
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,5 @@
|
||||
{ |
||||
"type": "FeatureCollection", |
||||
"features": [ |
||||
] |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue