libgd-gis의 핵심적인 발전은 다음과 같은 주요 기능 추가를 통해 이루어졌습니다.
1. 스타일 엔진 (Style Engine)
-
YAML 기반의 스타일 정의를 통해 색상 팔레트, 스트로크 및 채우기 레이어, 선 계층 구조, 시각적 가중치 등을 정밀하게 제어할 수 있습니다.
-
이를 통해 원시 GIS 데이터를 시각적으로 명확하고 가독성 높은 지도로 변환하여, 도쿄의 강, 파리의 공원, 도로망 등이 명확하게 표현됩니다.
2. 레이어드 GeoJSON (Layered GeoJSON)
-
모든 데이터를 단일 스트림으로 처리하는 대신, GeoJSON을
:roads,:rail,:water,:landuse,:points와 같은 의미론적 레이어로 분류합니다. -
이는 올바른 그리기 순서, 레이어별 스타일링, 정밀한 라벨 배치(예: 강은 다리 아래로 흐르고, 철도는 도로 위에 위치)를 가능하게 합니다.
3. map.image 드로잉 API
-
모든 지도 뒤에 있는 원시 GD 캔버스에 직접 접근할 수 있는 API를 제공합니다.
-
이를 통해 GIS 출력 위에 UI 요소, 배너, 오버레이 등을 직접 그릴 수 있어 도시 제목, 헤더, 워터마크, 브랜딩 등을 지도에 통합할 수 있습니다.
-
이제 GIS와 그래픽 디자인이 동일한 Ruby 파이프라인 내에서 공존합니다.
4. 라벨링 시스템 (Labeling System)
-
새로운 라벨링 엔진은 지오메트리 유형을 이해하여
LineString(도로, 강)에는 곡선을 따라가는 텍스트를,Polygon(공원, 지역)에는 중앙 라벨을,Point에는 아이콘과 이름을 제공합니다. -
이는 강, 공원, 지역, 관심 지점 등에 대해 가독성 높고 겹치지 않는 라벨을 생성하며, 도쿄와 같은 밀집된 도시에서도 효과적으로 작동합니다.
이러한 모든 기능은 OpenStreetMap GeoJSON 데이터와 ruby-libgd를 기반으로 libgd-gis를 통해 순수 Ruby로 구현되었습니다. 이는 Ruby가 이제 진정한 래스터 GIS 엔진을 보유하게 되었음을 의미하며, 과학적 및 저널리즘적 지도 제작, 자동 지도 생성, 고해상도 내보내기, CI 파이프라인 내 GIS 통합, 데이터 기반 시각화 등 다양한 고급 응용 프로그램을 가능하게 합니다.