원문 캡처 · enterprise.wikimedia.com
원문 캡처 · enterprise.wikimedia.com

위키미디어 엔터프라이즈가 OpenStreetMap(OSM) 요소 1,700만 건을 Wikidata·Wikipedia·Wikivoyage 데이터와 연결한 공개 지리공간 데이터셋을 내놨다. 개발자와 지도 제작자, AI 연구자 등은 Hugging Face와 Kaggle에서 파일을 내려받아 지리 정보와 위키미디어의 지식 데이터를 함께 분석할 수 있다.

데이터셋은 분석용 Parquet 및 GeoParquet 파일 6개로 구성된다. 연결 정보를 담은 links.parquet에는 Wikidata 항목, OSM 요소, Wikipedia 문서, Wikivoyage 문서를 잇는 링크 2,400만 건이 들어 있다. 나머지 파일은 2026년 9월 15일 기준 각 프로젝트에서 이용할 수 있었던 데이터의 스냅샷이다.

파일규모와 주요 내용
links.parquet174MB, 연결 2,400만 건
openstreetmap.parquet36GB, 위치 정보가 있는 OSM 요소 1,700만 건과 태그·경계 상자·투영 전 기하 정보
wikidata.parquet 및 wikidata_locations.parquet총 1.4GB, Wikidata 항목 1,300만 개와 좌표 위치 1,300만 개
wikipedia.parquet22GB, 위치 정보가 있는 영어 Wikipedia 문서 150만 개와 요약·원문 위키텍스트·렌더링된 HTML
wikivoyage.parquet515MB, 영어 Wikivoyage 여행 안내 문서 3만 1,000개

links.parquet의 각 행은 Wikidata의 QID를 중심으로 OSM 요소나 Wikipedia·Wikivoyage 문서를 연결한다. source 열에는 연결이 만들어진 출처가 기록된다. 예를 들어 osm_wikidata는 OSM 요소의 wikidata 태그에서, wikidata_p402는 Wikidata 항목의 OSM 관계 정보에서 링크를 가져왔음을 뜻한다. 모든 테이블에 QID가 있어 이를 기준으로 서로 결합할 수 있다.

데이터 파일은 DuckDB에서 SQL로 조회하거나 Pandas, Polars, Apache Spark에 불러올 수 있다. 제작자인 미할 미구르스키(Michal Migurski)는 기존에는 양쪽 데이터의 연결을 충분히 펼쳐 보여주는 데이터셋이 드물어, 재사용하기 쉽도록 연결 테이블을 만들었다고 설명했다. Wikimedia Enterprise는 데이터셋이 맞춤형 데이터 처리 절차를 직접 구축하지 않고도 두 종류의 데이터를 함께 분석하도록 돕는다고 밝혔다.

예를 들어 OSM의 지도 정보와 Wikidata의 QRank 인기도 점수를 결합해 특정 지역의 주요 장소를 살펴볼 수 있다. 데이터셋 안내에 실린 파리의 Quartier du Gros-Caillou 사례에서는 에펠탑이 가장 높은 순위에 올랐고, 그 뒤를 Organisation internationale de la Francophonie와 Champ de Mars가 이었다. 위키미디어와 OSM의 연결이 부족한 지역이나 주제를 찾고, 한쪽 데이터의 누락된 지도 요소나 태그를 다른 쪽 자료와 대조하는 데도 활용할 수 있다.

파일은 Hugging Face와 Kaggle에서 이용할 수 있다. 각 데이터의 이용 조건은 서로 다르다. links.parquet, wikidata.parquet, wikidata_locations.parquet은 CC0로 퍼블릭 도메인에 제공된다. openstreetmap.parquet은 ODbL에 따라 OpenStreetMap 기여자를 표시해야 하며, 이를 바탕으로 만든 파생 데이터에는 동일 조건 배포가 요구된다. wikipedia.parquet과 wikivoyage.parquet에는 CC BY-SA 4.0이 적용된다.

부록: 원문 예시

text
WITH box AS (  SELECT bbox  FROM read_parquet('openstreetmap.parquet')  WHERE osm_type = 'relation'    AND tags['wikidata'] = 'Q3413275' -- Quartier du Gros-Caillou  LIMIT 1)SELECT w.label, w.qrank, o.osm_type, o.osm_id, o.urlFROM read_parquet('openstreetmap.parquet') o, boxJOIN read_parquet('wikidata.parquet') w  ON w.wikidata_id = o.tags['wikidata']WHERE o.tags['wikidata'] IS NOT NULL  AND o.bbox.xmin >= box.bbox.xmin AND o.bbox.xmax <= box.bbox.xmax  AND o.bbox.ymin >= box.bbox.ymin AND o.bbox.ymax <= box.bbox.ymax  AND w.qrank IS NOT NULLORDER BY w.qrank DESCLIMIT 10
text
curl -X GET "https://api.enterprise.wikimedia.com/v2/snapshots/enwiki_namespace_0/download" \     -H "Authorization: Bearer ACCESS_TOKEN" \     --output enwiki_namespace_0.tar.gz
text
curl -X GET "https://api.enterprise.wikimedia.com/v2/snapshots/wikidata/items/download" \     -H "Authorization: Bearer ACCESS_TOKEN" \     --output wikidata_items.tar.gz
text
curl -X GET "https://api.enterprise.wikimedia.com/v2/snapshots/enwikivoyage_namespace_0/download" \     -H "Authorization: Bearer ACCESS_TOKEN" \     --output enwikivoyage_namespace_0.tar.gz
text
curl -X GET "https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf" -L \     --output planet-latest.osm.pbf