convert kmz to json and json to kmz
npm install @nullcode_realman/dji_kmz_parserbash
npm 사용
npm i @nullcode_realman/dji_kmz_parser
`
🚀 사용법
$3
`typescript
import { kmzToJson } from '@nullcode_realman/dji_kmz_parser'
// 파일 업로드로 KMZ 파일 받기
const handleFileUpload = async (file: File) => {
try {
const response = new Response(file)
const jsonData = await kmzToJson(response)
console.log('변환된 JSON 데이터:', jsonData)
} catch (error) {
console.error('변환 오류:', error)
}
}
// 또는 fetch로 KMZ 파일 가져오기
const loadKmzFile = async () => {
try {
const response = await fetch('/path/to/flight.kmz')
const jsonData = await kmzToJson(response)
console.log('변환된 JSON 데이터:', jsonData)
} catch (error) {
console.error('변환 오류:', error)
}
}
`
$3
`typescript
import { jsonToKmz } from '@nullcode_realman/dji_kmz_parser'
// 샘플 JSON 데이터 (실제 사용 시에는 적절한 데이터 구조 사용)
const flightData = {
template: {
author: "사용자명",
createTime: "1757489712000",
updateTime: "1757489712000",
missionConfig: {
flyToWaylineMode: "safely",
finishAction: "goHome",
// ... 기타 설정
},
Folder: {
templateType: "waypoint",
autoFlightSpeed: "10.0",
// ... 기타 설정
}
},
waylines: {
missionConfig: {
// ... 미션 설정
},
Folder: {
templateId: "0",
waylineId: "0",
// ... 항로 설정
}
}
}
const generateKmzFile = async () => {
try {
const kmzBlob = await jsonToKmz(flightData)
// 파일 다운로드
const url = window.URL.createObjectURL(kmzBlob)
const a = document.createElement('a')
a.href = url
a.download = flight-${new Date().getTime()}.kmz
a.click()
// 메모리 정리
window.URL.revokeObjectURL(url)
console.log('KMZ 파일 생성 완료!')
} catch (error) {
console.error('KMZ 생성 오류:', error)
}
}
`
$3
`vue
변환된 데이터:
{{ JSON.stringify(kmzData, null, 2) }}
`
$3
`tsx
import React, { useState } from 'react'
import { kmzToJson, jsonToKmz } from '@nullcode_realman/dji_kmz_parser'
const KmzConverter: React.FC = () => {
const [kmzData, setKmzData] = useState(null)
const handleFileUpload = async (event: React.ChangeEvent) => {
const file = event.target.files?.[0]
if (!file) return
try {
const response = new Response(file)
const data = await kmzToJson(response)
setKmzData(data)
} catch (error) {
console.error('KMZ 변환 오류:', error)
}
}
const generateKmz = async () => {
try {
const kmzBlob = await jsonToKmz(kmzData)
// 다운로드 로직...
} catch (error) {
console.error('KMZ 생성 오류:', error)
}
}
return (
{kmzData && {JSON.stringify(kmzData, null, 2)}}
)
}
`
📋 API 참조
$3
KMZ 파일을 JSON 객체로 변환합니다.
매개변수:
- blobLike: KMZ 파일의 Response 또는 Blob 객체
반환값:
- Promise: 변환된 JSON 객체 또는 오류 메시지
$3
JSON 객체를 KMZ 파일로 변환합니다.
매개변수:
- obj: KMZ 파일로 변환할 JSON 객체
반환값:
- Promise: 생성된 KMZ 파일 Blob 또는 오류 메시지
🏗️ 지원하는 드론 모델
- M30/M30T: M30 쌍광, M30T 삼광
- M3E/M3T/M3M: Mavic 3 시리즈
- M3D/M3TD: Matrice 3 시리즈
- M300 RTK: Matrice 300 RTK
- M350 RTK: Matrice 350 RTK
📁 파일 구조
`
dji_kmz_parser/
├── lib/ # 빌드된 라이브러리 파일
│ ├── index.js # ES 모듈
│ ├── index.umd.cjs # UMD 모듈
│ └── index.d.ts # TypeScript 타입 정의
├── packages/ # 소스 코드
│ ├── parser.ts # 핵심 파싱 로직
│ └── typing/ # 타입 정의
│ ├── action.ts # 액션 타입
│ ├── global.ts # 전역 설정 타입
│ ├── point.ts # 웨이포인트 타입
│ ├── template.ts # 템플릿 타입
│ └── wayline.ts # 항로 타입
└── playground/ # 테스트 플레이그라운드
`
🔧 개발 환경 설정
`bash
저장소 클론
git clone https://github.com/nullcodeRealman/dji_kmz_parser.git
cd dji_kmz_parser
의존성 설치
npm install
개발 서버 실행
npm run dev
라이브러리 빌드
npm run build:lib
프로덕션 빌드
npm run build:prod
`
🤝 기여하기
1. Fork the Project
2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
3. Commit your Changes (git commit -m 'Add some AmazingFeature')
4. Push to the Branch (git push origin feature/AmazingFeature)
5. Open a Pull Request
📄 라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE` 파일을 참조하세요.