Browse Source

feat: air area util - file 읽기

feature/change-airspace
지대한 2 months ago
parent
commit
35e0977832
  1. 215
      pav-server/src/main/java/com/palnet/comn/utils/AirAreaUtils.java
  2. 45
      pav-server/src/main/resources/air/airspace/common/0001_prohibitedArea.json
  3. 258
      pav-server/src/main/resources/air/airspace/common/0002_restrictedArea.json
  4. 45
      pav-server/src/main/resources/air/airspace/common/0003_controlArea.json
  5. 53
      pav-server/src/main/resources/air/airspace/common/0004_aerodromeArea.json
  6. 33
      pav-server/src/main/resources/air/airspace/common/0005_airFieldArea.json
  7. 144
      pav-server/src/main/resources/air/airspace/common/0006_ultraLightVehicleArea.json
  8. 33
      pav-server/src/main/resources/air/airspace/custom/gimpoAirportAirFlatArea.json

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

@ -2,16 +2,29 @@ package com.palnet.comn.utils;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
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.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.opengis.feature.simple.SimpleFeature;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -25,8 +38,8 @@ public class AirAreaUtils {
private final String COMMON_PATH = "common/";
private final String CUSTOM_PATH = "custom/";
private final String SUFFIX_FILE_NAME = "Area.json";
private Map<String, List<FeatureInfo>> airAreaMap;
@Getter
private Map<AirAreaType, List<FeatureInfo>> airAreaMap = null;
private GeometryFactory geometryFactory;
private AirAreaUtils() {
@ -42,10 +55,81 @@ public class AirAreaUtils {
private static final AirAreaUtils INSTANCE = new AirAreaUtils();
}
public int getSize() {
return airAreaMap.size();
}
public List<FeatureInfo> getAirAreaList() {
return getAirAreaList(AirAreaType.ALL);
}
public List<FeatureInfo> getAirAreaList(AirAreaType airAreaType) {
if (airAreaType == null) airAreaType = AirAreaType.ALL;
List<FeatureInfo> featureInfos = null;
if (AirAreaType.ALL == airAreaType) {
featureInfos = airAreaMap.values().stream()
.flatMap(List::stream)
.collect(Collectors.toList());
} else {
featureInfos = airAreaMap.get(airAreaType);
}
if (featureInfos == null) {
log.warn("featureInfos is null");
featureInfos = new ArrayList<>();
}
return featureInfos;
}
// TODO 초기화
private void init() {
airAreaMap = new HashMap<>();
geometryFactory = new GeometryFactory();
// TODO 데이터 로드
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
List<Resource> resources = new ArrayList<>();
try {
resources.addAll(List.of(resolver.getResources("classpath*:" + RESOURCE_BASE_PATH + COMMON_PATH + "*" + SUFFIX_FILE_NAME)));
resources.addAll(List.of(resolver.getResources("classpath*:" + RESOURCE_BASE_PATH + CUSTOM_PATH + "*" + SUFFIX_FILE_NAME)));
} catch (Exception e) {
log.error("Failed to load air area resources", e);
}
if (resources.isEmpty()) {
log.warn("air area resources is empty");
return;
}
for (Resource resource : resources) {
try (InputStream is = resource.getInputStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
List<FeatureInfo> fis = this.convertGeoJsonToFeatureInfo(jsonObject);
if (fis.isEmpty()) {
log.warn("FeatureInfo is empty");
continue;
}
AirAreaType group = fis.get(0).getGroup();
List<FeatureInfo> featureInfos = airAreaMap.get(group);
if (featureInfos == null) {
featureInfos = new ArrayList<>();
}
featureInfos.addAll(fis);
airAreaMap.put(group, featureInfos);
} catch (Exception e) {
log.error("airspace resource read error : {} - {}", resource.getFilename(), e.getStackTrace()[0]);
}
}
}
/**
@ -273,6 +357,109 @@ public class AirAreaUtils {
return geometry;
}
/**
* json to FeatureInfo
*
* @param jsonObject
* @return
*/
private List<FeatureInfo> convertGeoJsonToFeatureInfo(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)) {
innerObject.add(firstCoords);
}
}
try {
FeatureJSON featureJSON = new FeatureJSON();
SimpleFeature simpleFeature = null;
simpleFeature = featureJSON.readFeature(feature.toJSONString());
boolean isUse = Boolean.parseBoolean(String.valueOf(simpleFeature.getAttribute("isUse")));
if (isUse) {
String name = String.valueOf(simpleFeature.getAttribute("name"));
String description = String.valueOf(simpleFeature.getAttribute("description"));
String propType = String.valueOf(simpleFeature.getAttribute("type"));
Double lowElev = Double.parseDouble(String.valueOf(simpleFeature.getAttribute("lowElev")));
Double highElev = Double.parseDouble(String.valueOf(simpleFeature.getAttribute("highElev")));
Geometry geometry = (Geometry) simpleFeature.getDefaultGeometry();
AirAreaType group = AirAreaType.fromCode(String.valueOf(simpleFeature.getAttribute("group")));
if (group == null) group = AirAreaType.COMMON;
FeatureInfo info = FeatureInfo.builder()
.name(name)
.description(description)
.type(propType)
.lowElev(lowElev)
.highElev(highElev)
.geometry(geometry)
.isUse(isUse)
.group(group)
.build();
featureInfos.add(info);
}
} catch (Exception e) {
log.error("geometry json read error : {}", e.getStackTrace()[0]);
}
}
} else if ("Feature".equals(type)) {
FeatureJSON featureJSON = new FeatureJSON();
try {
SimpleFeature simpleFeature = featureJSON.readFeature(jsonObject.toJSONString());
boolean isUse = Boolean.parseBoolean(String.valueOf(simpleFeature.getAttribute("use")));
if (isUse) {
String name = String.valueOf(simpleFeature.getAttribute("name"));
String description = String.valueOf(simpleFeature.getAttribute("description"));
String propType = String.valueOf(simpleFeature.getAttribute("type"));
Double lowElev = Double.parseDouble(String.valueOf(simpleFeature.getAttribute("lowElev")));
Double highElev = Double.parseDouble(String.valueOf(simpleFeature.getAttribute("highElev")));
Geometry geometry = (Geometry) simpleFeature.getDefaultGeometry();
AirAreaType group = AirAreaType.fromCode(String.valueOf(simpleFeature.getAttribute("group")));
if (group == null) group = AirAreaType.COMMON;
FeatureInfo info = FeatureInfo.builder()
.name(name)
.description(description)
.type(propType)
.lowElev(lowElev)
.highElev(highElev)
.geometry(geometry)
.isUse(isUse)
.group(group)
.build();
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 = FeatureInfo.builder()
.geometry(geometry)
.build();
} catch (IOException e) {
log.error("geometry json read error : {}", e.getMessage());
}
}
return featureInfos;
}
@Data
@NoArgsConstructor
@ -286,14 +473,16 @@ public class AirAreaUtils {
private Double highElev;
private boolean isUse;
private Geometry geometry;
private AirAreaType group;
}
/**
* AirAreaType - 모두, 김포
*/
public enum AirAreaType {
ALL("all"),
GIMPO("gimpo");
ALL("ALL"),
COMMON("COMMON"),
GIMPO("GMP");
private final String code;
@ -353,8 +542,8 @@ public class AirAreaUtils {
}
}
// TODO 가장 가까운 거리 반환
// TODO 가장 가까운 거리 반환
public static void main(String[] args) {
@ -370,5 +559,11 @@ public class AirAreaUtils {
List<Integer> list2 = new ArrayList<>();
boolean b2 = list2.stream().anyMatch(i -> i == 3);
log.info("b2:: {}", b2);
Map<AirAreaType, List<FeatureInfo>> airMap = utils.getAirAreaMap();
airMap.forEach((k, v) -> {
log.info("{} - {}", k, v.size());
});
}
}

45
pav-server/src/main/resources/air/airspace/common/0001_prohibitedArea.json

@ -30,7 +30,8 @@
"name": "RK P518W",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3310,7 +3311,8 @@
"name": "RK P518",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3729,7 +3731,8 @@
"name": "RK P518E",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3865,7 +3868,8 @@
"name": "P61A",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4587,7 +4591,8 @@
"name": "P61B",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4723,7 +4728,8 @@
"name": "P62A",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5444,7 +5450,8 @@
"name": "P62B",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5580,7 +5587,8 @@
"name": "P63A",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -6301,7 +6309,8 @@
"name": "P63B",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -6437,7 +6446,8 @@
"name": "P64A",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -7158,7 +7168,8 @@
"name": "P64B",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -7236,7 +7247,8 @@
"name": "P65A",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -7899,7 +7911,8 @@
"name": "P65B",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -8055,7 +8068,8 @@
"name": "RK P73A",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -8162,7 +8176,8 @@
"name": "D4006",
"description": "",
"type": "0001",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}

258
pav-server/src/main/resources/air/airspace/common/0002_restrictedArea.json

@ -19,7 +19,8 @@
"name": "R1",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -43,7 +44,8 @@
"name": "R10",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -69,7 +71,8 @@
"name": "R14",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -133,7 +136,8 @@
"name": "R17",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -197,7 +201,8 @@
"name": "R19",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -261,7 +266,8 @@
"name": "R20",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -325,7 +331,8 @@
"name": "R21",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -389,7 +396,8 @@
"name": "R35",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -414,7 +422,8 @@
"name": "R72",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -438,7 +447,8 @@
"name": "R74",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -472,7 +482,8 @@
"name": "R75",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -641,7 +652,8 @@
"name": "R77",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -664,7 +676,8 @@
"name": "R80",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -728,7 +741,8 @@
"name": "R81",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -751,7 +765,8 @@
"name": "R84",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -774,7 +789,8 @@
"name": "R88",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -797,7 +813,8 @@
"name": "R89",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -822,7 +839,8 @@
"name": "R90A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -846,7 +864,8 @@
"name": "R90B",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -869,7 +888,8 @@
"name": "R97A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -896,7 +916,8 @@
"name": "R97B",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -920,7 +941,8 @@
"name": "R97C",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -944,7 +966,8 @@
"name": "R97D",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -967,7 +990,8 @@
"name": "R97E",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -990,7 +1014,8 @@
"name": "R97F",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1015,7 +1040,8 @@
"name": "R99",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1079,7 +1105,8 @@
"name": "R100",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1143,7 +1170,8 @@
"name": "R104",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1207,7 +1235,8 @@
"name": "R105",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1230,7 +1259,8 @@
"name": "R107",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1253,7 +1283,8 @@
"name": "R108A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1276,7 +1307,8 @@
"name": "R108B",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1300,7 +1332,8 @@
"name": "R108C",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1323,7 +1356,8 @@
"name": "R108D",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1347,7 +1381,8 @@
"name": "R108E",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1370,7 +1405,8 @@
"name": "R108F",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1393,7 +1429,8 @@
"name": "R110",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1417,7 +1454,8 @@
"name": "R111",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1442,7 +1480,8 @@
"name": "R114",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1464,7 +1503,8 @@
"name": "R115",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1528,7 +1568,8 @@
"name": "R116",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1592,7 +1633,8 @@
"name": "R117",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1615,7 +1657,8 @@
"name": "R118",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1639,7 +1682,8 @@
"name": "R119",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1663,7 +1707,8 @@
"name": "R120",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1688,7 +1733,8 @@
"name": "R121",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1711,7 +1757,8 @@
"name": "R122",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1734,7 +1781,8 @@
"name": "R123",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1757,7 +1805,8 @@
"name": "R124",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1821,7 +1870,8 @@
"name": "R125",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1844,7 +1894,8 @@
"name": "R126",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1908,7 +1959,8 @@
"name": "R127",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1930,7 +1982,8 @@
"name": "R128",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1954,7 +2007,8 @@
"name": "R129",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1979,7 +2033,8 @@
"name": "R131",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2002,7 +2057,8 @@
"name": "R132",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2066,7 +2122,8 @@
"name": "R133",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2099,7 +2156,8 @@
"name": "R134",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2122,7 +2180,8 @@
"name": "R135",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2145,7 +2204,8 @@
"name": "R136",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2168,7 +2228,8 @@
"name": "R137",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2228,7 +2289,8 @@
"name": "R138",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2288,7 +2350,8 @@
"name": "R139",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2540,7 +2603,8 @@
"name": "R140",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2563,7 +2627,8 @@
"name": "R141",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2699,7 +2764,8 @@
"name": "R142A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3009,7 +3075,8 @@
"name": "R142B",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3319,7 +3386,8 @@
"name": "R142C",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3342,7 +3410,8 @@
"name": "R143",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3594,7 +3663,8 @@
"name": "R144",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3904,7 +3974,8 @@
"name": "R145",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4214,7 +4285,8 @@
"name": "R146",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4583,7 +4655,8 @@
"name": "R147",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4748,7 +4821,8 @@
"name": "R148A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5000,7 +5074,8 @@
"name": "R148B",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5310,7 +5385,8 @@
"name": "R149",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5333,7 +5409,8 @@
"name": "R150",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5356,7 +5433,8 @@
"name": "R151A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5492,7 +5570,8 @@
"name": "R152",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5515,7 +5594,8 @@
"name": "R153",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5538,7 +5618,8 @@
"name": "R154",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5645,7 +5726,8 @@
"name": "R155A",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -5992,7 +6074,8 @@
"name": "R155B",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -6017,7 +6100,8 @@
"name": "R156",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -6077,7 +6161,8 @@
"name": "R157",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -6137,7 +6222,8 @@
"name": "R158",
"description": "",
"type": "0002",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}

45
pav-server/src/main/resources/air/airspace/common/0003_controlArea.json

@ -306,7 +306,8 @@
"name": "포항경주공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -617,7 +618,8 @@
"name": "사천공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -681,7 +683,8 @@
"name": "광주공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -739,7 +742,8 @@
"name": "양양국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -938,7 +942,8 @@
"name": "제주국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -994,7 +999,8 @@
"name": "청주국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1082,7 +1088,8 @@
"name": "무안국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1141,7 +1148,8 @@
"name": "군산공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1229,7 +1237,8 @@
"name": "여수공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1315,7 +1324,8 @@
"name": "김해(부산)국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1403,7 +1413,8 @@
"name": "울산공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1491,7 +1502,8 @@
"name": "대구국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1573,7 +1585,8 @@
"name": "원주(횡성)공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1883,7 +1896,8 @@
"name": "인천국제공항",
"description": "",
"type": "0003",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3069,7 +3083,8 @@
"name": "김포국제공항",
"description": "",
"type": "0003",
"use": false,
"isUse": false,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}

53
pav-server/src/main/resources/air/airspace/common/0004_aerodromeArea.json

@ -306,7 +306,8 @@
"name": "서울(성남)공항",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -370,10 +371,8 @@
"name": "진해비행장",
"description": "",
"type": "0004",
"use": true,
"lowElev": "0",
"highElev": "0",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -437,7 +436,8 @@
"name": "목포공항",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -501,7 +501,8 @@
"name": "정석비행장",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -565,7 +566,8 @@
"name": "이천비행장",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -629,7 +631,8 @@
"name": "수원 공군기지",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -693,7 +696,8 @@
"name": "오산 공군기지",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -704,7 +708,6 @@
"type": "Polygon",
"coordinates": [
[
[
[128.7084009549999, 38.14547006999993],
[128.70841066899993, 38.14366885499993],
[128.70837114099993, 38.14186789399998],
@ -1000,14 +1003,14 @@
[128.70834199799992, 38.14727069799994],
[128.7084009549999, 38.14547006999993]
]
]
]
},
"properties": {
"name": "속초공항",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1071,7 +1074,8 @@
"name": "평택 캠프 험프리스",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1136,7 +1140,8 @@
"name": "예천공항",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1200,7 +1205,8 @@
"name": "중원(충주)비행장",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1441,7 +1447,8 @@
"name": "울진비행훈련원",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1505,7 +1512,8 @@
"name": "강릉공항",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1569,7 +1577,8 @@
"name": "서산공항",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1633,7 +1642,8 @@
"name": "성무비행장",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1697,7 +1707,8 @@
"name": "육군항공학교(논산)비행장",
"description": "",
"type": "0004",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}

33
pav-server/src/main/resources/air/airspace/common/0005_airFieldArea.json

@ -415,7 +415,8 @@
"name": "Donghae Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -834,7 +835,8 @@
"name": "Damyang Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1253,7 +1255,8 @@
"name": "Yeongam Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1672,7 +1675,8 @@
"name": "Mujigae Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2091,7 +2095,8 @@
"name": "Seung-jin Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2510,7 +2515,8 @@
"name": "Hapcheon Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2929,7 +2935,8 @@
"name": "Haman Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3348,7 +3355,8 @@
"name": "Jangseong Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3767,7 +3775,8 @@
"name": "GoheungMan Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4186,7 +4195,8 @@
"name": "Naju Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -4605,7 +4615,8 @@
"name": "Backun Airfield",
"description": "",
"type": "0005",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}

144
pav-server/src/main/resources/air/airspace/common/0006_ultraLightVehicleArea.json

@ -209,7 +209,8 @@
"name": "양평",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -235,7 +236,8 @@
"name": "시화",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -258,7 +260,8 @@
"name": "공주",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -391,7 +394,8 @@
"name": "방장산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -539,7 +543,8 @@
"name": "고창",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -576,7 +581,8 @@
"name": "광주",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -660,7 +666,8 @@
"name": "금산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -726,7 +733,8 @@
"name": "고성",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -874,7 +882,8 @@
"name": "봉화산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1033,7 +1042,8 @@
"name": "덕두산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1227,7 +1237,8 @@
"name": "경각산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1305,7 +1316,8 @@
"name": "구성산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1429,7 +1441,8 @@
"name": "구좌",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1536,7 +1549,8 @@
"name": "구막",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1697,7 +1711,8 @@
"name": "김천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1811,7 +1826,8 @@
"name": "보은2",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1834,7 +1850,8 @@
"name": "보은",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -1918,7 +1935,8 @@
"name": "서운산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2002,7 +2020,8 @@
"name": "오촌",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2086,7 +2105,8 @@
"name": "북좌",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2280,7 +2300,8 @@
"name": "단양",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2303,7 +2324,8 @@
"name": "영월",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2497,7 +2519,8 @@
"name": "영월2",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2520,7 +2543,8 @@
"name": "하동",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2543,7 +2567,8 @@
"name": "장암산",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2576,7 +2601,8 @@
"name": "인천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2599,7 +2625,8 @@
"name": "청라",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2622,7 +2649,8 @@
"name": "김해",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2645,7 +2673,8 @@
"name": "밀양",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2669,7 +2698,8 @@
"name": "창원",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2706,7 +2736,8 @@
"name": "퇴촌",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2729,7 +2760,8 @@
"name": "미호천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2752,7 +2784,8 @@
"name": "병천천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2777,7 +2810,8 @@
"name": "울주",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2864,7 +2898,8 @@
"name": "고령",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2889,7 +2924,8 @@
"name": "김제",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2912,7 +2948,8 @@
"name": "대전",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2935,7 +2972,8 @@
"name": "청양",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2958,7 +2996,8 @@
"name": "부여",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -2981,7 +3020,8 @@
"name": "춘천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3004,7 +3044,8 @@
"name": "김해2",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3027,7 +3068,8 @@
"name": "문경",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3050,7 +3092,8 @@
"name": "사천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3073,7 +3116,8 @@
"name": "연천",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3096,7 +3140,8 @@
"name": "진주",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3119,7 +3164,8 @@
"name": "전주",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3142,7 +3188,8 @@
"name": "진안",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}
@ -3165,7 +3212,8 @@
"name": "울진",
"description": "",
"type": "0006",
"use": true,
"isUse": true,
"group": "COMMON",
"lowElev": "0",
"highElev": "0"
}

33
pav-server/src/main/resources/air/airspace/custom/gimpoAirportAirFlatArea.json

@ -862,7 +862,8 @@
"name": "김포공항",
"description": "120m 이하1",
"type": "0003",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "120"
}
@ -1600,7 +1601,8 @@
"name": "김포공항",
"description": "120m 이하2",
"type": "0003",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "120"
}
@ -2748,7 +2750,8 @@
"name": "김포공항",
"description": "81~100m 이하1",
"type": "0006",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "80"
}
@ -3880,7 +3883,8 @@
"name": "김포공항",
"description": "61~80m 이하1",
"type": "0006",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "60"
}
@ -5022,7 +5026,8 @@
"name": "김포공항",
"description": "45~60m 이하1",
"type": "0006",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "45"
}
@ -5929,7 +5934,8 @@
"name": "김포공항",
"description": "81~100m 이하2",
"type": "0006",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "80"
}
@ -6822,7 +6828,8 @@
"name": "김포공항",
"description": "61~79m 이하2",
"type": "0006",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "60"
}
@ -7712,7 +7719,8 @@
"name": "김포공항",
"description": "45~59m 이하2",
"type": "0006",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "45"
}
@ -8817,7 +8825,8 @@
"name": "김포공항",
"description": "비행불가",
"type": "0001",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "0"
}
@ -8925,7 +8934,8 @@
"name": "김포공항",
"description": "비행불가1 / tl, tr, br, bl",
"type": "0001",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "0"
}
@ -9018,7 +9028,8 @@
"name": "김포공항",
"description": "비행불가2",
"type": "0001",
"use": true,
"isUse": true,
"group": "GMP",
"lowElev": "0",
"highElev": "0"
}

Loading…
Cancel
Save