HazardSim은 어떻게 계산하는가
시뮬레이터가 보여 주는 숫자는 모두 짧은 공식 몇 개와 공개 데이터 몇 가지에서 나옵니다. 이 페이지는 코드가 실제로 하는 일을 대략적인 근사에 그친 부분까지 빠짐없이 설명합니다.
업데이트 2026년 9월 18일
HazardSim이 답하는 질문은 하나입니다. 일정한 규모의 재해가 만약 여기서 일어난다면 어느 범위까지 미치고, 그곳에 몇 명이 살고 있을까요? 그런 사건이 그 장소에서 일어날 수 있는지, 얼마나 일어날 법한지는 말하지 않습니다. 규모는 이용자가 정하고, 사이트는 그 규모를 몇 가지 단순한 규칙에 따라 실제 지형과 정착지에 적용합니다. 규칙은 코드의 상수와 함께 아래에 정리했습니다.
시뮬레이터가 답하는 것과 답하지 않는 것
어떤 해안에서 규모 9 지진이 날 수 있는지 판단하는 단층 모델은 없고, 파도를 태평양 건너편까지 실어 나르는 해양 모델도 없습니다. 결과는 결정론적이어서 장소와 설정이 같으면 언제나 같은 숫자가 나옵니다. 애니메이션은 장식일 뿐입니다. 침수 범위는 한 번에 계산된 뒤 약 3초에 걸쳐 화면에 드러납니다. 시간에 따라 달라지는 것이 없으므로 도달 시간도, 경보도, 대피도 없습니다.
바탕이 되는 데이터
지형과 격자
고도는 Mapbox Terrain-RGB 타일에서 가져오고, 이를 쓸 수 없으면 Mapbox Terrain-DEM으로 대신합니다. 픽셀 색상은 Mapbox가 공개한 공식 높이 = −10,000 + (R × 65,536 + G × 256 + B) × 0.1 m로 해독합니다. 모델은 수직 기준면이 서로 다른 자료를 섞어 쓰기 때문에 해수면 근처의 높이는 정확하지 않으며, 평탄한 해안에서는 작은 오차만으로도 침수선이 멀리 움직입니다.
코드는 줌 14부터 6까지 내려가면서, 계산 영역의 너비가 780픽셀 이하이고 전체 픽셀 수가 620,000 이하가 되는 가장 자세한 줌을 고릅니다. 그런 다음 영역을 덮는 타일을 통째로 모두 불러옵니다(최대 42개). 셀 한 칸의 크기는 156,543 m × cos(위도) ÷ 2줌입니다. 위도 45°라면 줌 14에서 6.8 m, 줌 12에서 27 m, 줌 11에서 54 m입니다. 셀 한 칸보다 좁은 제방은 격자에 아예 나타나지 않을 수 있습니다.
계산 영역
선택한 지점이 정착지 안에 있으면, 계산 영역은 그 정착지의 경계 상자를 14% 넓히고 재해가 미치는 거리를 더한 범위입니다. 미치는 거리는 쓰나미라면 파고 × 250 m, 해수면 상승이라면 12 km, 운석이라면 가장 바깥 고리이며, 최대 60 km로 제한합니다. 영역의 세로 길이는 위도 1.4°를 넘지 않고, 작은 재해라면 더 짧아집니다. 상자가 지나치게 크면 선택한 지점을 중심으로 한 정사각형으로 바꿉니다. 정착지 밖이라면 지점 주변으로 화면에 보이는 지도의 82%가 계산 영역이 되므로, 지도를 확대하거나 축소하면 결과가 달라질 수 있습니다.
도시 경계와 인구
지도를 클릭하면 OpenStreetMap의 지오코더인 Nominatim에 줌 10, 12, 8 순서로 질의하고, 경계 다각형이 딸린 첫 응답을 씁니다. 바다, 만, 국가, 주, 광역 지역은 제외하며, 세로 1.2°, 가로 2.4°, 면적 12,000 km²를 넘는 것도 제외합니다. 다각형이 없으면 경계 상자를 쓰고, 면적은 상자의 72%로 잡습니다.
인구는 경계에 붙은 population 태그에서 가져옵니다. 태그가 없으면 상자 안에서 같은 이름으로 Nominatim을 검색하고, 그래도 없으면 Overpass API가 그 안에서 찾은 city, town, borough, suburb, village 노드 가운데 인구가 가장 많은 것을 씁니다. 밀도는 인구 ÷ 면적이며 1~100,000 /km² 범위로 제한합니다. 60,000 /km²를 넘는 값은 다카나 마닐라에서 가장 붐비는 구역보다도 조밀한 수치입니다. 이는 OpenStreetMap이 도시 전체의 인구를 더 작은 윤곽에 붙여 놓았다는 뜻이므로 코드는 이 값을 버립니다. OpenStreetMap에 인구가 없으면 장소 유형별 대표값을 씁니다. 자치구나 교외는 6,000 /km², 도시는 4,500이고, 마을은 700, 카운티는 300까지 내려가며, 유형을 알 수 없으면 2,500입니다. 밀도 슬라이더를 움직이면 이 모든 값을 덮어씁니다. 행정 경계에는 농지가 들어 있는 경우가 많아서 평균 밀도는 대개 도심보다 낮습니다.
화산
빨간 표시는 스미소니언 Global Volcanism Program의 홀로세 화산 목록에서 가져온 기록 1,560개입니다(몇몇 화산은 두 번 들어 있습니다). 화산에서 40 km 안의 지점을 고르면 그 화산을 씁니다. 분화의 중심은 클릭한 곳이 아니라 화산 자체입니다. 그보다 멀면 아무것도 계산하지 않고, 가장 가까운 실제 화산의 이름을 알려 주며 그곳으로 가 보겠느냐고 묻습니다.
쓰나미: 높이를 잃어 가며 번지는 채우기
해안 확인. 클릭이나 검색으로 쓰나미나 해수면 상승을 실행하기 전에, 코드는 거친 지형(줌 8, 적도에서 셀 한 칸이 약 600 m)을 불러와 30 km 안에서 고도 0.6 m 이하인 셀을 셉니다. 적어도 150개가 있어야 합니다. 적도 부근이라면 약 50 km²의 탁 트인 수면에 해당하며(셀이 작아지는 극 쪽으로 갈수록 이 넓이도 줄어듭니다), 강이나 연못으로는 채울 수 없는 넓이입니다. 물 위를 직접 클릭하면 실행하지 않습니다.
바다 찾기. 전체 격자에서 고도 0.6 m 이하인 가장자리 셀을 모두 바다로 표시하고, 이 표시를 대각선 방향을 포함해 서로 이어진 0.6 m 이하의 셀로 퍼뜨립니다. 바다 셀이 40개보다 적으면 실행을 멈춥니다. 그 부작용으로, 간척지처럼 바다와 이어진 0.6 m 미만의 땅은 처음부터 바다로 취급되어 침수된 땅으로 세지 않습니다.
물 퍼뜨리기. 모든 바다 셀에서 동시에 물이 이웃 셀로 번지며, 그때마다 이동 거리에 셀 너비 하나를 더합니다(대각선이면 1.414). 각 셀의 수면 높이는 다음과 같습니다.
수위 = H − 거리 ÷ 250
여기서 H는 미터 단위의 파고입니다. 수위가 지면보다 높으면 셀은 수위 − 지면만큼의 깊이로 잠기고 물은 계속 나아갑니다. 그렇지 않으면 셀은 마른 채로 남아 길을 막습니다. 그래서 물은 잠긴 셀이 사슬처럼 이어진 경로로만 어떤 셀에 닿을 수 있고, 수면보다 높은 능선은 돌아갈 길이 없는 한 그 뒤의 땅을 지켜 줍니다.
높이 감소는 지형과 건물에 부딪히는 마찰을 대신하는 값입니다. 물리 법칙이 아니라 지구 전체에 하나만 쓰는 숫자로, 해수면 높이의 평지라면 15 m 파도는 내륙 3.75 km에서, 30 m 파도는 7.5 km에서 멈춥니다. 같은 높이가 격자의 해안선 전체에 한꺼번에 적용되므로 파도의 방향도, 해저 지형도, 만 안쪽으로 물이 몰리는 효과도, 물의 양에 대한 한계도, 두 번째 파도도 없습니다. 물이 격자 가장자리에 닿으면 실제 침수는 더 멀리 간다는 경고가 결과에 표시됩니다.
해수면 상승: 높이 감소를 끈 같은 엔진
해수면 상승은 같은 코드에서 높이 감소만 끈 것입니다. 바다와 이어져 있고 새 해수면보다 낮은 셀은 내륙으로 얼마나 들어가 있든 모두 잠깁니다. 흔히 욕조 모델이라고 부르는 방식입니다. 새 해수면보다 낮은 분지라도 더 높은 땅에 빈틈없이 둘러싸여 있으면 마른 채로 남습니다. 제방은 고도 데이터에 들어 있고 폭이 셀 한 칸보다 넓을 때만 반영됩니다. 조석, 폭풍 해일, 침식, 지반 침하는 다루지 않으며 시간의 흐름도 없습니다. 사망자 대신 잠긴 땅에 사는 사람 모두를 이재민으로 셉니다. 해수면 상승으로 물에 잠길 도시도 함께 보세요.
지진: 한 점을 둘러싼 진도 고리
지진은 클릭한 지점 아래 8 km 깊이에 있는 점 진원으로 다룹니다. 진앙에서 거리 r인 곳의 수정 메르칼리 진도는 다음과 같습니다.
MMI = 1.5·M − 3.0·log10R − 0.0018·R + 1.6, 여기서 R = √(r² + 8²) km이고 값은 0~12로 제한합니다.
식의 형태는 진도 감쇠식에서 흔히 쓰는 것(규모 항, 기하학적 확산, 거리에 따른 흡수)이지만, 계수는 발표된 관계식이 아니라 사이트가 직접 정한 근사값이고, 진도는 지반 가속도를 거치지 않고 곧바로 계산합니다. 규모 7이면 진앙에서 9.4, 21 km까지 VIII, 181 km까지 V가 됩니다. 규모 6은 최고 7.9에 그쳐 VIII에 이르지 못하고, 규모 8은 67 km까지 VIII입니다. 규모 약 8.8부터는 진앙의 진도가 상한인 XII에 닿습니다.
구역마다 사망 비율이 정해져 있고, 여기에 건축 계수를 곱합니다. 최신 내진 기준은 0.06, 보통은 1, 부실하면 7입니다.
| 구역 | 최신 내진 기준 | 보통 | 부실 |
|---|---|---|---|
| IX+: 건물 붕괴 | 0.06% | 1% | 7% |
| VIII: 큰 피해 | 0.0072% | 0.12% | 0.84% |
| VII: 벽에 금이 감 | 0.00072% | 0.012% | 0.084% |
| VI: 물건이 넘어짐 | 0.00006% | 0.001% | 0.007% |
| V: 뚜렷이 느껴짐 | 0 | 0 | 0 |
실제 규모 9 지진은 길이가 수백 킬로미터에 이르는 단층을 파열시키기 때문에, 강한 흔들림은 원이 아니라 띠 모양으로 퍼집니다. 무른 지반, 액상화, 산사태, 화재는 고려하지 않으며, 모든 지진을 얕은 지진으로 봅니다. 깊은 지진이라면 흔들림이 훨씬 약하게 느껴질 것입니다.
화산: VEI에서 세 개의 원으로
화산폭발지수(VEI)는 분출량으로 바뀝니다. V = 10VEI−5 km³이므로 VEI 5는 1 km³이고 한 단계 올라갈 때마다 10배가 됩니다. VEI 2부터 8까지는 Newhall과 Self(1982)의 척도에서 각 등급의 최소 분출량과 같고, VEI 1에는 0.0001 km³를 씁니다. 이 분출량에서 세 가지 반경이 나옵니다.
- 화쇄류, max(0.6, 9·V0.25) km: 95% 사망;
- 지붕을 무너뜨릴 만한 화산재 10 cm, 30·V0.33 km: 0.15% 사망;
- 화산재 1 cm, 100·V0.35 km: 0.002% 사망.
이 거듭제곱 법칙들은 사이트가 직접 맞춘 경험식입니다.
실제 화쇄류는 계곡을 따라 흐르고, 실제 화산재는 바람을 타고 길게 띠를 이루며 날아갑니다. 그래서 실제 피해 범위는 원이 아니라 한쪽으로 치우친 모양입니다. 라하르, 화산 가스, 산체 붕괴로 생기는 쓰나미, 기후 영향은 모델에 없습니다.
운석: 에너지와 폭발 규모 법칙
천체는 지름 D인 구이고, 밀도는 3,000 kg/m³(암석), 7,800(철), 900(얼음), 1,200(베누처럼 느슨하게 뭉친 소행성인 잡석 더미) 가운데 하나입니다. 천체는 이용자가 정한 진입 속도로 들어오며, 기본값은 근지구 소행성의 전형적인 값인 17 km/s입니다.
m = ρ·π/6·D³; E = ½·m·v²; 위력(Mt) = E ÷ 4.184×1015 J
지름 150 m 암석 천체는 183 Mt, 지름 19 m인 첼랴빈스크 프리셋은 0.37 Mt입니다. 속도 조절 범위는 11~30 km/s로, 소행성 충돌은 거의 모두 이 범위 안에 듭니다. 베누와 아포피스 프리셋은 NASA Sentry 표에 실린 속도인 12.7 km/s와 12.6 km/s를 씁니다. 그래서 베누는 같은 크기의 암석 천체가 17 km/s로 들어올 때 나오는 6.4 Gt가 아니라 약 1.4 Gt가 됩니다. 모델은 진입 각도와 떨어지는 동안 잃는 에너지를 무시합니다. 70 m 미만의 암석, 20 m 미만의 철, 90 m 미만의 잡석 더미, 150 m 미만의 얼음 천체는 공중 폭발로 보고 크레이터를 남기지 않습니다. 그보다 크면 크레이터 지름은 20·D·(ρ/3,000)1/3입니다.
공중 폭발이면 코드는 폭발 고도를 추정합니다. 고도는 가장 작은 암석 천체일 때 35 km(철은 12 km, 얼음은 45 km)이고, 천체가 지면에 닿게 되는 크기에서 0이 되도록 선형으로 낮아집니다. h = hmax·(1 − D ÷ D공중폭발). 이렇게 계산하면 19 m 첼랴빈스크 천체는 약 25 km, 60 m 퉁구스카급 천체는 5 km에서 터지며, 두 사건에 대한 추정치와 비슷합니다. 불덩이, 완전 파괴, 건물 붕괴, 화상 반경은 폭발 지점에서 비스듬히 잰 거리이므로, 지면에서는 각각 √(R² − h²)가 되고 R이 h보다 짧으면 지면에 닿지 않습니다. 유리창 파손 고리는 원래 크기 그대로 둡니다. 높은 곳에서 터진 약한 충격파는 넓게 퍼지기 때문입니다. 첼랴빈스크에서는 수십 킬로미터 떨어진 곳의 유리창도 깨졌습니다. 건물 붕괴 구역이 지면에 닿지 않으면 유리창 구역의 사망자는 0으로 셉니다. 첼랴빈스크 운석은 약 1,500명을 다치게 했는데 대부분 유리 파편 때문이었고, 숨진 사람은 없었습니다.
| 구역 | 반경, km (Y는 Mt 단위) | 150 m 암석 | 사망 |
|---|---|---|---|
| 크레이터 | 20·D·(ρ/3,000)1/3의 절반 | 1.5 km | 100% |
| 불덩이 | 0.9·Y0.4 | 7.2 km | 100% |
| 완전 파괴(20 psi) | 2.2·Y1/3 | 12.5 km | 90% |
| 건물 붕괴(5 psi) | 4.6·Y1/3 | 26 km | 45% |
| 심한 화상 | 1.83·Y0.41 | 15.5 km | 18% |
| 유리창 파손(1 psi) | 11.6·Y1/3 | 66 km | 0.5% |
폭발 반경은 위력의 세제곱근에 비례해 커집니다. Glasstone과 Dolan의 The Effects of Nuclear Weapons에 나오는 폭발 규모 법칙이며, 계수와 불덩이의 거듭제곱 법칙은 사이트가 직접 보정한 값입니다. 열은 핵폭발과 다르게 다룹니다. 충돌은 에너지 가운데 아주 작은 몫만 빛으로 내보내는데, 핵무기가 약 35%라면 충돌은 0.3% 정도입니다. 그래서 화상 반경은 핵폭발 화상 공식(12.8·Y0.41)에 열 위력 0.0086·Y를 넣어 구하고, 그 결과가 1.83·Y0.41입니다. 사망 비율이 거리가 멀어질수록 커져서는 안 되므로, 각 구역의 값은 적어도 바로 바깥 구역의 값까지 올려 줍니다.
바다에 떨어지는 충돌과 그로 인한 쓰나미, 지름 1 km가 넘는 천체의 지구적 영향은 모델에 없습니다. 크기별로 본 운석의 피해를 참고하세요.
허리케인: 폭풍 해일과 풍속 분포
슬라이더로 상륙 시점의 지속 풍속을 120~320 km/h 범위에서 정하면, 그 값에 따라 사피어-심프슨 등급이 정해집니다. 119 km/h부터 1등급, 154부터 2등급, 178부터 3등급, 209부터 4등급, 252부터 5등급입니다.
해일. 풍속마다 옛 사피어-심프슨 표의 전형적인 해일 높이를 대응시키며, 120 km/h에서 1.2 m, 154에서 1.8 m, 178에서 2.7 m, 209에서 4.0 m, 252에서 5.5 m, 320에서 7.5 m 사이를 보간합니다. 역사적 허리케인 프리셋은 이 값 대신 그 폭풍에서 실제로 측정된 해일 높이를 씁니다. 샌디 3.9 m, 볼라 10 m, 카트리나 8.5 m, 나르기스 4 m, 이언 4.5 m, 하이옌 6 m입니다. 해일은 쓰나미 엔진으로 지형을 채우지만 높이를 열 배 느리게, 2.5 km마다 1 m씩 잃습니다. 해일은 한 번 밀려오는 파도가 아니라 몇 시간에 걸쳐 바다가 천천히 차오르는 현상이기 때문입니다. 잠긴 땅의 사망 비율은 쓰나미보다 완만한 곡선을 따라, 수심 0.5 m 미만의 0.1%에서 6 m 초과의 45%까지 올라갑니다. 1900년 갤버스턴에서는 경보도 없이 4.6 m 해일이 덮쳐 섬 주민의 약 4분의 1이 숨졌는데, 이 사례가 곡선의 중간쯤에 놓입니다.
바람. 눈벽 바깥에서 풍속은 거리의 제곱근에 반비례해 줄어듭니다. v(r) = Vmax·(Rmax/r)0.5이므로 풍속이 기준값 v로 떨어지는 반경은 Rmax·(Vmax/v)²입니다. 최대 풍속 반경은 Willoughby와 Rahn(2004)의 식 Rmax = 46.4·e−0.0155·V + 0.0169·|위도| km(V는 m/s)로 구하며, 10~80 km 사이로 제한합니다. 고리는 5등급, 4등급, 3등급 바람과 허리케인급 바람(119 km/h), 강풍(63 km/h)의 경계를 표시합니다. 바람 자체로 숨지는 사람은 많지 않아서 비율도 작습니다. 5등급 바람 안에 있는 사람의 0.05%, 4등급은 0.015%, 3등급은 0.004%, 허리케인급 바람은 0.0005%이고 강풍 구역은 0입니다.
폭풍은 대칭이고 움직이지 않습니다. 실제 해일은 북반구에서 진로의 오른쪽이 가장 높으며, 비로 인한 홍수, 조석, 해일 위에 얹히는 파도, 제방은 모델에 없습니다.
사람 수를 세는 방법
도시의 밀도는 도시와 넓이가 같은 원 안에 적용합니다(도시를 찾지 못하면 반지름 6 km). 그 바깥에서는 밀도가 사람이 사는 땅의 대략적인 평균인 km²당 60명을 향해 줄어듭니다.
밀도(r) = 60 + (D − 60)·e−(r − R)/(0.8R + 2)
여기서 D는 슬라이더의 밀도, R은 도시 반지름, r은 km 단위의 거리입니다. 이 감소가 없다면 지름 1 km 운석 하나가 지구 인구보다 많은 사람을 죽이게 됩니다.
침수. 잠긴 셀마다 셀 면적 × 밀도 × 수심에 따른 사망 비율을 더합니다. 거리는 클릭한 지점이 아니라 지형 격자의 중심에서 잽니다. 해수면 상승에서는 비율이 1이고, 결과는 이재민으로 표시합니다.
고리. 지진, 분화, 충돌에서는 바깥 고리 안의 원판을 얇은 고리 800개로 나누고, 고리마다 2πr × 폭 × 밀도 × 육지 비율(지형 격자에서 0.6 m보다 높은 셀의 비율)만큼의 인구를 넣습니다. 그와 동시에, 바깥 반경이 450 km 이하라면 코드는 Overpass API에 지점 주변 정사각형 안에서 인구 태그가 있는 city와 town을 모두 요청합니다. 하나라도 찾으면 배경 밀도를 60 /km²로 낮추고, 각 도시의 전체 인구를 그 중심점이 놓인 거리에 더합니다. 처음에는 빠른 추정치가 먼저 나오고, 목록이 도착하면 값이 다듬어집니다.
합계는 82억 명을 넘지 않습니다. 모든 사람이 경보를 받지 못하고 대피하지도 않은 채 집에 있다고 가정합니다.
한계: 왜 자릿수 정도의 추정치인가
- 불완전한 지형. 낮은 해안에서는 높이 오차와 폭이 수십 미터인 셀이 침수가 어디서 멈출지를 좌우합니다.
- 평균한 인구. 경계 안의 밀도는 균일하고, 소도시는 하나의 점으로 다루며, 인구 조사 연도도 제각각입니다.
- 고정된 사망 비율. 실제 희생자 수는 경보, 발생 시각, 건물, 구조 활동에 달려 있습니다. 1994년 캘리포니아 노스리지의 규모 6.7 지진으로는 57명이 숨졌지만, 2010년 아이티의 규모 7.0 지진으로는 10만 명 넘게 숨졌습니다.
- 점으로 다룬 공중 폭발. 실제 공중 폭발은 비스듬한 궤적을 따라 수십 킬로미터에 걸쳐 에너지를 내놓지만, 모델은 클릭한 지점 바로 위, 추정한 고도에 있는 한 점으로 다룹니다.
결과는 정확한 인원수가 아닙니다. 수백 명인지 수십만 명인지를 구별하거나, 도시의 어느 부분이 낮은 곳에 있는지 확인하는 데 쓰세요.
데이터 라이선스와 출처 표기
- 경계, 지명, 인구: © OpenStreetMap 기여자, Open Database License(ODbL). Nominatim과 Overpass API로 조회합니다.
- 고도, 위성 영상, 기본 지도, 검색: © Mapbox, Mapbox 서비스 약관에 따릅니다. 영상과 지도 데이터 제공처는 지도에 표시됩니다.
- 화산: Smithsonian Institution, Global Volcanism Program, Volcanoes of the World.
- 최근 실행 페이지의 지도: OpenFreeMap 타일(OpenMapTiles 스키마), 데이터 © OpenStreetMap 기여자.
출처와 데이터
- Mapbox: Terrain-RGB v1 타일셋 레퍼런스
- Mapbox: Terrain-DEM v1 타일셋 레퍼런스
- Mapbox: 서비스 약관
- OpenStreetMap: 저작권과 라이선스
- Open Data Commons: Open Database License
- OpenStreetMap Foundation: Nominatim 이용 정책
- OpenStreetMap Wiki: Overpass API
- Smithsonian Institution, Global Volcanism Program: Volcanoes of the World
- OpenFreeMap, OpenMapTiles
- Glasstone and Dolan (1977): The Effects of Nuclear Weapons, 3rd edition
- Newhall and Self (1982): The volcanic explosivity index (VEI), Journal of Geophysical Research 87
- USGS: 수정 메르칼리 진도 계급
- 미국 국립허리케인센터: 사피어-심프슨 허리케인 등급
- Willoughby and Rahn (2004): Parametric representation of the primary hurricane vortex, Monthly Weather Review 132
- Rappaport (2014): Fatalities in the United States from Atlantic tropical cyclones, Bulletin of the American Meteorological Society 95
- Collins, Melosh and Marcus (2005): Earth Impact Effects Program, Meteoritics & Planetary Science 40 (비교용으로 든 더 물리적인 충돌 모델이며, HazardSim에서는 쓰지 않습니다)