웹·데스크톱·주피터에서 실행되는 경량 클라우드 네이티브 GIS 플랫폼
GeoLibre는 웹, 데스크톱, 모바일, Jupyter 환경에서 로컬 데이터를 유지한 채 지리공간 데이터를 시각화·탐색·분석할 수 있는 오픈소스 GIS 플랫폼이다.
TL;DR
GeoLibre는 React·TypeScript 기반의 클라우드 네이티브 GIS 플랫폼으로 동일한 코드베이스로 웹, 데스크톱(Tauri), Android 네이티브 및 Jupyter 위젯을 제공해 설치·서버 의존도를 낮춘다. 브라우저 내 DuckDB-WASM Spatial과 Pyodide 기반 엔진을 통해 로컬에서 공간 SQL과 GeoPandas 유사 처리를 수행하며 옵션으로 Python FastAPI 사이드카와 외부 모델 서버를 연결해 무거운 래스터 작업과 AI 세그멘테이션을 오프로드할 수 있다. 광범위한 입력 포맷, 실시간 스타일링·라벨링·속성 테이블, 플러그인 확장성 및 오프라인 프리캐시 기능을 통해 대화형 분석과 현장 배포 워크플로를 지원하지만 일부 고급 변환과 모델 기반 세그멘테이션은 사이드카나 GPU 지원 모델 서버가 필요하다.
주요 기능
- 다양한 플랫폼에서 동일한 작업공간을 실행하고 데스크톱 Tauri, 웹 브라우저, Android 네이티브, PWA 및 Jupyter 위젯으로 배포할 수 있다. 사용자 인터페이스는 반응형으로 작은 화면에서 메뉴와 패널을 오버레이로 전환해 터치 환경을 지원한다. 프로젝트 파일은 .geolibre.json으로 저장되어 편리하게 내보내기와 임베드가 가능하다.
- 브라우저 내 DuckDB-WASM Spatial을 사용해 공간 SQL을 실행하고 로컬 파일과 원격 URL을 범위 요청으로 스트리밍해 대용량 데이터를 전체 다운로드 없이 쿼리할 수 있다. SQL Workspace는 자동 완성과 샘플 쿼리를 제공하며 쿼리 결과를 맵 레이어로 추가하거나 내보낼 수 있다. 여러 쿼리 결과 레이어를 동시에 관리할 수 있다.
- 광범위한 파일 및 서비스 포맷을 지원해 GeoJSON, GeoParquet, FlatGeobuf, Shapefile, KML/KMZ, GPX, MBTiles, PMTiles, COG, GeoTIFF, ArcGIS 서비스, WMS/WFS, 3D Tiles, I3S, glTF/GLB와 같은 입력을 직접 추가할 수 있다. 드래그 앤 드롭과 샘플 데이터 드롭다운을 통해 빠르게 레이어를 불러올 수 있다. 대규모 벡터는 클라이언트 측 벡터 타일링으로 렌더링해 성능을 유지한다.
- 브라우저에서 실행 가능한 벡터·래스터 처리 도구와 화이트박스(Whitebox) 툴을 포함한 처리 메뉴를 제공하며 일부 무거운 작업은 선택적 Python FastAPI 사이드카로 오프로드한다. 사이드카는 변환, rasterio 기반 래스터 처리, 모델 서버 프록시와 같은 기능을 제공한다. Pyodide 기반의 브라우저 파이썬 엔진을 통해 서버 없이도 GeoPandas 스타일 연산을 실행할 수 있다.
- 플러그인 아키텍처로 외부 플러그인을 업로드하거나 번들 플러그인을 빌드 시 포함해 추가 기능을 확장할 수 있다. 플러그인은 앱의 deck.gl 인스턴스에 렌더링하거나 MapLibre 컨트롤을 등록할 수 있다. 플러그인 템플릿과 문서가 제공되어 외부 개발자가 호환성 있게 기능을 추가할 수 있다.
어떻게 동작하는가
GeoLibre의 프런트엔드는 React와 TypeScript로 작성되어 MapLibre GL JS를 통해 지도 렌더링을 수행하고 Tauri v2가 데스크톱 및 모바일 네이티브 번들을 생성한다. 브라우저 내 공간 쿼리는 DuckDB-WASM Spatial을 통해 처리되며 대용량 원격 파일은 HTTP range 요청으로 스트리밍되어 전체 다운로드를 건너뛴다. 무거운 변환·래스터 처리·머신러닝 추론 등은 선택적 Python FastAPI 사이드카와 외부 모델 서버로 오프로드하도록 설계되어 클라이언트-사이드와 서버측 처리를 조합해 성능과 로컬 프라이버시를 균형시킨다.
해결 문제
GeoLibre는 데스크톱 설치나 서버 없이 브라우저에서 대화형 GIS 작업을 수행할 수 없던 문제를 해결한다. 브라우저 내에서 DuckDB-WASM과 Pyodide 같은 WebAssembly 기반 엔진을 활용해 공간 SQL과 일부 파이썬 기반 처리를 로컬에서 수행할 수 있게 한다. 또한 동일 코드베이스로 데스크톱, 모바일, 웹, Jupyter 임베드를 제공해 도구 간 전환 없이 동일한 작업공간과 프로젝트 파일을 유지할 수 있다.
지금 주목받는 이유
GeoLibre는 다중 플랫폼 지원과 브라우저 내 공간 SQL, Jupyter 위젯 임베드, 풍부한 파일 포맷 지원을 조합해 실무 GIS 워크플로를 로컬 환경에서 가능하게 만든다는 점에서 주목을 받는다. README에 명시된 대규모 기능 집합과 플러그인 시스템, 그리고 PyPI·Conda·스토어 배포 채널을 통한 접근성 때문에 개발자와 데이터 과학자 커뮤니티에서 관심을 끌고 있다. 소스 저장소의 스타와 포크 수(레포 메타데이터 기준)가 공개된 관심 지표로서 프로젝트의 채택 가능성을 시사한다.
차별점
- 동일한 프런트엔드 코드베이스로 웹, 데스크톱(Tauri), Android 네이티브 및 Jupyter 위젯을 제공해 배포 및 통합 비용을 줄인다. 이 접근은 플러그인과 번들형 플러그인 폴더를 통해 확장이 가능하며 데스크톱 빌드와 웹 빌드가 동일한 UI를 공유한다. 결과적으로 관리형 서버 없이도 풍부한 GIS 워크플로를 현장 환경에 배포할 수 있다.
- 브라우저 내 DuckDB-WASM Spatial과 Pyodide 기반의 벡터 엔진을 결합해 로컬 공간 SQL과 GeoPandas 스타일 연산을 모두 지원한다. 원격 파일을 HTTP range로 스트리밍하므로 대용량 데이터셋을 전체 다운로드하지 않고도 쿼리와 분석을 수행할 수 있다. 이 방식은 데이터의 로컬 유지와 프라이버시 요구가 있는 워크플로에 적합하다.
- 처리 도구 중 일부는 서버 사이드(파이썬 사이드카)로 오프로드할 수 있어 브라우저에서 실행하기 어려운 래스터·변환 작업과 외부 모델 연동을 지원한다. 사이드카는 컨테이너에 번들되어 동일 출처로 프록시되며 로컬 파일 경로 접근을 통해 완전한 변환을 수행한다. 필요에 따라 사이드카를 비활성화해 완전 웹 전용 모드로도 운영할 수 있다.
사용 사례
- 연구자나 교육 환경에서 설치 없이 브라우저 또는 Jupyter 노트북에서 공간 데이터 시각화와 분석 파이프라인을 실행하는 데 유용하다. 노트북 임베디드 UI를 통해 코드와 대화형 맵을 동일 환경에 두고 상태를 양방향으로 동기화할 수 있다. 교육용 샘플 쿼리와 예제가 제공되어 학생이 바로 실습할 수 있다.
- 현장 조사 또는 오프라인 준비가 필요한 현업 사용자는 데스크톱 앱이나 PWA로 맵 타일과 프로젝트를 사전 캐시해 오프라인 상태에서도 작업을 계속할 수 있다. 필드 수집 도구와 사용자 정의 폼을 이용해 GPS로 포인트·라인·폴리곤을 수집하고 로컬 레이어로 저장해 이후 동기화하거나 내보낼 수 있다. 모바일에서 일부 무거운 기능은 숨겨 안정적인 UX를 유지한다.
- 데이터 엔지니어와 플랫폼 운영자는 GeoLibre의 Docker 이미지와 번들된 사이드카를 사용해 내부 네트워크에 호스팅하고, GEOLIBRE_APP_BASE 같은 빌드 인자와 환경 변수로 서브패스 배포와 토큰 관리를 구성할 수 있다. 컨테이너는 사이드카를 동일 출처로 프록시하므로 CORS와 인증 구성을 단순화한다. 프로덕션 환경에서는 TLS 종단과 인증 프록시를 앞단에 두어 보안을 강화할 수 있다.
시작하기
로컬 개발은 Node.js 22+ 환경에서 npm install 후 npm run dev로 시작해 http://localhost:5173에서 지도를 확인할 수 있다. macOS 사용자는 Homebrew Cask로 사전 빌드된 데스크톱 앱을 설치할 수 있고, Docker를 이용하면 컨테이너로 프로덕션 빌드를 실행해 포트 8080에서 서비스하는 방식으로 빠르게 배포할 수 있다. 파이썬 사이드카를 사용하려면 backend/geolibre_server에서 가상환경을 만들고 pip로 extras를 설치한 뒤 uvicorn으로 사이드카를 실행해 브라우저 빌드와 연동하면 된다.
요구사항
- Node.js 22 이상과 Rust 툴체인(rustup)을 요구하며 데스크톱 빌드를 위해서는 플랫폼별 Tauri 전제 조건이 필요하다. Linux 데스크톱 빌드를 위해 webkit2gtk와 libayatana-appindicator 같은 네이티브 라이브러리가 필요하다. Python 사이드카를 사용하려면 별도의 Python 환경과 선택적 라이브러리(GeoPandas, rasterio 등)가 필요하다.
4.5k
Stars
457
Forks
+215
Trending
1
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.