글실험 기록
서울 일대 OSM 건물 27만 4천 개 중 외벽 색이 적힌 것은 391개였다
서울을 부수는 웹 3D 게임을 만들며 OpenStreetMap 건물 274,741개의 태그 채움률, 기존 데이터와의 윤곽 일치, 높이 차이를 직접 셌습니다. 이름은 20.4%, 높이는 16.2%, 외벽 색은 0.14%에 적혀 있었습니다.

서울을 달리며 건물을 부수는 웹 3D 게임을 만들고 있습니다. 부서지는 건물이 실제 서울의 모양이어야 해서, 지금 쓰는 건물 데이터(Seoul 3D Atlas, 건물을 회전 직사각형 상자로 담은 자료)를 OpenStreetMap(OSM)의 건물 윤곽으로 바꿀 수 있는지 알아봤습니다. 윤곽이 얼마나 맞는지, 이름·높이·색 태그를 얼마나 쓸 수 있는지 직접 센 기록입니다.
무엇을 셌나
원본은 Geofabrik의 South Korea 추출본입니다. PBF 헤더에 적힌 복제 시각은 2026-11-01T21:21:36Z, sequence는 4480입니다. 경도 126.735~127.205, 위도 37.40~37.72 직사각형(약 41×36km, 재계산) 안에서 building 또는 building:part 태그가 붙은 닫힌 way와 multipolygon relation을 뽑았습니다. 서울 행정경계보다 넓은 범위입니다.
결과는 274,741개이고, 여러 조각으로 갈라지는 객체까지 세면 윤곽은 275,286개입니다. 아래 수치는 모두 이 지도 객체 단위이며 고유한 건물 수가 아닙니다. building 값에는 roof나 greenhouse 같은 것도 들어 있습니다. 추출을 처음부터 다시 돌려 같은 개수가 나오는지 확인했습니다. 데이터 출처는 © OpenStreetMap contributors이고 ODbL 1.0을 따르며, 이용 조건은 OSM 저작권 안내에 있습니다.
태그 채움률
| 태그 | 개수 | 비율(재계산) |
|---|---|---|
building:levels | 72,120 | 26.3% |
name | 55,982 | 20.4% |
height | 44,378 | 16.2% |
roof:shape | 1,228 | 0.45% |
roof:colour | 974 | 0.35% |
building:material | 460 | 0.17% |
building:colour | 391 | 0.14% |
표지 그림은 이 표의 수치로 직접 그렸습니다. 건물을 세우려면 높이가 있어야 하는데, 숫자로 읽히는 height나 building:levels가 하나라도 있는 객체는 75,953개(27.6%)뿐이고 198,788개(72.4%)는 둘 다 없습니다(재계산).
외벽 색은 391개입니다. 값은 16진수 305개, 색 이름 86개이고 이름은 white, brown 같은 영어 소문자였습니다. 위키는 16진수를 권하고 이름은 렌더러마다 다르게 읽힐 수 있다고 적습니다. 미국식 철자인 building:color는 한 개도 없었습니다.
391개 중 게임용 윤곽에 연결된 것은 212개입니다(391은 지도 객체, 212는 연결된 윤곽 레코드라 단위가 조금 다릅니다). 색 태그가 붙은 윤곽은 392개이고, 연결되지 않은 약 180개 중 165개 이상이 building:part였습니다. 부모 건물과 겹쳐 일대일 연결에서 밀렸으리라 짐작하지만 하나씩 확인하지는 않았습니다. building:material이 있는 연결 윤곽 306개의 값은 brick 102, glass 92, concrete 80 순이었고, 한글 '벽돌'로 적은 것도 하나 있었습니다.
같은 범위의 natural=tree 노드는 7,973개이고 height가 있는 것은 58개입니다. 원본 PBF에서 다시 센 값입니다. 63빌딩과 시범아파트가 있는 여의도 사각형(위도 37.517~37.525, 경도 126.934~126.943)에는 0개였는데, 나무가 없다는 뜻이 아니라 기록이 없다는 뜻입니다.
윤곽은 얼마나 맞나
OSM 윤곽마다 중심이 가까운 Atlas 상자 8개를 후보로 두고, IoU(겹친 넓이를 합친 넓이로 나눈 값)가 0.55 이상인 쌍을 일대일로 골랐습니다. Atlas 상자는 267,080개입니다.
| 항목 | 값 |
|---|---|
| OSM 윤곽(반올림 뒤에도 유효한 것) | 275,277 |
| 상자와 일대일 연결(IoU 0.55 이상) | 245,653 (89.2%) |
| 연결되지 않음 | 29,624 (10.8%) |
| 연결된 쌍의 IoU 중앙값 | 0.852 |
| 연결된 쌍의 IoU 25~75% 구간 | 0.786~0.899 |
| 연결된 쌍 중 IoU 0.9 이상 | 24.7% |
IoU 분포는 연결된 윤곽과 원본 상자로 다시 계산했고, 중앙값은 조사 노트에 적어 둔 값과 같았습니다. 한쪽이 직사각형이라 이 값에는 상자의 단순화가 섞여 있어, OSM 윤곽 자체의 위치 정확도는 따로 드러나지 않습니다. 0.55 미만은 처음부터 걸러서 분포에 없습니다.
연결되지 않은 29,624개 중 28,980개는 IoU 0.55 이상인 상대가 없었고, 644개(재계산)는 상대가 있었지만 일대일 배정에서 밀렸습니다. 별도 점검에서 고유 좌표 기준 미연결 29,298개를 모든 상자와 겹쳐 보니 13,326개(45.5%)는 상자를 전부 합쳐도 넓이의 5% 미만만 덮였습니다. Atlas에 빠졌을 후보이지만 점검 스크립트의 주석도 건물이 없다는 증거는 아니라고 적습니다. Atlas는 2026-08-30, OSM은 2026-11-01 스냅샷이라 그 사이의 편집이 섞였을 수 있는데, 얼마인지는 나누어 보지 못했습니다.
높이는 얼마나 맞나
OSM height와 Atlas 높이를 같은 건물끼리 견주었습니다. 게임에 쓰는 윤곽과 OSM 윤곽의 좌표가 중복 없이 일치하는 245,353쌍 가운데 height가 3~600m의 숫자이고 min_height나 최소 층수 태그가 없거나 0인 36,419쌍이 표본입니다. 위키의 Key:height는 height를 지면에 닿는 가장 낮은 지점에서 지붕 윗면까지의 최대 높이(안테나 제외)로 정의합니다.
| 높이 차이 | 개수 | 비율(재계산) |
|---|---|---|
| 0.05m 이하 | 30,827 | 84.6% |
| 0.05~0.5m | 2,953 | 8.1% |
| 0.5~1m | 2,390 | 6.6% |
| 1~5m | 24 | 0.07% |
| 5~20m | 21 | 0.06% |
| 20m 초과 | 204 | 0.56% |
차이의 중앙값은 0m, 90번째 백분위수는 0.4m, 99번째는 0.94m이고 99.3%가 1m 이내입니다. 다만 Atlas가 OpenFreeMap과 OpenMapTiles를 거친 OSM 파생 자료라서, 이 일치는 같은 뿌리의 두 자료가 얼마나 같은지를 보여 줄 뿐입니다. 실측 높이와는 견주지 않았습니다.
5m 넘게 다른 225개는 212개가 OSM 쪽이 높았고, 200개는 Atlas 값이 정확히 5m였습니다. Atlas 전체에서 190,789개(71.4%, 재계산)가 5.0m라 높이를 모를 때 넣는 기본값처럼 보이지만, Atlas 쪽 처리를 열어 보지 못해 단정하지 않습니다. 콘래드 서울은 OSM이 199m인데 연결된 Atlas 레코드는 50m였고, 조사 노트에는 이 50m 레코드가 약 200m 부분과 겹쳐 있다고 적어 두었습니다.
이 조사가 말해 주지 않는 것
태그가 없다는 것은 값을 모른다는 뜻입니다. 외벽 색이 없는 건물이 무채색이라는 뜻도, 건물이 없다는 뜻도 아닙니다. 수치는 모두 레코드 단위여서 고유한 건물 수와 다르고, 범위가 행정경계 밖까지 걸쳐 있어 서울만의 비율로 읽을 수도 없습니다.
윤곽 연결은 자동 추정이라 개별 건물이 맞는지는 확인하지 않았습니다. 높이 표본은 height가 적힌 건물(전체의 16.2%) 가운데서만 뽑았고, 나머지 건물의 높이는 이 비교로 알 수 없습니다. 색 태그가 현장과 맞는지도 확인하지 않았습니다.
스냅샷이 하나뿐이어서 OSM이 바뀌면 값도 바뀝니다. Geofabrik 페이지의 최신 파일은 계속 갱신되고, 글을 정리하던 시점에는 2026-11-02T21:21:26Z까지의 데이터로 표시됐습니다. 같은 숫자를 얻으려면 복제 시각 2026-11-01T21:21:36Z의 파일이 필요합니다.