한국처럼 보이지 않던 해안선 — 145개의 점, 그리고 초록불의 함정
이번 주 지도 작업은 한 문장에서 시작했습니다. "해안선이 실제 한국 지도처럼 보이지 않는다." 맞는 말이었고, 왜 그런지는 세어보고 나서야 알았습니다. 한반도 전체의 윤곽선이 손으로 찍은 145개의 점이었습니다.
한국의 서해안과 남해안은 세계에서 손꼽히는 리아스식 해안입니다. 만과 곶이 수백 개씩 파고듭니다. 145개의 점으로는 그릴 수 없습니다. 아무리 정확하게 찍어도, 점과 점 사이에 있어야 할 만은 존재하지 않습니다.
초록불이 문제를 지키고 있었습니다
가장 배울 점이 많은 부분은 여기입니다. 이 지도에는 자동 검사가 있었고, 계속 통과하고 있었습니다. "해안선 정확도 0.016도." 사실이었습니다. 그리고 아무 의미가 없었습니다.
그 검사는 145개의 점 각각이 실제 해안에 얼마나 가까운지를 쟀습니다. 145개의 점으로 해안선을 표현할 수 있는지는 재지 않았습니다. 점 사이에는 잴 것이 없기 때문입니다. 심지어 해안선을 "개선"하는 스크립트도 있었는데, 그 스크립트가 한 일은 각 점을 실제 해안에 더 가까이 밀어주는 것이었습니다. 숫자는 좋아지고 지도는 그대로였습니다.
점 단위의 정확도는 형태의 충실도가 아닙니다. 이 한 문장에 그동안의 시도가 전부 들어 있습니다.
데이터는 내내 저장소 안에 있었습니다
실측 해안선은 3,072개의 정점으로 7월부터 저장소에 있었습니다. 부족한 것은 데이터도 기술도 아니었습니다. 질문이었습니다. 해안 구간을 실측 데이터로 통째로 다시 만들었고, 145개에서 900여 개로 늘었습니다. 실제 해안선과의 편차는 0.000도입니다.
정확해진 윤곽선은 곧바로 두 개의 잘못된 도시 좌표를 잡아냈습니다. 목포는 리아스식 만이 생기자 바다 한가운데에 있었습니다 — 핀이 원래 0.02도 틀려 있었는데, 뭉뚱그려진 해안선이 그것을 가려주고 있었던 겁니다. 통구는 압록강 북쪽, 그러니까 중국 땅에 있었습니다. 그동안 육지로 인정받은 이유는 옛 윤곽선에 이 핀 하나를 감싸려고 위로 삐죽 솟은 폭 0도짜리 바늘이 있었기 때문입니다.
그리고 저는 깨진 지도를 배포했습니다
정직하게 적습니다. 첫 번째 재구축은 링이 스스로를 17번 교차하는 상태로 배포되었습니다. 교차하는 다각형은 떨어져 나온 조각과 구멍으로 그려집니다. 북쪽이 "뚝뚝 끊겨 보인다"는 지적이 바로 그것이었습니다.
원인은 이어붙이기 로직이었습니다. 해안 정점 중 "가장 긴 연속 구간"만 교체했는데, 이 링의 해안 정점은 연속이 아니었습니다. 국경과 동해안이 만나는 접합점 하나가 북쪽 국경 서열 안에 끼어 있어서 구간을 둘로 갈라놓고 있었던 겁니다. 그래서 손으로 찍은 해안 한 토막이 살아남았고, 실측 데이터가 그 위에 겹쳐 들어갔습니다.
아무 검사도 이것을 잡지 못했습니다. 모든 지도 검사가 정점이 실제 해안에 얼마나 가까운지만 보고 있었고, 교차하는 링은 그 시험을 만점으로 통과하기 때문입니다. 이번에는 도형 자체의 위상을 검사하는 항목을 추가했고, 빌더는 스스로 교차하는 링을 아예 파일에 쓰지 않도록 만들었습니다.
북쪽은 176km 잘려 있었습니다
"여전히 실제 한국보다 잘려 보인다"는 말은 취향의 문제로 넘길 수도 있었습니다. 대신 재봤습니다. 북쪽 국경선은 실제 압록강·두만강보다 최대 1.59도, 약 176킬로미터 남쪽에 있었습니다. 지도가 함경북도 일대를 통째로 잘라내고 있었던 겁니다.
이제 국경은 실제 강줄기 위에 있습니다. 압록강을 거슬러 백두산을 지나 두만강을 따라 하구까지. 백두산 정상은 이 국경에서 유일하게 논쟁의 여지가 없는 고정점이라 기준으로 삼았습니다.
남은 것
정직하게 남겨둡니다. 남해의 수백 개 섬은 아직 그려지지 않았습니다. 실측 데이터 안에서 별도의 도형으로 되어 있고 이번에는 본토만 가져왔습니다. 실루엣에서 가장 크게 빈 부분입니다. 영토 경계선도 여전히 컴퓨터가 만든 직선이라 그려진 산맥을 가로지릅니다. 이건 해안선보다 더 큰 구조 변경입니다.