|
|
@ -8,6 +8,7 @@ import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.*; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.locationtech.jts.geom.Coordinate; |
|
|
|
import org.locationtech.jts.geom.Coordinate; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
@ -21,13 +22,6 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; |
|
|
|
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; |
|
|
|
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; |
|
|
|
import com.palnet.biz.api.bas.flight.service.BasFlightMapper; |
|
|
|
import com.palnet.biz.api.bas.flight.service.BasFlightMapper; |
|
|
|
import com.palnet.biz.api.comn.model.ControlGpsDataContext; |
|
|
|
import com.palnet.biz.api.comn.model.ControlGpsDataContext; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlArcrftWarnModel; |
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlDtlModel; |
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlGroupArcrftModel; |
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlGroupModel; |
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlPlanContainsRq; |
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlPlanContainsRs; |
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlWarnLogModel; |
|
|
|
|
|
|
|
import com.palnet.biz.jpa.entity.ComArcrftBas; |
|
|
|
import com.palnet.biz.jpa.entity.ComArcrftBas; |
|
|
|
import com.palnet.biz.jpa.entity.ComIdntfBas; |
|
|
|
import com.palnet.biz.jpa.entity.ComIdntfBas; |
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlBas; |
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlBas; |
|
|
@ -58,10 +52,10 @@ import lombok.extern.log4j.Log4j2; |
|
|
|
@Service |
|
|
|
@Service |
|
|
|
@Log4j2 |
|
|
|
@Log4j2 |
|
|
|
public class CtrCntrlService { |
|
|
|
public class CtrCntrlService { |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
private JwtTokenUtil jwtTokenUtil; |
|
|
|
private JwtTokenUtil jwtTokenUtil; |
|
|
|
|
|
|
|
|
|
|
|
private final CtrCntrlQueryRepository query; |
|
|
|
private final CtrCntrlQueryRepository query; |
|
|
|
private final CtrCntrlBasRepository cntrlBasRepository; |
|
|
|
private final CtrCntrlBasRepository cntrlBasRepository; |
|
|
|
private final CtrCntrlHstryRepository cntrlHstryRepository; |
|
|
|
private final CtrCntrlHstryRepository cntrlHstryRepository; |
|
|
@ -101,10 +95,10 @@ public class CtrCntrlService { |
|
|
|
this.shareContext = shareContext; |
|
|
|
this.shareContext = shareContext; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<GPHistoryModel> getListHistory(String objectId){ |
|
|
|
public List<GPHistoryModel> getListHistory(String objectId) { |
|
|
|
List<GPHistoryModel> filterList = new ArrayList<GPHistoryModel>(); |
|
|
|
List<GPHistoryModel> filterList = new ArrayList<GPHistoryModel>(); |
|
|
|
|
|
|
|
|
|
|
|
// if(cic.getHistoryData(objectId).size() > 0) {
|
|
|
|
// if(cic.getHistoryData(objectId).size() > 0) {
|
|
|
|
// resultList = cic.getHistoryData(objectId);
|
|
|
|
// resultList = cic.getHistoryData(objectId);
|
|
|
|
//
|
|
|
|
//
|
|
|
@ -115,9 +109,9 @@ public class CtrCntrlService { |
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
return filterList; |
|
|
|
return filterList; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -127,46 +121,46 @@ public class CtrCntrlService { |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public CtrCntrlDtlModel getDetail(String controlId) { |
|
|
|
public CtrCntrlDtlModel getDetail(String controlId) { |
|
|
|
|
|
|
|
|
|
|
|
CtrCntrlDtlModel result; |
|
|
|
CtrCntrlDtlModel result; |
|
|
|
|
|
|
|
|
|
|
|
result = query.detailCntrl(controlId); |
|
|
|
result = query.detailCntrl(controlId); |
|
|
|
|
|
|
|
|
|
|
|
List<CtrCntrlHstryArea> areaList = query.detailArea(controlId); |
|
|
|
List<CtrCntrlHstryArea> areaList = query.detailArea(controlId); |
|
|
|
String stAreaNm = ""; |
|
|
|
String stAreaNm = ""; |
|
|
|
|
|
|
|
|
|
|
|
if ( result.getHpno() == null || result.getHpno().isEmpty()) { |
|
|
|
if (result.getHpno() == null || result.getHpno().isEmpty()) { |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
result.setHpno(EncryptUtils.decrypt(result.getHpno())); |
|
|
|
result.setHpno(EncryptUtils.decrypt(result.getHpno())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for(CtrCntrlHstryArea data : areaList) { |
|
|
|
for (CtrCntrlHstryArea data : areaList) { |
|
|
|
if(data.getActnType().equals("01")) { |
|
|
|
if (data.getActnType().equals("01")) { |
|
|
|
if(!StringUtils.isEmpty(data.getArea1())) { |
|
|
|
if (!StringUtils.isEmpty(data.getArea1())) { |
|
|
|
stAreaNm = stAreaNm + " " + data.getArea1(); |
|
|
|
stAreaNm = stAreaNm + " " + data.getArea1(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isEmpty(data.getArea2())) { |
|
|
|
if (!StringUtils.isEmpty(data.getArea2())) { |
|
|
|
stAreaNm = stAreaNm + " " + data.getArea2(); |
|
|
|
stAreaNm = stAreaNm + " " + data.getArea2(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isEmpty(data.getArea3())) { |
|
|
|
if (!StringUtils.isEmpty(data.getArea3())) { |
|
|
|
stAreaNm = stAreaNm + " " + data.getArea3(); |
|
|
|
stAreaNm = stAreaNm + " " + data.getArea3(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isEmpty(data.getLandNm())) { |
|
|
|
if (!StringUtils.isEmpty(data.getLandNm())) { |
|
|
|
stAreaNm = stAreaNm + " " + data.getLandNm(); |
|
|
|
stAreaNm = stAreaNm + " " + data.getLandNm(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isEmpty(data.getLandNum())) { |
|
|
|
if (!StringUtils.isEmpty(data.getLandNum())) { |
|
|
|
stAreaNm = stAreaNm + " " + data.getLandNum(); |
|
|
|
stAreaNm = stAreaNm + " " + data.getLandNum(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.setStAreaNm(stAreaNm); |
|
|
|
result.setStAreaNm(stAreaNm); |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -187,16 +181,16 @@ public class CtrCntrlService { |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public List<CtrCntrlGroupArcrftModel> getGroupAuthInfo() { |
|
|
|
public List<CtrCntrlGroupArcrftModel> getGroupAuthInfo() { |
|
|
|
|
|
|
|
|
|
|
|
List<CtrCntrlGroupModel> list = query.findByGroupInfo(); |
|
|
|
List<CtrCntrlGroupModel> list = query.findByGroupInfo(); |
|
|
|
List<CtrCntrlGroupArcrftModel> arcrftList= new ArrayList<>(); |
|
|
|
List<CtrCntrlGroupArcrftModel> arcrftList = new ArrayList<>(); |
|
|
|
if(list.size()>0) { |
|
|
|
if (list.size() > 0) { |
|
|
|
for(CtrCntrlGroupModel lists : list) { |
|
|
|
for (CtrCntrlGroupModel lists : list) { |
|
|
|
List<CtrCntrlGroupArcrftModel> groupArcrft = query.findByGroupArcrft(lists.getGroupId()); |
|
|
|
List<CtrCntrlGroupArcrftModel> groupArcrft = query.findByGroupArcrft(lists.getGroupId()); |
|
|
|
arcrftList.addAll(groupArcrft); |
|
|
|
arcrftList.addAll(groupArcrft); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return arcrftList; |
|
|
|
return arcrftList; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -208,16 +202,16 @@ public class CtrCntrlService { |
|
|
|
public List<CtrCntrlWarnLogModel> getWarnLog(String controlId) { |
|
|
|
public List<CtrCntrlWarnLogModel> getWarnLog(String controlId) { |
|
|
|
List<CtrCntrlWarnLog> logs = warnLogRepository.findAllByCntrlId(controlId); |
|
|
|
List<CtrCntrlWarnLog> logs = warnLogRepository.findAllByCntrlId(controlId); |
|
|
|
List<CtrCntrlWarnLogModel> warnLog = new ArrayList<>(); |
|
|
|
List<CtrCntrlWarnLogModel> warnLog = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
for (CtrCntrlWarnLog log : logs) { |
|
|
|
for (CtrCntrlWarnLog log : logs) { |
|
|
|
CtrCntrlWarnLogModel model = new CtrCntrlWarnLogModel(); |
|
|
|
CtrCntrlWarnLogModel model = new CtrCntrlWarnLogModel(); |
|
|
|
|
|
|
|
|
|
|
|
model.setCntrlId(log.getCntrlId()); |
|
|
|
model.setCntrlId(log.getCntrlId()); |
|
|
|
model.setCreateDt(log.getCreateDt()); |
|
|
|
model.setCreateDt(log.getCreateDt()); |
|
|
|
model.setWarnLogSno(log.getWarnLogSno()); |
|
|
|
model.setWarnLogSno(log.getWarnLogSno()); |
|
|
|
model.setWarnType(log.getWarnType()); |
|
|
|
model.setWarnType(log.getWarnType()); |
|
|
|
model.setIdntfNum(log.getIdntfNum()); |
|
|
|
model.setIdntfNum(log.getIdntfNum()); |
|
|
|
|
|
|
|
|
|
|
|
warnLog.add(model); |
|
|
|
warnLog.add(model); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -227,6 +221,7 @@ public class CtrCntrlService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* TODO 기체 별 최신 비정상 로그 및 비정상 로그 전체 개수 |
|
|
|
* TODO 기체 별 최신 비정상 로그 및 비정상 로그 전체 개수 |
|
|
|
|
|
|
|
* |
|
|
|
* @param id |
|
|
|
* @param id |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -237,7 +232,7 @@ public class CtrCntrlService { |
|
|
|
|
|
|
|
|
|
|
|
if ("".equals(id) || id == null) return null; |
|
|
|
if ("".equals(id) || id == null) return null; |
|
|
|
|
|
|
|
|
|
|
|
String[] ids = id.indexOf(",") > -1 ? id.split(",") : new String[] {id}; |
|
|
|
String[] ids = id.indexOf(",") > -1 ? id.split(",") : new String[]{id}; |
|
|
|
|
|
|
|
|
|
|
|
for (String cntrlId : ids) { |
|
|
|
for (String cntrlId : ids) { |
|
|
|
CtrCntrlArcrftWarnModel model = new CtrCntrlArcrftWarnModel(); |
|
|
|
CtrCntrlArcrftWarnModel model = new CtrCntrlArcrftWarnModel(); |
|
|
@ -310,7 +305,7 @@ public class CtrCntrlService { |
|
|
|
* @param idntfNum |
|
|
|
* @param idntfNum |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public List<BasFlightPlanModel> getFlightPlan(String idntfNum) { |
|
|
|
public List<BasFlightPlanModel> getFlightPlan(String idntfNum) { |
|
|
|
List<BasFlightPlanModel> rs = new ArrayList<>(); |
|
|
|
List<BasFlightPlanModel> rs = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
Date fltNowDt = DateUtils.nowDate(); |
|
|
|
Date fltNowDt = DateUtils.nowDate(); |
|
|
@ -331,7 +326,7 @@ public class CtrCntrlService { |
|
|
|
FltPlanBas plan = planBasRepository. |
|
|
|
FltPlanBas plan = planBasRepository. |
|
|
|
findByGroupFlightPlan(arcrft.getPlanSno(), "Y", fltNowDt).orElse(null); |
|
|
|
findByGroupFlightPlan(arcrft.getPlanSno(), "Y", fltNowDt).orElse(null); |
|
|
|
|
|
|
|
|
|
|
|
if (plan != null ) { |
|
|
|
if (plan != null) { |
|
|
|
BasFlightPlanModel planMapping = BasFlightMapper.mapper.entityToModel(plan); |
|
|
|
BasFlightPlanModel planMapping = BasFlightMapper.mapper.entityToModel(plan); |
|
|
|
|
|
|
|
|
|
|
|
// 비행 계획서 구역 조회
|
|
|
|
// 비행 계획서 구역 조회
|
|
|
@ -356,7 +351,7 @@ public class CtrCntrlService { |
|
|
|
areaMapping.setCoordList(coordListMapping); |
|
|
|
areaMapping.setCoordList(coordListMapping); |
|
|
|
|
|
|
|
|
|
|
|
// Buffer 영역 생성 저장
|
|
|
|
// Buffer 영역 생성 저장
|
|
|
|
if("LINE".equals(area.getAreaType())) { |
|
|
|
if ("LINE".equals(area.getAreaType())) { |
|
|
|
List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(areaMapping.getCoordList()); |
|
|
|
List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(areaMapping.getCoordList()); |
|
|
|
List<Coordinate> transCoordList = areaUtils.transform(convertCoordinates, "EPSG:4326", "EPSG:5181"); |
|
|
|
List<Coordinate> transCoordList = areaUtils.transform(convertCoordinates, "EPSG:4326", "EPSG:5181"); |
|
|
|
|
|
|
|
|
|
|
@ -397,7 +392,7 @@ public class CtrCntrlService { |
|
|
|
int countSuccess = 0; |
|
|
|
int countSuccess = 0; |
|
|
|
|
|
|
|
|
|
|
|
if (rq.getIdntfNum() != null) { |
|
|
|
if (rq.getIdntfNum() != null) { |
|
|
|
for (BasFlightPlanModel plan : rq.getPlanList()) { |
|
|
|
for (BasFlightPlanModel plan : rq.getPlanList()) { |
|
|
|
for (BasFlightPlanAreaModel area : plan.getAreaList()) { |
|
|
|
for (BasFlightPlanAreaModel area : plan.getAreaList()) { |
|
|
|
List<Coordinate> planArea = areaUtils.convertCoordinates(area.getCoordList()); |
|
|
|
List<Coordinate> planArea = areaUtils.convertCoordinates(area.getCoordList()); |
|
|
|
|
|
|
|
|
|
|
@ -474,7 +469,7 @@ public class CtrCntrlService { |
|
|
|
if ("01".equals(latestControl.getEndTypeCd()) || diffMinute > 5) { |
|
|
|
if ("01".equals(latestControl.getEndTypeCd()) || diffMinute > 5) { |
|
|
|
isControl = false; |
|
|
|
isControl = false; |
|
|
|
} |
|
|
|
} |
|
|
|
if(!"01".equals(latestControl.getEndTypeCd()) && diffMinute < 5) { |
|
|
|
if (!"01".equals(latestControl.getEndTypeCd()) && diffMinute < 5) { |
|
|
|
isControl = true; |
|
|
|
isControl = true; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -521,4 +516,84 @@ public class CtrCntrlService { |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Coordinate wheather(Coordinate coord) { |
|
|
|
|
|
|
|
double nx; |
|
|
|
|
|
|
|
double ny; |
|
|
|
|
|
|
|
nx = coord.getX(); |
|
|
|
|
|
|
|
ny = coord.getY(); |
|
|
|
|
|
|
|
double RE = 6371.00877; // 지구 반경(km)
|
|
|
|
|
|
|
|
double GRID = 5.0; // 격자 간격(km)
|
|
|
|
|
|
|
|
double SLAT1 = 30.0; // 투영 위도1(degree)
|
|
|
|
|
|
|
|
double SLAT2 = 60.0; // 투영 위도2(degree)
|
|
|
|
|
|
|
|
double OLON = 126.0; // 기준점 경도(degree)
|
|
|
|
|
|
|
|
double OLAT = 38.0; // 기준점 위도(degree)
|
|
|
|
|
|
|
|
double XO = 43; // 기준점 X좌표(GRID)
|
|
|
|
|
|
|
|
double YO = 136; // 기1준점 Y좌표(GRID)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// LCC DFS 좌표변환 ( code : "TO_GRID"(위경도->좌표, lat_X:위도, lng_Y:경도), "TO_GPS"(좌표->위경도, lat_X:x, lng_Y:y) )
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double DEGRAD = Math.PI / 180.0; |
|
|
|
|
|
|
|
double RADDEG = 180.0 / Math.PI; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double re = RE / GRID; |
|
|
|
|
|
|
|
double slat1 = SLAT1 * DEGRAD; |
|
|
|
|
|
|
|
double slat2 = SLAT2 * DEGRAD; |
|
|
|
|
|
|
|
double olon = OLON * DEGRAD; |
|
|
|
|
|
|
|
double olat = OLAT * DEGRAD; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double sn = Math.tan(Math.PI * 0.25 + slat2 * 0.5) / Math.tan(Math.PI * 0.25 + slat1 * 0.5); |
|
|
|
|
|
|
|
sn = Math.log(Math.cos(slat1) / Math.cos(slat2)) / Math.log(sn); |
|
|
|
|
|
|
|
double sf = Math.tan(Math.PI * 0.25 + slat1 * 0.5); |
|
|
|
|
|
|
|
sf = Math.pow(sf, sn) * Math.cos(slat1) / sn; |
|
|
|
|
|
|
|
double ro = Math.tan(Math.PI * 0.25 + olat * 0.5); |
|
|
|
|
|
|
|
ro = re * sf / Math.pow(ro, sn); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double theta; |
|
|
|
|
|
|
|
if (true) { |
|
|
|
|
|
|
|
nx = nx; |
|
|
|
|
|
|
|
ny = ny; |
|
|
|
|
|
|
|
double ra = Math.tan(Math.PI * 0.25 + (nx) * DEGRAD * 0.5); |
|
|
|
|
|
|
|
ra = re * sf / Math.pow(ra, sn); |
|
|
|
|
|
|
|
theta = ny * DEGRAD - olon; |
|
|
|
|
|
|
|
if (theta > Math.PI) theta -= 2.0 * Math.PI; |
|
|
|
|
|
|
|
if (theta < -Math.PI) theta += 2.0 * Math.PI; |
|
|
|
|
|
|
|
theta *= sn; |
|
|
|
|
|
|
|
nx = Math.floor(ra * Math.sin(theta) + XO + 0.5); |
|
|
|
|
|
|
|
ny = Math.floor(ro - ra * Math.cos(theta) + YO + 0.5); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
nx = nx; |
|
|
|
|
|
|
|
ny = ny; |
|
|
|
|
|
|
|
double xn = nx - XO; |
|
|
|
|
|
|
|
double yn = ro - ny + YO; |
|
|
|
|
|
|
|
double ra = Math.sqrt(xn * xn + yn * yn); |
|
|
|
|
|
|
|
if (sn < 0.0) { |
|
|
|
|
|
|
|
ra = -ra; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double alat = Math.pow((re * sf / ra), (1.0 / sn)); |
|
|
|
|
|
|
|
alat = 2.0 * Math.atan(alat) - Math.PI * 0.5; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Math.abs(xn) <= 0.0) { |
|
|
|
|
|
|
|
theta = 0.0; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
if (Math.abs(yn) <= 0.0) { |
|
|
|
|
|
|
|
theta = Math.PI * 0.5; |
|
|
|
|
|
|
|
if (xn < 0.0) { |
|
|
|
|
|
|
|
theta = -theta; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else theta = Math.atan2(xn, yn); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
double alon = theta / sn + olon; |
|
|
|
|
|
|
|
nx = alat * RADDEG; |
|
|
|
|
|
|
|
ny = alon * RADDEG; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Coordinate returnCoord = new Coordinate(); |
|
|
|
|
|
|
|
returnCoord.setX(nx); |
|
|
|
|
|
|
|
returnCoord.setY(ny); |
|
|
|
|
|
|
|
return returnCoord; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|