본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


기타

shp파일 gson 형식으로 변환하기(geojson, json)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2022. 12. 29.

 

구글, 네이버 및 다음 지도나 아니면 오픈레이어스 같은 플렛폼에서 행정구역을 표현하기 위해서는 위도와 경도값이 존재하는 json파일을 필요로 합니다.

일반적으로 지형정보와 관련된 파일은 shp확장자로 되어 있으며, 웹에서는 json 형식으로 추려진 데이터를 사용 합니다.

 

#1. 지형정보 다운받기

지형정보가 들어있는 shp파일은 구글링을 통하면 쉽게 받을 수 있습니다.

http://www.gisdeveloper.co.kr/?p=2332 

 

대한민국 최신 행정구역(SHP) 다운로드 – GIS Developer

 

www.gisdeveloper.co.kr

 

위 사이트를 통해서 원하는 지역크기의 지형정보를 받도록 합니다.

종류는 "시도", "시군구", "읍면동", "리" 단위로 되어 있으며 좌측에서 우측으로 갈 수록 파일의 크기가 커집니다.

구분 이름 내용 압축크기
1번 시도 시, 도 구역 라인을 표시 합니다 9MG
2번 시군구 1번내용 + 지역의 군, 구 라인까지 표시 합니다 9MG
3번 읍면동 2번내용 + 지역의 읍, 면, 동 라인까지 표시 합니다. 38MG
4번 3번내용 + 지역의 리 단위 까지 표시 합니다. 60MG

 

이러한 shp파일은 나중에 웹에서 사용할 수 있는 json 형식으로 컨버팅 하면 용량이 좀더 커지게 됩니다.

그러므로 3번부터는 웹에서 표현하는 것은 웹 브라우저의 먹통 사태를 유발할 수 있으므로 고려가 되어야 합니다.

특히 4번 "리" 같은 경우에는 압축을 풀게되면 shp파일이 96메가나 되기 때문 입니다.

와우...엄청 크네요

 

#2. 변환 프로그램 받기

shp파일은 웹에서 컨버팅 해서 사용할 수 없으므로 이제 json파일 형식으로 만들어주는 프로그램을 다운 받습니다.

QGIS 라고 검색하여 보면 자신의 운영체제에 맞게 지형정보를 편집 할 수 있는 응용프로그램을 다운받을 수 있습니다.

https://qgis.org/ko/site/

 

QGIS 프로젝트에 오신 것을 환영합니다!

여러분의 GIS 작업에 QGIS를 사용해 보세요.

qgis.org

 

해당 프로그램을 다운받은 뒤 실행을 하여 봅니다.

실행하고 나면 좌측 메뉴 탭에서 "XYZ Tiles"라는 박스를 클릭하여 "OpenStreetMap"을 선택합니다.

마우스 우측 버튼을 눌러서 "프로젝트에 레이어 추가" 버튼을 누르거나 더블클릭을 해 주면 우측 화면에 지도가 나타나게 됩니다.

우리의 지형 좌표계가 잘 나오는지 확인하려구요..잇힝~

 

위 지도를 불러오는 shp 파일을 컨버팅 하였을 때 지도 좌표가 잘 나오는지 확인하기 위해서 입니다.

여기까지 하고난 뒤에 좌측 상단에 있는 모양의 "데이터원본 관리자 열기(Ctrl + L)" 버튼을 눌러서 내가 다운받은 파일을 넣어 주어야 합니다.

여길 눌러서
파일을 선택한 뒤에 추가버튼을 누릅니다.

 

"추가" 버튼을 눌러주고 난 뒤에 "닫기" 버튼을 눌러줍니다.

shp 파일의 지형정보가 어디에 생겼는지 이제 처음 생성해준 지도에서 찾아봅니다.

옹? 아프리카에 있네요..ㅎ

 

위 내용처럼 보이는 이유는 shp파일과 지도의 좌표계(EPSG) 형식이 서로 맞지않아 생기는 문제 입니다.

다운받은 지형정보의 좌표계(EPSG) 형식을 바꾸어 주기 위해서 아래 사진처럼 마우스 우측 버튼을 클릭하여 "레이어 좌표계 설정" 버튼을 눌러줍니다.

 

다음으로 "필터" 항목에서 5179 값을 검색한 뒤에 선택하여 줍니다.

5179를 입력 한 뒤에 선택합니다.

 

그러면 아프리카에 있던 대한민국의 지형정보가 원래 위치로 이동하게 됩니다.

오~ 제자리로 왔습니다!

 

드디어 잘 컨버팅된 지형정보를 json 파일로 만들 차레 입니다.

마우스 우측 버튼을 눌러서  "Export"를 선택 한 뒤에 "객체를 다른 이름으로 저장" 을 눌러 줍니다.

좋았어!

 

이제 긴장해야되는 단계 입니다.

팝업창이 뜨게 되면 "좌표계(EPSG)"를 우리가 흔히 알고 있는 위도, 경도 값으로 바꾸도록 합니다.

아래 사진처럼 버튼을 눌러서 필터에 4166 값을 입력한 뒤에 "확인" 을 눌러 해당 값으로 바뀌도록 해 봅니다.

1번부터 3번까지 잘 선택하여 주세요.

 

1번을 누르면 "좌표계 선택" 이라는 팝업이 뜨게 됩니다.

그러면 2번에 4166값을 누르고 3번의 버튼을 눌러줍니다.

위 체크박스처럼 항목들을 잘 선택해 주도록 하고 "범위 항목" 에서의 데이터가 우리가 흔히 보던 위도 경도값으로 바뀌었는지 확인하도록 합니다.

요기 값이 이렇게 나오면 정상입니다!

 

여기까지 다 했다면 이제 원하는 파일명을 입력하고 "확인"버튼을 눌러주면 해당 shp파일이 json 형식의 파일로 컨버팅 되는 것을 볼 수 있습니다.

끝!

 

이렇게 생성된 파일을 편집기로 열어보면 정말 순수하게 json 형식으로 되어있는 것을 볼 수 있습니다.

그러므로 해당 파일에 앞, 뒤에 json형식에 맞는 구분값들을 추가하는 작업을 해 주어야 합니다.

아...json이긴 한데 이처럼 데이터가 n개인 경우에는 이걸 배열로 묶어줘야 겠군요!!

 

해당 데이터가 아래처럼 배열형식으로 들어가야 합니다.

{
   "type": "FeatureCollection",
   "features": [
      //여기에 컨버팅한 json 값들이 들어가야합니다. 
      //아!! 물론 맨 뒤에 콤마(,)도 붙여줘야 합니다.
   ]
   
}

 

에디트플러스, 노트패드 및 vs코드를 사용해서 간단하게 수정하려 한 다면 메모리가 부족해서 편집도구가 다운되는 것을 만날 수 있습니다.

그러므로 해당 부분을 고려햐여 프로그래밍으로 풀어야할 문제입니다.

아무튼! 이렇게 하고나서 오픈레이어스를 활용하여 지형 정보가 잘 나오는지 확인하였습니다.

와! 잘나옵니다!

 

gis와 관련된 개발 또는 운영에 필요한 지식수준가지 필요하지 않아서 QGIS의 사용법은 간단하게 정리 하였습니다.

이상으로 shp파일 gson 형식으로 변환하기에 대해서 살펴 보았습니다.

궁금한점 또는 틀린부분은 언제든 연락주세요!

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글