smartparking_planparser
사용자 가이드

Smart Parking Plan Parser 사용자 가이드

주차통합시스템에서 주차도면을 Parser하여 관리자에 등록해주기 위한 기능

1. 소개

Smart Parking Plan Parser는 주차장 도면(DXF 파일)을 분석하여 주차 공간, 비상벨, CCTV 등의 위치 정보를 추출하고 JSON 형식으로 변환하는 도구입니다.

2. 설치 방법

2.1 요구사항

  • Python 3.7 이상
  • pip (Python 패키지 관리자)

2.2 의존성 설치

pip install -r requirements.txt

주요 의존성:

  • ezdxf: DXF 파일 처리
  • PyYAML: YAML 설정 파일 처리

3. 사용 방법

3.1 설정 파일 준비

settings.yaml 파일을 다음과 같이 작성합니다:

filename: "example.dxf"  # 분석할 DXF 파일 경로
floor_start_points:      # 각 층의 시작점 좌표
  - [0, 0]              # 1층 시작점
  - [100, 0]           # 2층 시작점
layer_info:             # 도면 레이어 정보
  parking: "PARKING"    # 주차 공간 레이어 이름
  emergency: "EMERGENCY" # 비상벨 레이어 이름
  camera: "CAMERA"      # CCTV 레이어 이름
size_limits:            # 객체 크기 제한
  min_length: 50        # 최소 선 길이
  max_length: 300       # 최대 선 길이

3.2 도면 파일 준비

  • DXF 형식의 도면 파일이 필요합니다.
  • 도면은 다음 레이어들을 포함해야 합니다:
    • 주차 공간 레이어
    • 비상벨 레이어 (선택)
    • CCTV 레이어 (선택)

3.3 실행 방법

python planparser.py

3.4 출력 결과

실행이 완료되면 다음과 같은 파일들이 생성됩니다:

  • 0.json: 1층 주차 공간 정보
  • 1.json: 2층 주차 공간 정보
  • ... (층 수에 따라 추가)

4. 출력 파일 형식

4.1 주차 공간 정보

{
  "position": [100, 200],    // 주차 공간 중심점 좌표
  "points": [                // 주차 공간 모서리 좌표
    [90, 190],
    [110, 190],
    [110, 210],
    [90, 210]
  ],
  "type": "NORMAL"           // 주차 공간 유형
}

4.2 비상벨/CCTV 정보

{
  "position": [150, 250],    // 설치 위치 좌표
  "type": "EMERGENCY"        // 설비 유형
}

5. 문제 해결

5.1 일반적인 문제

  1. 도면 파일을 읽을 수 없는 경우

    • DXF 파일 형식이 올바른지 확인
    • 파일 경로가 올바른지 확인
  2. 주차 공간이 검출되지 않는 경우

    • 레이어 이름이 설정 파일과 일치하는지 확인
    • 선 길이 제한값이 적절한지 확인
  3. 좌표가 잘못된 경우

    • 층별 시작점 좌표가 올바른지 확인
    • 도면의 축척이 올바른지 확인

5.2 오류 메시지

  • FileNotFoundError: 도면 파일이나 설정 파일을 찾을 수 없음
  • KeyError: 설정 파일에 필요한 키가 없음
  • ValueError: 잘못된 좌표값이나 설정값

6. 모범 사례

6.1 도면 준비

  • 각 요소를 적절한 레이어에 배치
  • 불필요한 레이어 제거
  • 도면 요소의 크기 일관성 유지

6.2 설정 파일 관리

  • 프로젝트별로 별도의 설정 파일 사용
  • 주석을 통한 설정값 설명 추가
  • 백업 설정 파일 유지

7. 팁과 요령

  1. 도면 최적화

    • 불필요한 객체 제거
    • 레이어 정리
    • 일관된 축척 사용
  2. 성능 향상

    • 큰 도면은 층별로 분할
    • 불필요한 레이어 비활성화
  3. 결과 검증

    • SVG 출력을 통한 시각적 확인
    • 샘플 데이터로 테스트 실행