GeoJSON → SHP 변환
좌표는 위경도(WGS84, EPSG:4326) 그대로 저장해요. DBF 규칙상 열 이름은 10바이트까지라 긴 이름은 줄여요.
DBF 열 이름·형식
GeoJSON·좌표 표를 SHP 셰이프파일로
웹 지도 도구와 자바스크립트는 GeoJSON을 쓰지만, QGIS·ArcGIS 같은 GIS 프로그램이나 공공기관 자료 제출에서는 아직 SHP(셰이프파일)를 많이 요구해요. 이 도구는 GeoJSON 파일이나 위도·경도 열이 있는 CSV·엑셀 표를 SHP 묶음(.shp 도형, .shx 색인, .dbf 속성, .prj 좌표계, .cpg 인코딩)으로 만들어 ZIP 하나로 줘요.
쓰는 법
- GeoJSON을 넣거나, 첫 줄에 ‘위도’·‘경도’(또는 lat·lon) 열 이름이 있는 CSV·엑셀을 넣어요. 표의 나머지 열은 속성이 돼요.
- 도형 미리보기와 개수를 확인하고, 속성 글자 인코딩을 골라요. 최신 QGIS는 UTF-8을 잘 읽고, 옛 프로그램이나 일부 기관 시스템은 EUC-KR(CP949)을 요구해요.
- ‘DBF 열 이름·형식’에서 바뀔 열 이름과 형식을 미리 봐요. ‘SHP ZIP 받기’를 누르면 내려받아요.
SHP의 규칙
SHP 한 파일에는 한 종류의 도형만 들어갈 수 있어서, 점·선·면이 섞여 있으면 ‘이름_점’, ‘이름_선’, ‘이름_면’ 레이어로 나눠요. DBF 열 이름은 10바이트까지라 긴 이름은 줄이고(UTF-8 한글은 3글자, CP949 한글은 5글자), 겹치면 _2처럼 번호를 붙여요. 문자 값은 254바이트까지 들어가요. 면은 SHP 규격대로 바깥 테두리를 시계 방향, 구멍을 반시계 방향으로 고쳐 저장해요.
어떻게 만드나요
ESRI Shapefile 기술 문서(1998)의 바이트 구조와 dBASE III 형식에 따라 직접 써요. 좌표는 위경도(WGS84) 그대로 저장하고 .prj에 GCS_WGS_1984를 적어요. EPSG:5186 같은 평면 좌표가 필요하면 QGIS에서 ‘다른 이름으로 저장’으로 좌표계를 바꾸세요. 파일은 서버로 보내지 않아요.
참고한 자료
- ESRI Shapefile Technical Description (1998) — SHP·SHX 구조, 링 방향
- RFC 7946 — The GeoJSON Format — GeoJSON
- Library of Congress — dBASE Table File Format (DBF) — DBF 구조
자주 묻는 질문
숫자처럼 보이는 코드(우편번호 등)가 숫자로 바뀌어요.
‘숫자로만 된 열은 숫자 형식’을 끄면 문자 그대로 저장해요. 0으로 시작하는 값이 있는 열은 원래 문자로 저장해요.
QGIS에서 한글이 깨져요.
레이어 속성 → 소스에서 데이터 인코딩을 UTF-8(또는 CP949)로 맞춰 주세요. .cpg 파일이 함께 있으면 보통 자동으로 맞춰져요.
선이나 면을 CSV로 만들 수 있나요?
CSV는 점(위도·경도 한 쌍)만 돼요. 선·면은 GeoJSON으로 넣어 주세요.
함께 쓰면 좋은 도구
- SHP → GeoJSON 변환 (셰이프파일 보기·좌표계 변환·한글 깨짐 해결)공공데이터 SHP(셰이프파일)를 지도 모양으로 미리 보고, 한국 좌표계(EPSG:5186·5179 등)를 위경도로 바꿔 GeoJSON·CSV로 받기
- GeoJSON → KML·KMZ 변환 (구글 어스·구글 내 지도용, CSV 위경도도 가능)GeoJSON이나 위도·경도 CSV·엑셀을 구글 어스·구글 내 지도에 올리는 KML·KMZ로 — 이름 열·설명 표·색 지정
- 위도·경도 변환 (도분초 ↔ 십진수, 두 지점 거리·방위)37°33′59″N 같은 도분초와 37.5665 같은 십진수 좌표를 서로 바꾸고, 두 좌표 사이 거리·방위각·중간 지점 계산
- CSV를 엑셀로 (한글 깨짐 없이)CSV → XLSX 변환, EUC-KR·UTF-8 자동 인식, 0으로 시작하는 번호 보존
- 엑셀을 CSV로 (UTF-8·EUC-KR 선택)XLSX → CSV, UTF-8(BOM)·EUC-KR 인코딩과 구분 기호 선택
- CSV 한글 깨짐 고치기 (EUC-KR ↔ UTF-8)EUC-KR ↔ UTF-8 변환, 깨진 글자 미리 보고 바로잡기