- frontend/ 폴더로 프론트엔드 전체 이관 - signal-batch API 연동 (한국 선박 위치 데이터) - Tailwind CSS 4 + CSS 변수 테마 토큰 (dark/light) - i18next 다국어 (ko/en) 인프라 + 28개 컴포넌트 적용 - 레이어 패널 트리 구조 재설계 (카테고리별 온/오프, 범례) - Google OAuth 로그인 화면 + DEV LOGIN 우회 - 외부 API CORS 프록시 전환 (Airplanes.live, OpenSky, CelesTrak) - ShipLayer 이미지 탭 전환 (signal-batch / MarineTraffic) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
123 lines
3.0 KiB
TypeScript
123 lines
3.0 KiB
TypeScript
// ═══ 대한민국 배타적 경제수역(EEZ) 경계 좌표 ═══
|
|
// 출처: 해양수산부, UNCLOS, 한일/한중 어업협정, NLL 기준
|
|
// 서해(한중 잠정조치수역), 남해(한일 중간수역), 동해(한일 중간선) 포함
|
|
|
|
// EEZ 외곽 경계 (시계방향, [lat, lng])
|
|
export const KOREA_EEZ_BOUNDARY: [number, number][] = [
|
|
// ── 서해 NLL 부근 (북서단) ──
|
|
[37.75, 124.40],
|
|
[37.70, 124.10],
|
|
[37.40, 123.70],
|
|
[37.00, 123.50],
|
|
[36.60, 123.30],
|
|
[36.20, 123.20],
|
|
[35.80, 123.10],
|
|
[35.40, 123.00],
|
|
[35.00, 122.90],
|
|
|
|
// ── 서해 남부 (한중 중간선 부근) ──
|
|
[34.60, 122.80],
|
|
[34.20, 123.00],
|
|
[33.80, 123.30],
|
|
[33.40, 123.60],
|
|
[33.00, 124.00],
|
|
|
|
// ── 제주도 남서~남 ──
|
|
[32.60, 124.40],
|
|
[32.30, 125.00],
|
|
[32.10, 125.60],
|
|
[32.00, 126.20],
|
|
|
|
// ── 제주도 남쪽 (한일 중간수역 북방한계) ──
|
|
[32.00, 126.80],
|
|
[32.10, 127.30],
|
|
[32.20, 127.80],
|
|
[32.40, 128.10],
|
|
|
|
// ── 대한해협 (대마도 서쪽, 한일 중간선) ──
|
|
// 대마도(쓰시마) 서안 129.2°E → 중간선은 약 128.5°E
|
|
[32.70, 128.40],
|
|
[33.00, 128.50],
|
|
[33.50, 128.60],
|
|
[34.00, 128.80],
|
|
[34.40, 129.10],
|
|
|
|
// ── 동해 남부 (한일 중간선) ──
|
|
[34.80, 129.40],
|
|
[35.20, 129.70],
|
|
[35.60, 130.00],
|
|
[36.00, 130.20],
|
|
[36.50, 130.40],
|
|
[37.00, 130.60],
|
|
|
|
// ── 동해 중부~북부 (울릉도 동쪽) ──
|
|
[37.50, 130.80],
|
|
[38.00, 130.90],
|
|
[38.30, 130.80],
|
|
[38.60, 130.60],
|
|
|
|
// ── 동해안 따라 남하 (영해 외곽) ──
|
|
[38.50, 128.80],
|
|
[38.35, 128.60],
|
|
[38.30, 128.55],
|
|
|
|
// ── 서해 NLL 연결 (육지 경유 개념, 실제는 해상만 표시) ──
|
|
// 생략 — 폴리곤을 닫기 위해 시작점으로 복귀
|
|
[37.75, 124.40],
|
|
];
|
|
|
|
// 한일 중간수역 (Joint Management Zone) — 사용하지 않음, 참고용
|
|
export const KOREA_JAPAN_JMZ: [number, number][] = [];
|
|
|
|
// 한중 잠정조치수역 (Provisional Measures Zone)
|
|
export const KOREA_CHINA_PMZ: [number, number][] = [
|
|
[37.00, 123.00],
|
|
[36.75, 122.80],
|
|
[36.25, 122.60],
|
|
[35.75, 122.50],
|
|
[35.25, 122.40],
|
|
[34.50, 122.50],
|
|
[34.00, 122.80],
|
|
[33.50, 123.20],
|
|
[33.00, 123.60],
|
|
[32.50, 124.20],
|
|
[32.50, 124.80],
|
|
[33.00, 124.50],
|
|
[33.50, 124.20],
|
|
[34.00, 124.00],
|
|
[34.50, 123.80],
|
|
[35.00, 123.70],
|
|
[35.50, 123.60],
|
|
[36.00, 123.50],
|
|
[36.50, 123.40],
|
|
[37.00, 123.30],
|
|
[37.00, 123.00],
|
|
];
|
|
|
|
// 독도 주변 12해리 영해 (원형 근사)
|
|
export const DOKDO_TERRITORIAL: { center: [number, number]; radiusKm: number } = {
|
|
center: [37.2417, 131.8647],
|
|
radiusKm: 22.2, // 12 nautical miles
|
|
};
|
|
|
|
// 서해 5도 NLL (Northern Limit Line)
|
|
export const NLL_WEST_SEA: [number, number][] = [
|
|
[37.75, 124.40],
|
|
[37.74, 124.65],
|
|
[37.72, 124.90],
|
|
[37.70, 125.10],
|
|
[37.68, 125.30],
|
|
[37.67, 125.50],
|
|
[37.67, 125.70],
|
|
];
|
|
|
|
// 동해 NLL
|
|
export const NLL_EAST_SEA: [number, number][] = [
|
|
[38.60, 128.35],
|
|
[38.60, 128.60],
|
|
[38.60, 129.00],
|
|
[38.60, 129.50],
|
|
[38.60, 130.00],
|
|
[38.60, 130.60],
|
|
];
|