필사 모드: 지오스페이셜 스택 2026 완벽 가이드 — PostGIS · MapLibre · Mapbox · deck.gl · Kepler.gl · Protomaps · Overture Maps · H3 · S2 심층 분석
한국어> "지도는 단순한 시각화 도구가 아니라, 좌표·시간·메타데이터가 결합된 가장 풍부한 데이터 구조다. 2026년의 지오스페이셜은 더 이상 GIS 전문가만의 영역이 아니다." — Overture Maps Foundation, 2025 Annual Report
지오스페이셜(Geospatial) 스택은 2020년대 초반까지만 해도 ESRI ArcGIS, Mapbox, Google Maps 세 회사가 지배하던 영역이었지만, 2022년 Overture Maps 발족, 2023년 Protomaps와 PMTiles 부상, 2024년 deck.gl의 Linux Foundation 이관을 거치며 빠르게 오픈소스화되었습니다. 2026년 5월 현재, 모던 지오스페이셜 스택은 데이터 소스·렌더링·DB·인덱스·라우팅·지오코딩 여섯 레이어로 분화된 풍부한 생태계입니다.
이 글에서는 OpenStreetMap, Overture Maps, Mapbox, Google Maps Platform, MapLibre GL JS, Mapbox GL JS v3, deck.gl, Kepler.gl, Leaflet, OpenLayers, CesiumJS, PostGIS 3.5, DuckDB Spatial, H3, S2, Geohash, OSRM, Valhalla, GraphHopper, pgRouting, Nominatim, Pelias, Photon, PMTiles, MVT, Cesium 3D Tiles, 그리고 한국·일본의 지역 지도 데이터까지 한 번에 정리합니다.
1. 2026년 지오스페이셜 스택 지도 — 6 Layers
지오스페이셜 시스템은 역할에 따라 여섯 개의 큰 레이어로 나눌 수 있습니다.
| 레이어 | 대표 제품 | 역할 |
|---|---|---|
| Data Source | OpenStreetMap, Overture Maps, Mapbox, Google, Apple, HERE, TomTom | 도로·건물·POI 같은 원천 지도 데이터 |
| Tile Format | MVT, PMTiles, XYZ, WMTS, Cesium 3D Tiles | 데이터를 클라이언트에 전달하는 포맷 |
| Tile Server | TileServer GL, MapTiler, Stadia Maps, OpenMapTiles, GeoServer | 타일을 생성·호스팅 |
| Renderer | MapLibre GL JS, Mapbox GL v3, deck.gl, Leaflet, OpenLayers, CesiumJS | 브라우저에서 실제로 그리는 라이브러리 |
| Spatial DB & Index | PostGIS, DuckDB Spatial, SpatiaLite, H3, S2, Geohash | 좌표 기반 검색·조인·집계 |
| Service | OSRM, Valhalla, Nominatim, pgRouting, Mapbox Directions | 라우팅·지오코딩·매트릭스 같은 부가 기능 |
데이터 소스는 다시 **오픈(OpenStreetMap, Overture Maps)** 과 **상용(Google, Apple, HERE, TomTom, Mapbox)** 으로 나뉘고, 렌더러는 **2D 벡터(MapLibre, Mapbox GL)**, **2D 라스터(Leaflet)**, **WebGL 빅데이터(deck.gl, Kepler.gl)**, **3D Globe(CesiumJS)** 로 분화됩니다. 어떤 라이브러리를 선택하느냐는 보통 "데이터 양 × 인터랙션 × 라이선스" 세 축으로 결정됩니다.
2026년 흐름의 핵심은 **벤더 락인 탈출** 입니다. 2020년 Mapbox GL JS v2가 BSD-3에서 독점 라이선스로 전환된 사건 이후, MapLibre 포크가 사실상 표준이 되었고, PMTiles는 타일 서버 인프라 자체를 정적 파일 하나로 대체했습니다.
2. OpenStreetMap — 모든 오픈 지도의 뿌리
OpenStreetMap(OSM, `openstreetmap.org`)은 2004년 Steve Coast가 시작한 위키 형태의 지도 데이터베이스로, 2026년 현재 1,100만 명 이상의 등록 매퍼와 100억 개 이상의 노드를 가집니다. 라이선스는 ODbL(Open Database License) — 데이터 사용은 자유롭지만 Share-Alike 조건이 있어 파생 데이터셋도 ODbL로 공개해야 합니다.
OSM의 핵심 데이터 모델은 세 가지로 단순합니다.
- **Node**: 위도·경도 단일 점 (예: 카페 위치)
- **Way**: 노드의 순서 있는 리스트 (도로, 건물 외곽선)
- **Relation**: 노드·웨이의 그룹 (지하철 노선, 행정구역)
각 객체는 키-값 쌍의 태그를 가집니다. 예를 들어 도로는 `highway=primary`, 건물은 `building=residential`, 카페는 `amenity=cafe` 같은 태그로 분류됩니다. 태그 스키마는 자유로워서 수만 개의 키가 존재하지만, 핵심 200여 개를 알면 대부분의 쿼리가 가능합니다.
OSM 데이터를 받는 방법은 세 가지입니다. **planet.osm** 전체(약 1.5TB pbf 압축 후 90GB)를 받거나, **Geofabrik**(`download.geofabrik.de`)에서 국가/지역 단위 추출본을 받거나, **Overpass API**(`overpass-api.de`)로 쿼리하는 방식입니다. 대용량 분석은 보통 pbf를 받아 PostGIS에 import한 뒤 SQL로 다룹니다.
OSM의 가장 큰 약점은 데이터 품질 편차입니다. 서울·도쿄·런던 같은 대도시는 거의 완벽하지만, 한국 지방 도시나 동남아 일부는 도로명 누락이 흔합니다. 이 때문에 상용 서비스에서는 Overture Maps나 Mapbox 같은 보강 소스를 같이 씁니다.
3. Overture Maps — Big Tech 컨소시엄의 오픈 지도
Overture Maps(`overturemaps.org`)는 2022년 12월 AWS, Microsoft, Meta, TomTom 4개사가 발족하고 2023년 Esri가 합류한 Linux Foundation 산하 프로젝트입니다. 목적은 "OSM의 자유로움 + 상용 지도의 품질 = 완전 오픈한 기반 지도 데이터"를 만드는 것입니다. 2024년 4월 첫 GA 릴리스 이후 분기마다 새 릴리스를 내고 있고, 2026년 5월 현재 v2026.04.30이 최신입니다.
Overture는 다섯 개의 테마로 데이터를 구성합니다.
- **Places**: POI(Point of Interest) — 식당·상점·공공시설 약 5,000만 개
- **Buildings**: 전 세계 건물 풋프린트 약 28억 개
- **Transportation**: 도로·철도 네트워크 (OSM 기반 + 보강)
- **Base**: 행정구역, 토지피복, 인프라
- **Addresses**: 주소 데이터 (2024년 추가)
데이터 포맷은 **GeoParquet** — Apache Parquet의 지오스페이셜 확장. 분산 쿼리 엔진(DuckDB, BigQuery, Athena)에서 직접 조회할 수 있고, S3에 호스팅된 파일을 partial-read로 받을 수 있어 페타바이트급 데이터를 효율적으로 다룹니다.
-- DuckDB로 Overture Maps Places 직접 쿼리 (다운로드 없이)
INSTALL spatial;
INSTALL httpfs;
LOAD spatial;
LOAD httpfs;
SELECT
names.primary AS name,
categories.primary AS category,
ST_AsText(geometry) AS location
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-04-30.0/theme=places/type=place/*')
WHERE bbox.xmin BETWEEN 126.9 AND 127.1
AND bbox.ymin BETWEEN 37.5 AND 37.6
AND categories.primary = 'restaurant'
LIMIT 100;
Overture의 가장 큰 가치는 **GERS(Global Entity Reference System)** 입니다. 모든 객체에 영구 ID를 부여해 OSM, 상용 데이터, Wikipedia 같은 이종 데이터셋을 연결할 수 있습니다. 2026년 들어 카카오모빌리티, Mapbox, Esri 같은 상용 회사들도 자사 데이터에 GERS ID를 부여하기 시작했습니다.
4. Mapbox vs Google Maps Platform — 상용 지도 양강
상용 지도 시장은 사실상 Mapbox와 Google Maps Platform 양강 구도입니다. 2026년 가격·기능 차이를 정리하면 다음과 같습니다.
| 항목 | Mapbox | Google Maps Platform |
|---|---|---|
| 무료 한도 | 월 5만 회 지도 로드 | 월 $200 크레딧 (약 28,500 로드) |
| 추가 단가 | $0.50 / 1,000 로드 | $7 / 1,000 로드 (Dynamic Maps) |
| 스타일 커스터마이즈 | Studio로 100% 자유 | Cloud-based Style만 부분적 |
| 오프라인 | Mapbox SDK 전용 | 제한적 |
| 위성 이미지 | Mapbox Satellite | Google Satellite (Photorealistic 3D) |
| 라우팅 | Directions API | Routes API |
| 지오코딩 | Geocoding API | Geocoding API |
| 자율주행 데이터 | Mapbox AVS | Google HD Maps |
**Mapbox**(`mapbox.com`)는 2010년 창업, 2020년 GL JS v2를 독점 라이선스로 전환했지만 데이터 카탈로그와 Studio 디자인 도구는 여전히 업계 최고 수준입니다. 2024년 Mapbox GL JS v3가 출시되어 3D 지형, 라이팅, 모델 임포트가 추가되었고, 2025년 v3.10에서 PMTiles와 deck.gl 직접 통합이 들어왔습니다.
**Google Maps Platform**(`mapsplatform.google.com`)은 가격이 비싸지만 데이터 품질과 Street View 같은 차별화 자산이 강력합니다. 2024년 출시된 **Photorealistic 3D Tiles**는 Cesium 3D Tiles 표준을 따르는 글로벌 3D 지형으로, CesiumJS·deck.gl·MapLibre 어디서나 렌더할 수 있습니다.
두 회사 모두 2024년 이후 가격 인상이 이어지고 있어, **PMTiles + MapLibre + Overture** 조합으로 자체 호스팅하는 곳이 빠르게 늘고 있습니다.
5. MapLibre GL JS — Mapbox에서 분기된 오픈 표준
MapLibre GL JS(`maplibre.org`)는 2020년 12월 Mapbox GL JS v1.13의 마지막 BSD-3 버전에서 포크된 오픈소스 프로젝트입니다. 2026년 현재 v5.0.0이 최신이고, AWS, Meta, Microsoft, Stadia, MapTiler가 핵심 스폰서입니다.
API는 Mapbox GL JS와 거의 동일해 마이그레이션이 단순합니다. `import mapboxgl from 'mapbox-gl'` 한 줄을 `import maplibregl from 'maplibre-gl'`로 바꾸고, 상용 Mapbox 스타일/타일 URL을 자체 또는 오픈 타일 서비스 URL로 바꾸면 끝납니다.
const map = new maplibregl.Map({
container: 'map',
style: 'https://api.maptiler.com/maps/streets-v2/style.json?key=YOUR_KEY',
center: [126.9780, 37.5665], // 서울 시청 LngLat
zoom: 12,
pitch: 45,
bearing: -17.6,
})
// 3D 건물 레이어 추가
map.on('load', () => {
map.addLayer({
id: '3d-buildings',
source: 'openmaptiles',
'source-layer': 'building',
type: 'fill-extrusion',
minzoom: 14,
paint: {
'fill-extrusion-color': '#aaa',
'fill-extrusion-height': ['get', 'render_height'],
'fill-extrusion-base': ['get', 'render_min_height'],
'fill-extrusion-opacity': 0.8,
},
})
})
MapLibre의 강점은 **완전한 오픈소스, API 키 없는 자체 호스팅 가능, Mapbox GL과 호환** 세 가지입니다. 약점은 **Mapbox Studio 같은 디자인 도구 부재** 와 **모바일 Native SDK가 Mapbox보다 한 발 뒤처짐** 입니다. 2025년 출시된 MapLibre Native v11로 iOS/Android 격차가 많이 줄어들었습니다.
6. Mapbox GL JS v3 — 3D 라이팅과 모델 임포트
Mapbox GL JS v3는 2023년 9월 발표된 메이저 업데이트로, 단순 2D 벡터 지도를 넘어 게임 엔진에 가까운 3D 렌더링을 지원합니다. 2026년 5월 현재 v3.10이 최신입니다.
v3의 새로운 기능 핵심은 다음과 같습니다.
- **Mapbox Standard 스타일**: 시간대·날씨에 따라 동적으로 변하는 베이스맵
- **Dynamic Lighting**: 태양 위치·시간을 반영한 그림자와 라이팅
- **3D Models**: glTF/glb를 지도 위에 배치 (POI 마커를 3D 모델로 교체)
- **Globe Projection**: 줌 아웃 시 자동으로 구체 투영
- **Atmospheric Effects**: 안개·공기 원근·별 같은 환경 효과
- **Custom Layers (WebGL/WebGPU)**: deck.gl·Three.js 코드 직접 삽입
라이선스 비용은 GL JS v3 사용 시 월 5만 로드 무료, 이후 $0.50/1,000 로드 — 이전 v2와 동일합니다. 단, Mapbox Standard 스타일은 별도 추적이 들어가 자체 호스팅이 불가능합니다.
MapLibre vs Mapbox GL v3 선택 기준은 명확합니다. **상용 사용량이 적고 디자인 자유도가 중요** → Mapbox, **사용량이 크거나 자체 호스팅이 중요** → MapLibre. 게임/AR 같은 시각 효과 중심이면 Mapbox, 인프라 중심이면 MapLibre가 일반적인 답입니다.
7. deck.gl — WebGL 대규모 데이터 시각화
deck.gl(`deck.gl`)은 Uber가 2016년 오픈소스로 발표하고 2022년 Linux Foundation에 이관한 WebGL 기반 지오스페이셜 시각화 라이브러리입니다. 2026년 5월 v9.1이 최신이고, 핵심 강점은 **수백만~수억 개 포인트를 60fps로 렌더링** 하는 GPU 최적화입니다.
deck.gl의 핵심 개념은 **Layer** — `ScatterplotLayer`, `LineLayer`, `HexagonLayer`, `GridLayer`, `H3HexagonLayer`, `TripsLayer`, `Tile3DLayer` 같은 80여 개 빌트인 레이어가 있고, 모두 GPU 가속됩니다. 다른 지도 라이브러리와 달리 deck.gl 자체는 베이스맵을 그리지 않고, MapLibre/Mapbox/Google Maps 위에 오버레이로 동작합니다.
// deck.gl + MapLibre로 100만 개 포인트 시각화
const map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json',
center: [-122.4194, 37.7749],
zoom: 11,
})
const deck = new Deck({
canvas: 'deck-canvas',
initialViewState: {
longitude: -122.4194,
latitude: 37.7749,
zoom: 11,
pitch: 30,
},
controller: true,
layers: [
new ScatterplotLayer({
id: 'taxi-pickups',
data: 'https://example.com/taxi-1m.json',
getPosition: (d) => [d.lon, d.lat],
getRadius: 50,
getFillColor: [255, 140, 0, 180],
pickable: true,
}),
],
})
deck.gl의 또 다른 강점은 **React 통합**(`@deck.gl/react`)과 **Jupyter 통합**(`pydeck`)입니다. 데이터 과학자는 Python으로 prototyping하고, 그 결과를 그대로 웹앱에 옮길 수 있습니다. 2024년 추가된 WebGPU 백엔드는 WebGL 대비 2~3배 빠른 렌더 성능을 보입니다.
8. Kepler.gl — deck.gl 위의 노코드 UI
Kepler.gl(`kepler.gl`)은 Uber가 2018년 발표한 노코드 지오스페이셜 분석 도구로, deck.gl을 엔진으로 하는 React 애플리케이션입니다. 2026년 현재 v3.1이 최신이며, 분석가가 코드 없이 데이터를 드래그&드롭으로 시각화할 수 있습니다.
지원 데이터 포맷은 CSV, JSON, GeoJSON, Shapefile, KML, Arrow, GeoParquet 등 거의 모든 표준 포맷입니다. 한 번 업로드하면 자동으로 컬럼 타입을 추론하고, 적절한 레이어 타입(Point, Heatmap, Hexbin, Arc, Line, Polygon)을 제안합니다.
Kepler의 차별점은 **시간 애니메이션**입니다. 타임스탬프가 있는 데이터를 업로드하면 자동으로 타임라인 UI가 생기고, 시간에 따른 변화를 영상처럼 재생할 수 있습니다. 교통량·재난·전염병 데이터 분석에 사실상 표준 도구입니다.
자체 호스팅이 가능하고(`@kepler.gl/react`로 임베드), Uber가 운영하는 무료 호스팅(`kepler.gl/demo`)도 있습니다. 단, 호스팅 버전은 데이터가 브라우저에만 머무르고 업로드되지 않아 민감한 데이터에도 안전합니다.
9. Leaflet — 가장 단순하고 가장 오래된 웹 지도
Leaflet(`leafletjs.com`)은 2011년 Vladimir Agafonkin이 만든 JavaScript 지도 라이브러리로, 2026년 v1.9.4가 안정 버전입니다. 거의 15년간 거의 변하지 않았고, 그 단순함과 안정성으로 여전히 광범위하게 쓰입니다.
Leaflet은 **라스터 타일**(XYZ, TMS, WMTS)을 중심으로 동작합니다. 벡터 타일 지원은 플러그인(`leaflet.vectorgrid`)으로 가능하지만 1급 시민이 아니어서, 고해상도 줌이나 동적 스타일 변경이 중요하면 MapLibre를 쓰는 게 맞습니다.
const map = L.map('map').setView([37.5665, 126.9780], 13)
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'OpenStreetMap',
}).addTo(map)
L.marker([37.5665, 126.9780])
.addTo(map)
.bindPopup('서울 시청')
.openPopup()
Leaflet의 강점은 **번들 크기 약 40KB**, **API 단순함**, **풍부한 플러그인 생태계**(1,200개 이상)입니다. 단점은 GPU 가속이 없어 대용량 데이터(1만 개 이상 포인트)에서 느려진다는 점. 정부·공공·소규모 비즈니스 지도는 여전히 Leaflet이 답입니다.
10. OpenLayers — 엔터프라이즈 OGC 표준 지원
OpenLayers(`openlayers.org`)는 2006년 MetaCarta가 시작한 JavaScript 지도 라이브러리로, 2026년 v10.5가 최신입니다. Leaflet보다 무겁지만(약 250KB) OGC(Open Geospatial Consortium) 표준을 가장 폭넓게 지원해 정부·공공·엔터프라이즈 GIS에서 사실상 표준입니다.
지원 포맷은 WMS, WMTS, WFS, WCS, XYZ, TMS, GeoJSON, TopoJSON, KML, GML, GPX, MVT — 거의 모든 지오스페이셜 표준. 좌표계도 EPSG 코드 단위로 자유롭게 변환 가능합니다(`proj4js` 내장).
const map = new Map({
target: 'map',
layers: [
new TileLayer({ source: new OSM() }),
new TileLayer({
source: new TileWMS({
url: 'https://www.gis.go.kr/wms',
params: { LAYERS: 'cadastral', TILED: true },
}),
}),
],
view: new View({
center: fromLonLat([126.9780, 37.5665]),
zoom: 14,
projection: 'EPSG:3857',
}),
})
OpenLayers는 GeoServer, MapServer 같은 OGC 서버와의 짝꿍입니다. 한국 V-World, 일본 GSI, 유럽 INSPIRE 같은 정부 GIS 포털은 거의 OpenLayers + GeoServer 조합입니다.
11. CesiumJS — 3D Globe와 지구 시각화
CesiumJS(`cesium.com/platform/cesiumjs`)는 2011년 AGI가 만든 3D 지구 시각화 라이브러리로, 2026년 v1.130이 최신입니다. NASA, 항공우주, 자율비행, 디지털 트윈 분야에서 표준입니다.
핵심은 **Cesium 3D Tiles** — 2017년 Cesium이 제안하고 2019년 OGC 표준이 된 3D 지오스페이셜 데이터 포맷. 도시 전체의 3D 빌딩, 점군(Point Cloud), 메시(Mesh)를 LoD(Level of Detail)로 스트리밍합니다. Google Photorealistic 3D Tiles, Bentley, Esri ArcGIS 모두 이 포맷을 따릅니다.
const viewer = new Viewer('cesiumContainer', {
terrainProvider: await createWorldTerrainAsync(),
})
// Google Photorealistic 3D Tiles 로드
const tileset = await viewer.scene.primitives.add(
await Cesium3DTileset.fromIonAssetId(2275207)
)
viewer.camera.flyTo({
destination: Cartesian3.fromDegrees(139.7670, 35.6814, 1500),
})
CesiumJS는 베이스맵을 직접 그리지 않고, Cesium ion(`cesium.com/ion`) 호스팅 서비스나 자체 3D Tiles 서버를 사용합니다. 무료 한도가 있지만 대용량 사용은 비싸므로, 자체 호스팅이 보통입니다. 디지털 트윈 시장이 커지면서 2025년부터 시장 점유율이 급격히 늘었습니다.
12. PostGIS 3.5 — 지오스페이셜 DB의 표준
PostGIS(`postgis.net`)는 1998년 Refractions Research가 만든 PostgreSQL용 공간 확장으로, 2026년 5월 현재 v3.5가 최신입니다. 지오스페이셜 DB 시장에서 **사실상 표준** — Mapbox, Foursquare, 카카오모빌리티, 우버 모두 PostGIS를 어딘가에서 씁니다.
PostGIS는 OGC SQL/MM 표준을 따르므로 함수 이름이 표준화되어 있습니다. 주요 함수는 다음과 같습니다.
-- 1) 두 점 사이 거리 (미터 단위, EPSG:4326)
SELECT ST_Distance(
ST_GeographyFromText('POINT(126.978 37.5665)'), -- 서울 시청
ST_GeographyFromText('POINT(139.767 35.6814)') -- 도쿄역
); -- 약 1,158,300 미터
-- 2) 폴리곤 내부 포인트 찾기
SELECT * FROM poi
WHERE ST_Within(
geom,
ST_MakeEnvelope(126.9, 37.5, 127.1, 37.6, 4326)
);
-- 3) 가장 가까운 N개 (KNN 인덱스 사용)
SELECT name, ST_Distance(geom, target) AS distance
FROM cafes
ORDER BY geom <-> ST_GeomFromText('POINT(126.978 37.5665)', 4326)
LIMIT 10;
-- 4) 클러스터링 (DBSCAN)
SELECT
ST_ClusterDBSCAN(geom, eps := 100, minpoints := 5) OVER () AS cluster_id,
name
FROM incidents;
PostGIS의 강력함은 **GIST 인덱스** — R-tree 변형으로 공간 쿼리를 O(log n)으로 처리합니다. 한 줄짜리 `CREATE INDEX idx_geom ON poi USING GIST (geom)`으로 100만 행 테이블의 공간 쿼리도 1ms 이내로 떨어집니다.
3.5의 새 기능은 **벡터 타일 직접 생성**(`ST_AsMVT`), **레스터 클라우드 최적화**, **GeoParquet read/write**입니다. 데이터베이스에서 직접 MVT 타일을 만들어 클라이언트에 보내면 별도 타일 서버 없이 동적 지도가 가능합니다.
13. DuckDB Spatial — 분석용 임베디드 공간 DB
DuckDB Spatial(`duckdb.org/docs/extensions/spatial`)은 2023년 출시된 DuckDB의 공간 확장으로, 2026년 v1.4 기준 가장 빠르게 성장하는 GIS 도구입니다. PostGIS와 동일한 OGC 함수를 거의 모두 지원하면서, **단일 파일 임베디드 + Parquet/GeoParquet 직접 쿼리** 라는 차별점이 있습니다.
DuckDB Spatial의 킬러 유즈케이스는 **Overture Maps 같은 대용량 GeoParquet을 다운로드 없이 쿼리**입니다.
-- DuckDB로 Overture Maps와 자체 데이터 조인 (둘 다 S3에서 직접)
INSTALL spatial;
INSTALL httpfs;
LOAD spatial;
LOAD httpfs;
WITH my_stores AS (
SELECT id, name, lon, lat
FROM read_csv('s3://my-bucket/stores.csv')
),
nearby_places AS (
SELECT
s.id AS store_id,
p.names.primary AS poi_name,
p.categories.primary AS category,
ST_Distance_Sphere(
ST_Point(s.lon, s.lat),
ST_GeomFromWKB(p.geometry)
) AS distance_m
FROM my_stores s,
read_parquet('s3://overturemaps-us-west-2/release/2026-04-30.0/theme=places/*') p
WHERE p.bbox.xmin BETWEEN s.lon - 0.01 AND s.lon + 0.01
AND p.bbox.ymin BETWEEN s.lat - 0.01 AND s.lat + 0.01
)
SELECT * FROM nearby_places WHERE distance_m < 500;
DuckDB Spatial은 분석가의 노트북에서 페타바이트급 데이터를 쿼리할 수 있는 **데이터 과학자의 PostGIS** 입니다. 트랜잭션·실시간 업데이트가 필요하면 PostGIS, 배치 분석이면 DuckDB가 일반적인 선택입니다.
14. H3 — Uber의 헥사고날 공간 인덱스
H3(`h3geo.org`)는 Uber가 2018년 오픈소스로 발표한 **계층적 헥사고날 공간 인덱스 시스템** 입니다. 지구 표면을 정삼각형 + 헥사곤 122개로 시작해 16단계로 재귀 분할합니다. 2026년 현재 H3 v4.2가 최신이고, 거의 모든 모빌리티/물류 회사가 H3를 씁니다.
H3의 핵심 장점은 **모든 셀이 거의 같은 면적과 거리** — 이웃 셀과의 중심 거리가 동일해 평균·집계 계산이 깨끗합니다. 사각형 그리드와 달리 6각형은 이웃이 6개로 등거리이므로 흐름 분석에도 적합합니다.
각 H3 셀은 64비트 정수로 표현되며, 해상도(0~15)와 위치를 모두 인코딩합니다. 해상도별 평균 면적은 다음과 같습니다.
| Resolution | Avg Hexagon Area | Avg Edge Length | 용도 |
|---|---|---|---|
| 0 | 4.25M km² | 1,107km | 대륙 단위 |
| 5 | 252 km² | 8.5km | 광역시 단위 |
| 7 | 5.16 km² | 1.2km | 동 단위 |
| 9 | 0.105 km² | 174m | 블록 단위 |
| 11 | 2,150 m² | 25m | 건물 단위 |
| 15 | 0.9 m² | 0.5m | 픽셀 단위 |
// 1) 위경도 → H3 셀 ID (해상도 9, ~150m 헥사곤)
const seoulCityHall = latLngToCell(37.5665, 126.9780, 9)
// → '8930e0a0107ffff'
// 2) 셀 경계 좌표 (지도에 그리기)
const boundary = cellToBoundary(seoulCityHall)
// → [[lat, lng], [lat, lng], ...] 6개 꼭짓점
// 3) 주변 1링 (이웃 6개) 가져오기
const neighbors = gridDisk(seoulCityHall, 1)
// 4) 면적 계산
const area = cellArea(seoulCityHall, 'm2')
H3의 진짜 가치는 **공간 집계의 효율성** 입니다. 100만 개 GPS 포인트를 헥사곤별로 집계하려면 `GROUP BY h3_cell` 한 번이면 끝나고, 해상도를 한 단계 줄여 zoom-out 집계도 단순합니다. Uber의 ETA 계산, Foursquare의 방문 빈도 분석, 카카오모빌리티의 수요 예측이 모두 H3 기반입니다.
15. S2 — Google의 쿼드트리 기반 공간 인덱스
S2(`s2geometry.io`)는 Google이 2017년 오픈소스로 공개한 공간 인덱스 시스템으로, 지구를 정육면체에 투영하고 각 면을 쿼드트리로 분할합니다. Google Maps, Google Earth, Niantic의 Pokemon GO/Ingress가 모두 S2 위에 동작합니다.
S2는 H3와 비교해 다음과 같은 특성을 가집니다.
| 특성 | S2 | H3 |
|---|---|---|
| 형태 | 사각형 (쿼드트리) | 헥사곤 |
| 해상도 단계 | 30 (0~30) | 16 (0~15) |
| 셀 크기 변동 | 위도에 따라 다름 | 거의 균일 |
| ID | 64비트 정수 | 64비트 정수 |
| Hilbert curve 정렬 | O | X |
| 이웃 수 | 4 | 6 |
S2의 핵심 강점은 **Hilbert curve 기반 ID** — 인접한 ID는 공간적으로 가까운 셀이라는 보장이 있어 데이터베이스 범위 쿼리(`WHERE s2_id BETWEEN x AND y`)가 효율적입니다. H3는 이 보장이 없어 별도의 R-tree 인덱스가 필요합니다.
게임처럼 좌표를 정수로 다뤄야 하는 환경, 그리고 Google Maps와 호환이 중요한 환경에서는 S2가 답입니다. 그 외 대부분의 데이터 분석은 H3 쪽이 사용 사례가 더 풍부합니다.
16. 라우팅 엔진 — OSRM, Valhalla, GraphHopper, pgRouting
라우팅(Routing)은 "A에서 B까지 최단 경로 찾기"인데, 도로 그래프 규모가 수억 노드라 실시간 계산은 자체 알고리즘 + 전처리가 필수입니다. 2026년 주요 오픈소스 라우팅 엔진은 다음과 같습니다.
| 엔진 | 언어 | 특징 | 라이선스 |
|---|---|---|---|
| OSRM | C++ | Contraction Hierarchies, 가장 빠름 (1ms) | BSD-2 |
| Valhalla | C++ | 멀티모달 (도보·자전거·자동차), 동적 옵션 | MIT |
| GraphHopper | Java | Spring/JVM 친화, 자전거·도보 최적화 | Apache 2.0 |
| pgRouting | C (Postgres) | PostGIS와 같은 DB에서 SQL로 라우팅 | GPL-2 |
| OpenRouteService | Java (GraphHopper fork) | HeiGIT가 운영, 공공 API 제공 | MIT |
**OSRM**(`project-osrm.org`)은 가장 빠른 라우팅 엔진으로, Contraction Hierarchies(CH) 알고리즘으로 전 세계 도로망을 1ms 내에 라우팅합니다. 단점은 옵션이 빈약 — 통행료 회피, 시간대별 교통 같은 커스텀이 어렵습니다.
**Valhalla**(`valhalla.github.io`)는 Mapbox가 2015년 만들고 2021년 Mapzen이 인수, 2024년 다시 오픈소스 커뮤니티로 이관된 라우팅 엔진입니다. 도보·자전거·자동차를 단일 그래프에서 처리하고, 요청 시 동적 옵션(도로 회피, 시간 가중치)이 가능해 모빌리티 회사들이 가장 많이 씁니다.
**pgRouting**(`pgrouting.org`)은 PostGIS 위에서 동작하는 SQL 라우팅 엔진입니다. 빠르진 않지만 자체 도로 데이터에 SQL로 직접 라우팅을 붙일 수 있어, 사내 물류 시스템에서 유용합니다.
-- pgRouting으로 두 노드 사이 최단 경로
SELECT * FROM pgr_dijkstra(
'SELECT id, source, target, cost FROM road_segments',
source_node := 1234,
target_node := 5678,
directed := true
);
17. 지오코딩 — Nominatim, Pelias, Photon
지오코딩(Geocoding)은 "주소 → 좌표" 또는 "좌표 → 주소(역지오코딩)" 변환입니다. 상용 API(Google, Mapbox)는 비싸므로 자체 호스팅이 흔합니다.
**Nominatim**(`nominatim.org`)은 OSM 공식 지오코더로, PostGIS 기반 풀텍스트 검색을 사용합니다. 단순하고 안정적이지만 검색 품질이 약해 "강남역"보다 "강남역 2호선" 같은 풀 텍스트가 더 잘 작동합니다.
**Pelias**(`pelias.io`)는 Mapzen이 만들고 2018년 오픈소스화된 모듈러 지오코더로, OSM + Overture Maps + Geonames + WhosOnFirst 여러 소스를 통합합니다. Elasticsearch 기반이라 검색 품질이 가장 좋지만 인프라가 무겁습니다.
**Photon**(`photon.komoot.io`)은 독일 Komoot이 만든 OSM 기반 지오코더로, Elasticsearch + Java + Lucene 조합입니다. Nominatim보다 빠르고 결과 품질도 좋아, 인디 개발자들이 가장 많이 씁니다.
// Photon 공개 인스턴스로 지오코딩
const res = await fetch(
'https://photon.komoot.io/api/?q=서울 시청&limit=5&lang=ko'
)
const json = await res.json()
// json.features = GeoJSON FeatureCollection
상용 API와 비교해 자체 호스팅은 **품질 차이**가 있습니다. Mapbox Geocoding은 동의어·오타·다국어를 잘 처리하고, Google Geocoding은 비즈니스 위치를 잘 찾습니다. 정확도가 중요하면 상용, 비용이 중요하면 Photon이 일반적 선택입니다.
18. 타일 포맷 — MVT, PMTiles, XYZ, WMTS
타일 포맷은 데이터를 클라이언트에 어떻게 전달하느냐의 표준입니다. 2026년의 주요 포맷은 다음과 같습니다.
**MVT(Mapbox Vector Tile)** 는 2014년 Mapbox가 만들고 2017년 OGC 표준이 된 벡터 타일 포맷입니다. Protocol Buffers 기반으로 인코딩되고, z/x/y 디렉토리 구조로 배치됩니다. 클라이언트는 줌 레벨에 맞는 타일을 요청하면 거기 들어있는 모든 객체를 받아 GPU로 렌더합니다.
**PMTiles**(`protomaps.com/docs/pmtiles`)는 2022년 Protomaps의 Brandon Liu가 만든 단일 파일 타일 포맷입니다. 디렉토리 구조로 수백만 개 파일을 만드는 대신, 모든 타일을 하나의 큰 파일에 담고 HTTP Range Request로 필요한 부분만 받습니다. 결과는 **타일 서버 없이 S3/R2/GCS 정적 호스팅만으로 글로벌 지도가 가능** 합니다.
// PMTiles + MapLibre — 타일 서버 없이 글로벌 지도
const protocol = new Protocol()
maplibregl.addProtocol('pmtiles', protocol.tile)
const map = new maplibregl.Map({
container: 'map',
style: {
version: 8,
sources: {
protomaps: {
type: 'vector',
url: 'pmtiles://https://example.com/planet.pmtiles',
},
},
layers: [/* ... */],
},
})
**XYZ/TMS** 는 가장 오래된 라스터 타일 포맷으로, `{z}/{x}/{y}.png` URL 패턴입니다. **WMTS** 는 OGC 표준 라스터 타일 프로토콜로, 정부 GIS 포털에서 흔합니다.
2026년 트렌드는 **PMTiles로의 빠른 이전** — Protomaps는 전 세계 OSM 데이터를 단일 PMTiles 파일(약 100GB)로 제공하고, Overture Maps도 PMTiles 배포를 시작했습니다.
19. Protomaps — PMTiles와 오픈 글로벌 지도
Protomaps(`protomaps.com`)는 2022년 Brandon Liu가 시작한 오픈소스 프로젝트로, PMTiles 포맷의 발명자입니다. 2026년 현재 PMTiles는 사실상 차세대 타일 표준으로 자리잡았습니다.
Protomaps의 핵심 가치 제안은 **타일 서버 없이 글로벌 지도를 호스팅** 입니다. 전통적 구성은 `OSM → PostGIS → tilemaker → TileServer GL → CDN` 같은 무거운 파이프라인인데, Protomaps는 `OSM → planetiler → planet.pmtiles → S3/R2` 로 단순화합니다. 비용도 월 수천 달러였던 것이 월 수십 달러로 떨어집니다.
Protomaps는 **무료로 호스팅된 글로벌 PMTiles**(`protomaps.com/builds`)도 제공합니다. 매주 OSM 전체를 빌드해 약 100GB의 PMTiles 파일을 R2에 올리고, 누구나 직접 다운로드하거나 URL로 참조할 수 있습니다.
Protomaps의 또 다른 강점은 **Basemaps 디자인**(`protomaps.com/basemaps`)입니다. 8가지 기본 스타일(light, dark, white, grayscale, black, naturalist, ...)을 제공하고, JSON 한 줄로 커스터마이즈할 수 있습니다.
20. 한국 지도 — V-World, Naver Maps, Kakao Maps
한국은 군사 안보 이유로 1:5,000 이상 정밀 지도의 해외 반출이 제한되어, Google Maps, Mapbox 같은 글로벌 서비스의 한국 데이터가 부실합니다. 대신 국토교통부 V-World와 Naver/Kakao Maps가 사실상 표준입니다.
**V-World**(`vworld.kr`)는 국토교통부가 운영하는 무료 공공 지도 플랫폼으로, 항공사진, 지적도, 행정구역, 새주소(도로명주소) 등 한국 공공 GIS 데이터를 OGC 표준(WMS, WFS, WMTS)으로 제공합니다. 일 100만 건까지 무료, 그 이상은 신청 후 무료입니다.
**Naver Maps API**(`navermaps.github.io`)는 네이버가 제공하는 지도 SDK로, JS/iOS/Android/REST 모두 지원합니다. 무료 한도 후 단가는 Google보다 약 30~50% 저렴하고, 한국 POI 품질이 가장 좋습니다.
**Kakao Maps API**(`apis.map.kakao.com`)는 카카오가 제공하는 지도 SDK로, JS/iOS/Android/REST를 지원합니다. 카카오모빌리티 데이터가 강해 도로/교통 정보 품질이 우수하고, 자체 라우팅 API가 풍부합니다.
// Naver Maps JS v3 — 서울 시청 마커
ncpClientId = 'YOUR_CLIENT_ID'
const map = new naver.maps.Map('map', {
center: new naver.maps.LatLng(37.5665, 126.9780),
zoom: 14,
})
new naver.maps.Marker({
position: new naver.maps.LatLng(37.5665, 126.9780),
map,
title: '서울 시청',
})
세 서비스의 강점·약점 정리는 다음과 같습니다.
| 항목 | V-World | Naver Maps | Kakao Maps |
|---|---|---|---|
| 가격 | 무료 (공공 데이터) | 일정 한도 무료 후 유료 | 일정 한도 무료 후 유료 |
| POI | 기본만 | 최강 | 강 |
| 도로/교통 | 약 | 강 | 최강 |
| 항공사진 | 강 | 강 | 강 |
| 지적도 | 최강 (공식) | 없음 | 없음 |
| 해외 사용 | 가능 | 한국 위주 | 한국 위주 |
한국 서비스라면 **백오피스/공공 = V-World, 소비자 앱 = Naver/Kakao**, 글로벌 앱이면 **Mapbox/MapLibre + Overture Maps** 가 일반적 답입니다.
21. 일본 지도 — 국토지리원(GSI), Yahoo, ZENRIN, MIERUNE
일본은 한국과 달리 해외 반출 제한이 없어 Google Maps, Apple Maps의 데이터 품질이 매우 좋지만, 공공 데이터와 자체 솔루션 생태계도 활발합니다.
**국토지리원 GSI**(`gsi.go.jp`, `cyberjapandata.gsi.go.jp`)는 일본 국토지리원이 운영하는 공공 지도 서비스로, 지형도, 항공사진, 표고, 화산 활동 데이터 등을 WMTS/XYZ 타일로 무료 제공합니다. 라이선스 표시만 하면 상용 사용도 가능합니다.
**Yahoo!Japan Maps API**(`developer.yahoo.co.jp/webapi/map`)는 야후재팬이 제공하는 지도 SDK입니다. 일본 POI 품질이 매우 좋고, 일일 5만 회까지 무료입니다.
**ZENRIN**(`zenrin.co.jp`)은 일본 최대 지도 데이터 회사로, 거의 모든 일본 자동차 내비게이션의 데이터 제공자입니다. 상용 라이선스가 필요하지만 데이터 품질은 일본 내 최강입니다.
**MIERUNE**(`mierune.co.jp`)는 일본 홋카이도 기반의 오픈 GIS 회사로, MapLibre, PMTiles, OSM 기반 솔루션을 제공합니다. 일본어 지원이 강하고, GSI 데이터 통합 도구를 무료로 공개합니다.
// GSI 표준 지도 + MapLibre
const map = new maplibregl.Map({
container: 'map',
style: {
version: 8,
sources: {
gsi: {
type: 'raster',
tiles: ['https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png'],
tileSize: 256,
attribution: '国土地理院',
},
},
layers: [{ id: 'gsi', type: 'raster', source: 'gsi' }],
},
center: [139.7670, 35.6814],
zoom: 12,
})
일본 서비스라면 **공공 = GSI, 소비자 = Yahoo/Google/Apple, 차량 = ZENRIN** 이 일반적 분업입니다.
22. 유즈케이스 — 물류·배달·부동산·자율주행
실제 산업에서 지오스페이셜 스택이 어떻게 조합되는지 사례별로 보겠습니다.
**물류·배달**: 쿠팡, 우버이츠, DoorDash는 일반적으로 다음 구성을 씁니다. 도로 데이터 = OSM + 자체 보강, 라우팅 = Valhalla 자체 호스팅, 시각화 = MapLibre + deck.gl, 공간 DB = PostGIS, ETA 예측 = H3 셀 단위 ML, 라이더/드라이버 매칭 = S2 또는 H3 인접 검색.
**부동산**: Zillow, Redfin, 직방, 다방은 다음 구성. 베이스맵 = Mapbox 또는 자체 PMTiles, POI = Overture + 자체 크롤링, 도보 거리 = OSRM, 매물 클러스터링 = deck.gl HexagonLayer, 공간 검색 = PostGIS + GIST 인덱스.
**자율주행**: Tesla, Waymo, Cruise는 자체 HD Map을 만들지만 baseline은 OpenStreetMap + 자체 매핑 차량 데이터로 보강. 차량 내 시각화는 보통 자체 엔진이지만 백오피스는 CesiumJS + 3D Tiles. HERE Technologies와 TomTom이 자율주행용 HD Map 시장에서 강합니다.
**도시계획·디지털 트윈**: 싱가포르 Virtual Singapore, 두바이 Smart Dubai, 서울시 디지털 트윈은 모두 CesiumJS + Cesium 3D Tiles + 자체 BIM 데이터 조합. 인프라 시뮬레이션, 일조량 분석, 교통 시뮬레이션을 한 플랫폼에서 합니다.
**응급 서비스**: 미국 911, 한국 119는 GIS 시스템이 핵심. ESRI ArcGIS Pro + 자체 도로 데이터 + 실시간 통신을 결합해, 신고 위치에서 가장 가까운 출동 자원을 H3/pgRouting으로 매칭합니다.
23. 좌표계와 투영 — EPSG:4326 vs 3857 vs 5179
지오스페이셜의 가장 흔한 함정은 **좌표계 혼동** 입니다. 같은 지점도 좌표계에 따라 숫자가 완전히 다릅니다.
**EPSG:4326 (WGS84)** 는 GPS 표준 좌표계로, 경도/위도를 도(degree) 단위로 표현합니다. (서울 시청 ≈ 126.978°E, 37.566°N). 모든 GeoJSON과 OSM 원본은 4326입니다.
**EPSG:3857 (Web Mercator)** 는 Google Maps가 도입한 평면 투영으로, 미터 단위 X/Y로 표현합니다. (서울 시청 ≈ 14,135,830 m, 4,517,790 m). 거의 모든 웹 지도 타일이 3857로 렌더되므로, 클라이언트 측 거리 계산에 자주 쓰입니다.
**EPSG:5179 (Korea 2000 / Unified TM)** 는 한국 표준 좌표계로, V-World 같은 한국 공공 GIS가 사용합니다. 한국 영역에서 거리 왜곡이 작아 측량·지적도에 적합합니다.
**EPSG:6668 (JGD2011)** 은 일본 측지계 표준으로, 일본 GSI가 사용합니다. **EPSG:4612 (JGD2000)** 도 일본에서 흔히 쓰입니다.
좌표 변환은 PostGIS `ST_Transform(geom, target_srid)` 또는 JavaScript `proj4js` 로 처리합니다.
-- EPSG:5179 (한국 TM) → EPSG:4326 (WGS84) 변환
SELECT
ST_AsText(ST_Transform(geom, 4326)) AS lonlat,
ST_AsText(geom) AS tm_5179
FROM cadastral
LIMIT 5;
24. 마이그레이션 시나리오 — Mapbox 탈출
2024년 이후 Mapbox에서 자체 호스팅 또는 MapLibre로 마이그레이션하는 사례가 폭증하고 있습니다. 일반적인 마이그레이션 단계는 다음과 같습니다.
**1단계: SDK 교체** — `mapbox-gl` 패키지를 `maplibre-gl`로 교체. API 호환성이 95% 이상이라 대부분 import 문 변경만으로 끝납니다.
**2단계: 스타일 교체** — Mapbox 공식 스타일(`mapbox://styles/mapbox/streets-v12`)을 MapTiler, Stadia, Protomaps 같은 대체 스타일로 변경. 필요하면 `maputnik.github.io`로 자체 스타일 디자인.
**3단계: 타일 호스팅** — Mapbox 호스팅 타일 대신 자체 PMTiles 호스팅. `planetiler`로 OSM에서 PMTiles 빌드(~3시간), R2/S3에 업로드.
**4단계: 보조 API 교체** — Mapbox Geocoding → Photon/Pelias, Mapbox Directions → OSRM/Valhalla, Mapbox Static Images → 자체 서버 또는 MapTiler.
비용 효과는 극적입니다. 월 100만 로드 기준 Mapbox 비용은 약 $475(50,000 무료 후 950,000 × $0.50/1,000)인데, R2/S3 + Cloudflare 호스팅은 월 $5~20 수준입니다. 단, 자체 인프라 운영 부담은 늘어납니다.
25. 마무리 — 2026년의 지오스페이셜 스택 선택
2026년 지오스페이셜 스택을 한 줄로 요약하면 **오픈소스 우위와 단일 파일 PMTiles의 보편화** 입니다. Mapbox 독점 시대는 끝났고, Overture Maps + MapLibre + Protomaps + PostGIS 조합으로 거의 모든 유즈케이스를 무료에 가까운 비용으로 처리할 수 있습니다.
선택 가이드를 정리하면 다음과 같습니다.
| 시나리오 | 추천 스택 |
|---|---|
| 소규모 웹 지도 (방문 수 적음) | Leaflet + OSM 타일 (Public) |
| 모던 벡터 웹 지도 | MapLibre + MapTiler/Stadia + 자체 스타일 |
| 대용량 데이터 시각화 | MapLibre + deck.gl + H3 집계 |
| 3D 시티/디지털 트윈 | CesiumJS + Cesium 3D Tiles |
| 자체 호스팅 글로벌 지도 | Protomaps PMTiles + R2/S3 |
| 정부/공공 GIS | OpenLayers + GeoServer + WMS/WFS |
| 한국 서비스 | Naver/Kakao Maps + V-World 보강 |
| 일본 서비스 | GSI + Yahoo/Mapbox + ZENRIN |
| 데이터 분석 | DuckDB Spatial + Overture Parquet |
| 운영 DB | PostGIS + H3 인덱스 컬럼 |
마지막으로 강조하고 싶은 것은 **데이터 라이선스를 잊지 마세요** 입니다. OSM은 ODbL Share-Alike, Mapbox는 자체 라이선스, Google은 사용 약관에 캐싱 금지 조항이 있습니다. 라이선스 위반은 서비스 중단으로 이어질 수 있으니, 프로덕트 출시 전에 반드시 법무 검토를 받아야 합니다.
26. 참고 / References
- OpenStreetMap — `https://www.openstreetmap.org`
- OSM Wiki Map Features — `https://wiki.openstreetmap.org/wiki/Map_features`
- Overture Maps Foundation — `https://overturemaps.org`
- Overture Maps Documentation — `https://docs.overturemaps.org`
- Mapbox — `https://www.mapbox.com`
- Mapbox GL JS — `https://docs.mapbox.com/mapbox-gl-js`
- Google Maps Platform — `https://mapsplatform.google.com`
- Google Photorealistic 3D Tiles — `https://developers.google.com/maps/documentation/tile/3d-tiles`
- MapLibre — `https://maplibre.org`
- MapLibre GL JS — `https://maplibre.org/maplibre-gl-js`
- deck.gl — `https://deck.gl`
- Kepler.gl — `https://kepler.gl`
- Leaflet — `https://leafletjs.com`
- OpenLayers — `https://openlayers.org`
- CesiumJS — `https://cesium.com/platform/cesiumjs`
- Cesium 3D Tiles — `https://github.com/CesiumGS/3d-tiles`
- PostGIS — `https://postgis.net`
- DuckDB Spatial — `https://duckdb.org/docs/extensions/spatial`
- H3 Geo — `https://h3geo.org`
- S2 Geometry — `https://s2geometry.io`
- OSRM — `https://project-osrm.org`
- Valhalla — `https://valhalla.github.io`
- GraphHopper — `https://www.graphhopper.com`
- pgRouting — `https://pgrouting.org`
- Nominatim — `https://nominatim.org`
- Pelias — `https://pelias.io`
- Photon — `https://photon.komoot.io`
- Protomaps — `https://protomaps.com`
- PMTiles — `https://docs.protomaps.com/pmtiles`
- MapTiler — `https://www.maptiler.com`
- Stadia Maps — `https://stadiamaps.com`
- V-World — `https://www.vworld.kr`
- Naver Maps API — `https://navermaps.github.io`
- Kakao Maps API — `https://apis.map.kakao.com`
- 国土地理院 GSI — `https://www.gsi.go.jp`
- Yahoo!Japan Maps API — `https://developer.yahoo.co.jp/webapi/map`
- ZENRIN — `https://www.zenrin.co.jp`
- MIERUNE — `https://www.mierune.co.jp`
현재 단락 (1/439)
지오스페이셜(Geospatial) 스택은 2020년대 초반까지만 해도 ESRI ArcGIS, Mapbox, Google Maps 세 회사가 지배하던 영역이었지만, 2022년 Ove...