REMOTE SENSING

Streamlit(스트림릿)으로 Google Earth Engine 웹 앱 배포하기

유병혁 2023. 12. 28. 06:39

안녕하세요? 이번  글은 Streamlit(스트림릿)으로 Google Earth Engine 웹 앱 배포하는 방법을 정리해 보겠습니다. Streamlit(https://streamlit.io/)은 머신러닝 및 데이터 과학을 위한 사용자 웹 앱을 쉽게 만들고 공유할 수 있게 해주는 오픈소스 Python 라이브러리입니다. 여기서는 Streamlit Cloud를 통해 GEE 웹 앱을 배포해 보겠습니다.

동영상 출처: https://streamlit.io/cloud

먼저 실습을 위해 geemap(지맵)의 개발자, 추생 우 박사님(Dr. Qiusheng Wu)의 "geemap-apps" GitHub 저장소(https://github.com/giswqs/geemap-apps)에 접속해 보겠습니다. 해당 저장소를 내 GitHub 계정으로 복제(Fork)해 보겠습니다. 아래와 같이 "Fork" 버튼을 클릭합니다.

아래와 같이 내 GitHub 계정에 "geemap-apps"라는 이름으로 저장소를 복제합니다.

 

이제 Streamlit Cloud 계정을 내 GitHub 계정의 "geemap-apps" 저장소에 직접 연결하면, 저장소 내 Python 스크립트(*.py)에서 직접 앱을 시작할 수 있습니다. Streamlit Community Cloud(https://share.streamlit.io/)에 접속하고 로그인을 진행합니다. GitHub 계정으로 로그인을 진행합니다.

 

로그인 후 아래와 같은 같은 화면을 접할 수 있는데요, 화면 상단 우측에 있는 "Settings(설정)"를 한번 클릭해 보겠습니다. 

 

Workspace settings에서 Limits을 보시면 앱 당 리소스는 1GB, 공개 앱은 제한이 없는 것을 확인하실 수 있습니다. 이제 앱을 생성해 보겠습니다.

 

"New app"을 클릭합니다. 기본 실행은 "Use existing repo"입니다.

 

"Deploy an app" 화면이 표시됩니다.

 

"Repository"에서 앞서 복제한 "geemap-apps"를 지정합니다. 해당 저장소에 "streamlit_app.py"라는 파일이 존재하지 않아 오류 메시지가 표출되는데요, 실제 존재하는 "app.py"로 정정해 주시면 되겠습니다.

 

 "App URL (Optional)"은 예로 "foss4g.streamlit.app"으로 정의해 보겠습니다. 다음으로 "Advanced settings"를 클릭합니다.

 

"Secrets"에서는 TOML 형식을 사용하여 사용자 앱에 환경변수 및 기타 보안을 설정할 수 있습니다. 여기서는 GEE에서 제공하는 "credentials(크리덴셜, 자격증명)" 파일 정보가 필요합니다. 관련해서는 아래 글을 참고하시면 됩니다.

 

Google Earth Engine(구글어스엔진): credentials 파일 확인하는 법

안녕하세요? 이번 글은 Google Earth Engine(구글어스엔진, GEE)에서 "credentials(크리덴셜, 자격증명)" 파일을 확인하는 방법을 간략히 정리해 보겠습니다. 후속으로 "Streamlit(스트림릿)으로 Google Earth Engin

foss4g.tistory.com

 

아래와 같이 Secrets에 EARTHENGINE_TOKEN 환경변수를 추가해 줍니다. 삼중 겹따옴표로 Earth Engine 토큰 정보(credentials 파일 텍스트 전체 내용)"을 감싸주시면 됩니다. 이제 준비되었으면 "Deploy!" 버튼을 클릭합니다!

EARTHENGINE_TOKEN = """Earth Engien 토큰(credentials 파일 텍스트)"""

 

이제 "geemap-apps/requirements.txt"에 지정된 종속성을 설치하고 앱이 배포(종속성 수에 따라 약간의 시간이 소요)됩니다. 배포 이후에는 앞서 정의한 App URL로 누구나 접속해보실 수 있습니다.

 

추생 우 박사님이 제공한 "Earth Engine Web App" 화면입니다. 이제 app.py를 수정해서 나만의 웹 앱을 배포해볼 수 있습니다. 여기까지 Streamlit(스트림릿)으로 Google Earth Engine 웹 앱 배포하는 방법을 정리해 봤습니다.