본문 바로가기
미국 개발자

[Q&A] shp file 깃허브에 올릴 수 있나요?

by Henry Cho 2025. 4. 1.

# What is .shp? What is a Shapefile?

Shapefile은 지리공간 데이터를 저장하기 위한 파일 형식이다. 공간 데이터와 그에 관련된 속성 정보를 저장하는 데 사용되는데 대표적으로 Esri나 QGIS에 대해서 많이 들어봤을 것이다. 네비게이션, 인공위성도 이 shapefile를 쓰고 해양 GIS엔진 포세이돈이나 넵튠의 경우도 shapefile 형식을 활용한다. shapefile에는 질문에 나와있는. shp만 있는 것이 아니라. shx,. dbf,. prj 등 다양한 파일 형식이 존재하지만 개인적으로 나는 해당 분야의 전문가가 아닌 해당 분야의 데이터를 활용하는 사람이다 보니. shp를 주로 사용하는 편이다.


# 지리공간 데이터를 많이 쓰나요?

"지리공간" 데이터를 사용할때가 많이 있나? 싶지만 사실 인공지능 개발자로서 일을 하다 보면 정말 많이 사용하는 데이터셋 중 하나가 바로 이 shapefile, 즉 지리공간 데이터이다. 그 이유인즉슨 지리공간 데이터가 가진 함축된 정보가 많은데 이를 인공지능이 처리해 주면 아주 효과적으로 필요한 정보만 쏙쏙 뽑아낼 수 있기 때문이다. 반대로 함축된 정보가 많다는 건 데이터를 분석하기가 복잡하다는 건데 이를 머신러닝으로 처리하면 아주 이지피지(EZPZ)하게 처리할 수 있다. 마치 우리가 직접 운전하면 되지만 자율주행 기능이나 차선 보조장치가 있으면 편하게 운전하는 것처럼 지리공간 데이터를 직접 하나하나 분석해 낼 수도 있지만 인공지능으로 손쉽고 빠르게 정보를 얻어낼 수 있기 때문이다. 결국 과거에도 지리공간 데이터를 여러 분야에서 많이 사용해오고 있었지만 이제는 개발자도 지리공간 데이터를 사용해야 하는 경우가 정말 많아졌다.


# 그럼 공유하는데 왜 문제인가요?

문제는 Geospatial data (지리공간 데이터)를 사용하는 연구원분들이 개발자에게 해당 정보를 공유해야한다는 것이다. 이 shapefile 자체가 용량이 크다 보니 깃허브의 모토와 전혀 어울리지 않는다. 그래서 일반적으로 원드라이브나 구글드라이브로 공유하게 된다. 문제는 이걸 바로 모델링에 넣으려고 한다거나 빅데이터에 걸맞게 정말 수만 개의 데이터를 공유하려고 한다면 원드라이브나 구글드라이브로 한계가 있다. 심지어 모델링에 들어간다는 건 특정 사람한테만 공유하는 게 아니라 모든 사람에 대한 접근 권한이 있어야 하는데 여기도 어려움이 있다.

 

깃허브도 라지 파일에 대한 공유할 수 있는 라이브러리 방법이 존재하긴 하나, 여기서 기준은 공유를 하는 사람과 받는 사람 모두가 해당 방법을 잘 알고 있어야하는데 사실상 개발자가 아니거나 깃허브를 자주 사용해보지 못한 사람에게는 어려운 일이다. 시간을 고려해 보면 배보다 배꼽이 큰 상황이 발생할 수 있다. 또한 shapefile를 쪼갠다음에 공유하는 방법도 있는데, 이것 또한 shapefile를 쪼갤 줄 모르거나 받는 사람이 병합할 줄 모른다면 사실상 시간 낭비고 서로 짜증 나는 일만 발생한다.

 

그래서 내가 결국 추천하는 방식은 원드라이브나 구글드라이브를 사용하라는 것이다. 다만 "원드라이브라와 구글드라이브"로 공유하는데 한계가 있다면 다음 차선책으로 API를 추천한다.


# API로 어떻게 공유하나요?

"아니 좋은게 있으면 처음부터 이걸 추천하면 되잖아요!"라고 할 수 있지만 여기 질문자는 개발자가 아닌 브로이기 때문에 최대한 간단한 방법으로 문제를 해결하려고 했다. 왜냐하면 shapefile을 GIS 툴이나 엔진으로 만든 다음에 활용하는 게 목적이지, 공유하는 기술을 익히는 게 주요한 목적이 아니기 때문이다.

 

아무튼 만일 원드라이브나 구글드라이브로 공유하는데 어려움이 있거나 바로 모델링에 연결되어 사용을 원한다면 API를 활용해보는 것을 추천한다. 지리공간 데이터를 API로 만드는 데에도 여러 방법이 존재한다. 가장 크게 일반 데이터 방식으로 공유할 것인지, 아니면 지리공간 데이터 그대로 공유할 것인지를 정해야 한다. 일반 데이터 방식으로 공유한다면 Flask 또는 Steamlit와 같이 일반적으로 사용하는 API를 개발하여 공유하면 된다.

 

만일 지리공간 데이터 자체로 API를 만들어서 공유하고 싶다면 Geosever나 ArcGIS server와 같이 기존 툴이나 엔진에서 제공되는 서버 소프트웨어를 활용해서 REST API를 만든 다음에 Shapefile을 공유할 수 있다. 이때 API를 통해서 데이터를 웹에서 실시간으로 조회가 가능하니 원본 데이터만 공유할 계획이라면 해당 방식을 사용하는 것을 추천한다.

 

혹시나 API로 변환하는 거에 추가적인 궁금한 사항이 있으면 댓글이나 하단의 개인 메세지로 연락을 주길 바란다. 사실 API를 어렵게 생각해서 그렇지 그냥 "연결해 주는 자동 링크"라고 생각하면 된다. 물론 고도화된 API를 통해서 각기 다른 로봇과 인공지능의 데이터를 자동으로 제공하여 Full automation system 구현이 가능하기도 하다.


 

728x90