---
title: 불꽃축제 명당 지도 딸깍 - 한줄 입력으로 서울 99만칸 계산한 명당 지도 만들기
url: https://oosioo.com/p/%EB%B6%88%EA%BD%83%EC%B6%95%EC%A0%9C-%EB%AA%85%EB%8B%B9-%EC%A7%80%EB%8F%84-%EB%94%B8%EA%B9%8D
date: 2026-09-04T05:19:20+00:00
author: SYSOP
summary: 서울세계불꽃축제 명당을 AI에게 한 줄로 물었다. 40분 뒤 지형과 건물 높이로 서울 99만 칸의 시야를 따진 히트맵 지도가 나왔다. 무엇이 실제로 돌아갔고, 어디서 틀렸고, 왜 한 줄로 이게 되는지 뜯어본다.
---
# 불꽃축제 명당 지도 딸깍 - 한줄 입력으로 서울 99만칸 계산한 명당 지도 만들기

딸깍 개발이 한참 유행중이다. 실제 개발 환경 역시 크게 바뀌고 있는 회사들도 있고 논란도 한창이다. 다만 누구든 원하는 뭔가를 제법 가깝게 만들어볼 수 있다는 점은 확실히 좋은 세상이 된 느낌. 이것저것 만들다가 카카오톡에서 친구가 내일 여의도에서 불꽃축제를 한다는 이야기를 했다. 그리고 바로 클로드에게 다음과 같이 요청했다.

> 이번에 한강 불꽃축제가 열린단 말이지? 서울 지도 및 고도 정보 등을 활용해서 어디에서 봐야 불꽃축제가 잘 보이는지를 지도에 히트맵처럼 표시하면 좋겠어.

40분쯤 뒤에 브라우저로 열리는 지도 파일 하나가 나왔다. 서울을 가로세로 30미터 칸으로 쪼갠 99만 칸마다 "여기서 폭죽이 보이는가"를 따져 색으로 칠한 지도였다.

## 결과부터

서울세계불꽃축제 2026은 9월 5일 토요일 저녁 8시부터 9시 10분까지, 마포대교에서 한강철교 사이 구간에서 터진다. 계산 결과 상위는 이랬다.

| 순위 | 자리 | 점수 | 발사점까지 |
|---|---|---|---|
| 1 | 이촌한강공원 서측 | 1.00 | 1.4 km |
| 2 | 노들섬 | 1.00 | 1.4 km |
| 3 | 노들나루공원 | 1.00 | 1.5 km |
| 4 | 사육신역사공원 | 0.99 | 1.3 km |
| 5 | 효사정 | 0.99 | 1.7 km |
| 6 | 여의도한강공원 동측(원효대교 쪽) | 0.99 | 0.65 km |
| 7 | 용양봉저정공원 하늘전망대 | 0.98 | 1.7 km |

```map /embed/fireworks-2026.html 16:10
서울 여의도·이촌 일대 지도 위에 얹은 관람 가시성 히트맵. 밝은 노랑일수록 폭죽이 잘 보이는 자리다. 원효대교 부근 강 위의 주황색 점 다섯 개가 발사 지점이고, 그 둘레로 여의도·이촌 한강공원 강변이 길게 노랗게 빛난다. 강에서 멀어진 도심 안쪽은 건물에 가려 색이 거의 없고, 남산 사면과 동작구 능선처럼 지대가 높은 곳에만 따로 밝은 자리가 나타난다. 파란 점선은 상층풍을 타고 연기가 흘러갈 방향. 점을 누르면 그 자리의 점수와 거리가 나온다. 배경지도 © OpenStreetMap 기여자
```

서쪽 한강공원들은 한 단계 아래였다. 양화 0.79, 선유도 0.76. 시야는 트여 있는데 다른 이유로 깎였다.

바람 때문이다. 폭죽이 터지는 높이인 지상 180미터에서 5일 밤 8시 바람은 동북동에서 초속 9.8미터로 분다. 연기는 서남서로 흘러간다. 양화·선유도·망원처럼 서쪽에 자리를 잡으면 연기 너머로 보게 되고, 이촌·노들섬·반포처럼 동쪽에 있으면 맞바람이라 시야가 깨끗하다. 상위 여섯 자리 중 다섯이 동쪽인 데는 이 이유가 겹쳐 있다.

날씨 자체는 좋다. 기온 23.5도, 강수확률 0퍼센트, 전운량 16퍼센트, 시정 20킬로미터.

## 고도만으로는 답이 안 나온다

처음에 내가 떠올린 그림은 단순했다. 높은 데가 잘 보이겠지. 남산이나 응봉산 같은.

그런데 서울에서 시야를 가리는 건 산이 아니라 건물이다. 한강에서 3킬로미터 떨어진 평지에 서면 250미터 상공의 폭죽을 올려다보는 각도가 5도쯤 된다. 앞에 15층짜리 아파트 한 동만 있어도 끝이다.

그래서 지형 데이터에 건물 높이가 들어 있느냐가 전부인데, 여기서 세 번을 갈아엎었다.

**첫 번째, SRTM.** 미국 우주왕복선이 레이더로 훑어 만든 전 세계 고도 데이터다. 남산을 259미터로 찍었다. 실제 262미터니 정확하다. 그런데 여의도 파크원 자리를 13미터라고 했다. 333미터짜리 건물이 서 있는 자리다.

**두 번째, 코페르니쿠스 GLO-30.** 유럽우주국이 만든 것으로 더 최신이다. 남산을 267.5미터로 찍어 오히려 더 정확했다. 그리고 63빌딩 자리를 18미터라고 했다. 249미터 건물이다.

여기서 이유가 드러난다. 전 세계 고도 데이터는 대부분 **땅을 재려고** 만든 물건이다. 건물은 잡음이라 지워버린다. 지질 조사나 홍수 예측에는 그게 맞지만, 도시에서 시야를 따지는 일에는 정확히 반대로 쓸모가 없다.

**세 번째로 찾은 것**이 유럽연합 공동연구센터가 만든 전 지구 건물 높이 데이터였다. 100미터 칸마다 그 안에 선 건물들의 평균 높이가 적혀 있다. 여기에 오픈스트리트맵에서 서울 지역 건물 69,380동을 따로 받아 겹쳤다. 층수나 높이가 적힌 건 16,570동이었고, 그중 가장 높은 값이 322미터로 나왔다. 여의도 파크원이다. 이제야 앞이 보이기 시작했다.

세 판을 갈아엎는 데 걸린 시간이 대략 20분이다. ** 나는 그동안 아무것도 하지 않았다. 사실 위에 적힌 여러 사실이나 판단 역시 클로드가 알아서 찾아와 판단까지 수행한 내용이다. 어디까지나 내가 작성한 요청은 "~히트맵처럼 표시하면 좋겠어." 였으니까. **

## 어떻게 계산했나

원리 자체는 어렵지 않다. 이런 상상을 하면 된다.

폭죽이 터지는 자리에 아주 밝은 전구가 하나 있다고 치자. 그 전구에서 사방으로 빛줄기를 쏜다. 빛이 땅에 닿는 곳은 폭죽이 보이는 곳이고, 건물이나 산에 막혀 그림자가 지는 곳은 안 보이는 곳이다. 지도쟁이들이 **가시권(viewshed)**이라고 부르는 계산이 딱 이것이다.

실제로는 이렇게 돌렸다.

- 빛줄기를 **4,000방향**으로 쏘고, 15미터마다 높이를 확인하며 15킬로미터까지 나간다
- 발사점은 한 곳이 아니다. 마포대교에서 한강철교 사이 강 한복판 **다섯 자리**를 잡았다
- 폭죽이 터지는 높이도 하나가 아니다. 70·120·180·250·320·400미터 **여섯 단계**
- 다섯 곱하기 여섯, **서른 번**을 돌려 "몇 개나 보이는가"로 점수를 매겼다

높은 폭죽만 보이고 낮은 게 안 보이면 반쪽짜리라 점수를 깎았다. 실제로 그렇다. 낮게 터지는 것까지 보여야 제대로 본 축에 든다.

지구가 둥근 것과 공기가 빛을 살짝 휘게 하는 것도 넣었다. 10킬로미터 거리에서 6.8미터쯤 차이가 난다. 이런 건 사람이 챙기라고 시키지 않았는데 알아서 들어가 있었다.

서른 번 계산에 50초 걸렸다.

## 어디서 틀렸나

계산이 끝나고 명소별 점수를 뽑아봤더니 **남산 정상이 0.08점**으로 나왔다. 100점 만점에 8점이다. 말이 안 된다. 남산에서 여의도 쪽은 훤히 트여 있다.

그래서 시선이 어디서 막히는지 단면을 떠봤다.

```
== 남산 정상부  (표고 268 m, 관측고 269 m, 발사점까지 4.70 km, 폭발 250 m)
   최소 여유 -48.0 m @ 50 m 지점  (지형 257 + 건물 60 = 317 m)
```

50미터 앞에서 317미터짜리 무언가에 막혀 있었다. **N서울타워였다.** 찍어준 좌표가 하필 타워 발치였고, 타워가 제 시야를 제가 막고 있었다. 광장 쪽으로 50미터만 옮기니 0.79점이 됐다. 데이터는 멀쩡했고 좌표가 문제였다는 걸 단면 한 장이 잡아냈다.

같은 방식으로 응봉산도 뜯어봤다. 이쪽은 0.06점이 진짜였다.

```
== 응봉산  (표고 95 m, 발사점까지 7.83 km, 폭발 250 m)
   최소 여유 -22.9 m @ 3000 m 지점  (지형 108 + 건물 72 = 180 m)
```

3킬로미터 앞 매봉산 능선에 막힌다. 7.8킬로미터 떨어진 곳에서 250미터 상공을 올려다보는 각도는 1.1도밖에 안 된다. 거의 수평이라 능선 하나에 전부 가린다. 야경 명소라는 평판은 불꽃과 별개였다.

이렇게 되짚는 과정에서 계산 자체의 버그도 두 개 나왔다.

**하나.** 효사정과 사육신역사공원이 0점으로 나왔다. 신문마다 명당으로 꼽는 자리다. 원인은 어이없었다. 시선이 막히는지 확인할 때 **관측자가 서 있는 칸부터** 검사하고 있었다. 내가 서 있는 자리에 건물이 있으면 그 건물이 내 시야를 가린다고 판정하고 있었다. 자기 칸을 빼자 두 곳 다 0.99점이 됐다.

**둘.** 여의도 한강공원 강변이 0점이었다. 강물 위에는 설 수 없으니 물은 계산에서 빼야 하는데, 물을 "고도 5.5미터 이하"로 판정했더니 강변 산책로(3미터)까지 강물로 분류돼버렸다. 오픈스트리트맵의 실제 하천 경계선으로 바꿨다. 이때 한강이 여러 조각으로 나뉘어 저장돼 있고 밤섬·노들섬은 그 안의 구멍으로 표시된다는 것까지 처리해야 했다.

마지막 검산은 이랬다. 완성된 순위 상위권이 신문이 꼽은 명당 목록과 그대로 겹쳤다. 이촌한강공원, 노들섬, 노들나루공원, 사육신역사공원, 효사정, 용양봉저정공원. 방법이 다른데 답이 같았다.

## 도구가 없으면 만든다

이 계산을 돌린 컴퓨터에는 지도 라이브러리가 하나도 깔려 있지 않았다. 파이썬 기본 설치만 있고 패키지를 받을 방법도 막혀 있었다.

보통은 여기서 끝난다. "환경 세팅부터 해야 해서요."

대신 필요한 걸 그 자리에서 만들었다. 위성 고도 파일을 읽는 코드, 그 안에 든 압축을 푸는 코드, 결과를 그림 파일로 내보내는 코드. 압축 해제 쪽은 한 번에 안 되어서 값이 이상하게 나왔는데, "압축을 푼 결과의 크기가 예상과 같은가"를 확인하는 검사를 스스로 붙여 잡아냈다.

일반인에게 이게 뜻하는 바가 있다. **"환경이 안 갖춰져서 못 한다"가 예전만큼 통하지 않는다.**

## 그래서, 왜 한 줄로 되는가

세 가지가 겹쳤다.

**첫째, 재료가 이미 다 공개돼 있다.** 유럽우주국의 전 세계 고도 데이터, 유럽연합의 건물 높이 데이터, 오픈스트리트맵의 건물·하천, 시간별 기상 예보. 전부 무료고 가입도 필요 없다. 예전의 진짜 병목은 "이런 게 있는 줄 몰라서"였다. 그 병목이 사라졌다.

**둘째, 형식의 벽이 낮아졌다.** 위성 데이터는 낯선 파일 형식과 낯선 좌표계로 되어 있다. 예전엔 이걸 뚫는 데만 며칠이 걸렸다. 지금은 몇 분이다.

셋째는 스스로 되짚는다는 점인데, 셋 중에 이게 제일 크다. 63빌딩이 18미터로 나온 걸 보고 "이 데이터로는 안 되겠다"고 판단한 것, 남산이 0점인 걸 보고 단면을 떠본 것. 이게 없으면 그럴듯한 쓰레기가 나온다. 오히려 더 위험하다. 지도 모양을 하고 있으면 사람은 믿어버리기 때문이다.


## 그래서 딸깍 하려면 뭐 어떻게 하면 되는데?

아마 대부분은 불꽃놀이 말고 이게 궁금하겠지. 다들 딸깍이라고 하는데 내가 하면 잘 안되더라 혹은 그런걸로 제대로된 퀄리티의 뭔가를 만들기는 어렵지 않나. 그런데 사실 잘만 쓰면 제법 괜찮은 결과물을 빠르게 얻을 수 있고, 실제로 산업 환경에 적용할법한것도 잘 만들기도 한다. 물론 유지보수나 추가 개발 등은 별개지만.

딸깍을 위한 기본적인 원칙을 몇 가지 알려주자면.

**목적과 결과물의 꼴을 같이 말한다.** 내 문장에는 "어디서 잘 보이는지"(목적)와 "지도에 히트맵처럼"(꼴)이 둘 다 있었다. 목적만 말하면 표가 나오고, 꼴만 말하면 예쁜데 쓸모없는 게 나온다.

**데이터를 지정하지 않는다.** 어떤 공개 데이터가 있는지는 내가 아는 것보다 기계가 아는 게 많다. 내가 "SRTM 써"라고 했으면 건물이 빠진 채로 끝났을 것이다.

**결과가 이상하면 근거를 요구한다.** 남산이 0점으로 나왔을 때 "왜 이렇게 나왔는지 근거를 보여달라"는 한마디가 버그 두 개를 끌어냈다. 이 한마디를 안 하면 틀린 지도를 그대로 받는다.

**한계를 먼저 물어본다.** "이 결과에서 믿으면 안 되는 부분이 뭐냐"고 묻는다. 대답이 안 나오면 그 결과는 아직 덜 됐다.

## 딸깍은 맞는데 한계도 명확하다.

정직하게 적어둔다.

건물 높이 데이터가 100미터 칸의 **평균값**이라 초고층을 낮춰 잡는다. 실제로는 이 지도가 말하는 것보다 더 가린다. 점수가 낙관적으로 나왔을 수 있다.

가로수, 육교, 현수막처럼 눈높이에 걸리는 것들은 아예 들어 있지 않다. 강변 산책로에서 실제로 시야를 가리는 건 이런 것들인 경우가 많다.

**인파와 통제는 반영돼 있지 않다.** 원효대교는 5일 아침 9시부터 이튿날 새벽 3시까지 전면 통제되고, 여의나루역은 밤 8시 40분부터 한 시간 임시 통제에 사람이 몰리면 무정차로 지나간다. 점수 1점짜리 자리에 못 들어갈 수 있다.

지도는 참고 자료다. 이런 계산은 "여기가 가장 좋다"를 알려주기보다 "여기는 아예 안 보인다"를 걸러내는 데 훨씬 쓸모가 있다.



### 재미있게 읽었다면 꼭 의견을 달아달라.
솔직히 글쓰는건 딸깍하지 않았다.
그리고 이렇게 된다고 해서 모든것이 딸깍이 될거라는 생각은 하지 않기를 바란다.
딸깍 되던데 왜 너는 안된다고 하고 느리냐고 핀잔을 들으면서도 묵묵히 개발하고 있는 개발자들에게 심심한 위로를 드리며 마친다.

