SHP → GeoJSON 변환
SHP는 .shp·.dbf·.prj(·.cpg) 파일이 한 묶음이에요. ZIP째 넣거나 같은 이름의 파일들을 함께 고르세요. 처음 쓸 때 변환 엔진(약 100KB)을 불러와요.
SHP(셰이프파일)를 웹 지도용 GeoJSON으로
SHP는 GIS 프로그램에서 오래 써 온 지도 데이터 형식으로, 도형(.shp), 속성 표(.dbf), 좌표계(.prj), 글자 인코딩(.cpg) 파일이 한 묶음이에요. 국가공간정보포털·공공데이터포털의 행정구역 경계, 도로, 건물, 시설 위치 자료가 대부분 이 형식이에요. 이 도구는 SHP를 브라우저에서 열어 도형을 미리 그리고, 웹 지도(카카오·네이버·구글·Leaflet)에서 바로 쓰는 GeoJSON으로 바꿔 줘요.
쓰는 법
- 받은 ZIP을 그대로 넣거나, 같은 이름의 .shp·.dbf·.prj·.cpg를 함께 골라요. ZIP 안에 여러 레이어가 있으면 ‘레이어’에서 골라요.
- 도형 미리보기와 속성 표 앞 50줄이 나와요. 지도 배경은 없고 도형 모양만 그려요.
- 좌표계는 .prj를 읽어 자동으로 위도·경도(WGS84)로 바꿔요. .prj가 없거나 위치가 이상하면 ‘원본 좌표계’를 직접 골라요.
- 한글 속성이 깨지면 ‘속성 글자 인코딩’을 EUC-KR이나 UTF-8로 바꿔 보세요. .cpg가 있으면 그 값을, 없으면 내용을 보고 고르는데, 옛 공공데이터는 대부분 EUC-KR이에요.
- GeoJSON(좌표 자릿수 선택)이나 속성 CSV(점 레이어는 경도·위도 열 포함)로 받아요.
한국 좌표계 고르는 법
원본 범위의 숫자로 대략 알 수 있어요. x가 약 90만~110만, y가 약 170만~220만이면 UTM-K(EPSG:5179), x가 약 10만~30만, y가 약 30만~70만이면 TM 중부원점(EPSG:5186, y 기준 60만)이에요. 같은 모양인데 y가 10만 정도 작으면 EPSG:5181이나 옛 Bessel 좌표(5174)예요. 바꾼 뒤 범위가 위도 33~39, 경도 124~132 안에 들어오면 맞게 고른 거예요.
어떻게 바꾸나요
SHP·DBF 해석은 shpjs(MIT), 좌표 변환은 그 안의 proj4js(MIT)로 해요. 각 좌표계의 변환식은 EPSG 등록 정보(투영 원점·축척·가산값·타원체)를 그대로 썼어요. 옛 Bessel 좌표계(5174·5178)는 널리 쓰이는 7개 변수(TOWGS84) 값으로 바꾸므로 수 m 안팎의 차이가 날 수 있어요. 파일은 서버로 보내지 않아요.
참고한 자료
- ESRI Shapefile Technical Description (1998) — SHP 구조
- EPSG:5186 · [EPSG:5179](https://epsg.io/5179) · [EPSG:5181](https://epsg.io/5181) · [EPSG:5174](https://epsg.io/5174) — 한국 좌표계 정의
- RFC 7946 — The GeoJSON Format — GeoJSON(WGS84 위경도)
- shpjs (MIT) · [proj4js (MIT)](https://github.com/proj4js/proj4js) — 해석·좌표 변환 엔진
자주 묻는 질문
지도 위에 올려 보고 싶어요.
받은 GeoJSON을 geojson.io 같은 웹 지도나 QGIS에 끌어다 놓으면 배경 지도 위에서 볼 수 있어요.
파일이 너무 커요.
좌표 자릿수를 5자리(약 1m)로 줄이고 ‘한 줄’로 받으면 크기가 많이 줄어요.
반대로 GeoJSON을 SHP로 바꿀 수 있나요?
네. ‘GeoJSON → SHP 변환’ 도구를 쓰세요.
함께 쓰면 좋은 도구
- GeoJSON → SHP 변환 (셰이프파일 ZIP 만들기, CSV 위경도도 가능)GeoJSON이나 위도·경도 열이 있는 CSV·엑셀을 QGIS·ArcGIS에서 여는 SHP(.shp·.shx·.dbf·.prj·.cpg) ZIP으로
- 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 변환, 깨진 글자 미리 보고 바로잡기