관망 GIS 데이터는 어디에 담기나
한눈에 보기
- 도형과 속성
- 관망 자료는 위치(도형)와 속성이 한 몸이다— 좌표를 일반 숫자 칸에 흩어 담으면 데이터베이스가 꺾인 점의 나열을 하나의 도형으로 읽어 내지 못한다. 그래서 자료가 커질수록 느려지는데, 그 정도는 자료 양과 묻는 방식에 달렸다
- SQLite·SpatiaLite
- 파일 하나가 곧 데이터베이스이고, 거기에 도형 자료형·공간 색인·공간 함수를 더한 확장이 SpatiaLite다— 서버를 따로 두지 않아 현장 노트북에서도 같은 파일을 연다. 도형까지 제대로 보려면 그 노트북에도 SpatiaLite 를 다루는 도구가 있어야 하고, 여럿이 동시에 고치는 운영에는 맞지 않는다
- OGC 표준
- SpatiaLite 는 표준이 아니라 확장이고, 표준을 따르는 범위는 도형을 주고받는 방식·함수 이름·좌표계를 적어 두는 표의 짜임 같은 것들이다— 「표준 준수」는 범위를 밝혀야 뜻이 서므로, 사양서에 범위를 적고 인수 시험에서 실제로 다른 도구로 열어 본다
관망 시설 자료는 표 한 장으로 끝나지 않습니다. 관 지름과 재질은 칸에 적히지만, 그 관이 어디서 어디까지 묻혀 있는가는 한 칸에는 적히지 않습니다. 위치와 속성을 한 덩어리로 담으려면 그릇부터 정해야 하고, 그 그릇을 무엇으로 정하느냐가 몇 해 뒤 자료를 옮길 수 있는지까지 갈라 놓습니다.
표에 담기지 않는 것 — 위치
시설 대장은 표로 만들 수 있습니다. 관마다 한 줄을 두고 지름·재질·매설 연도를 칸에 적으면 됩니다. 그런데 관에서 자주 쓰이는 값 가운데 하나가 어디서 어디까지 묻혀 있는가이고, 이것은 숫자 한 칸에 들어가지 않습니다. 관은 직선 하나가 아니라 여러 번 꺾이며 지나가므로, 꺾이는 점을 순서대로 늘어놓아야 비로소 그 모양이 됩니다.
이것을 표에 억지로 담을 수는 있습니다. 꺾이는 점의 개수가 관마다 다르므로 칸 수를 미리 정할 수는 없고, 점을 한 줄에 하나씩 담는 표를 따로 두어 관 번호와 순서를 함께 적는 식이 됩니다. 다만 그렇게 담으면 데이터베이스는 그 숫자가 좌표라는 것을 모릅니다. 숫자 칸이므로 「X가 얼마에서 얼마 사이」 같은 범위 판정은 그대로 되고 일반 색인도 걸립니다. 하지만 꺾인 점의 나열을 하나의 도형으로 읽어 내지는 못합니다. 그래서 「이 영역 안을 지나는 관을 모두 뽑아라」에 정확히 답하려면 관마다 그 관을 감싸는 네모 상자를 미리 구해 두었다가 그것으로 후보를 추리고, 추린 것마다 프로그램이 도형을 다시 맞춰 봐야 합니다. 꺾이는 점만으로 범위를 따지면 영역을 가로지르기만 하는 관이 빠집니다. 자료가 몇 백 건일 때는 티가 나지 않다가, 도시 하나가 들어오면 느려지기 시작합니다. 얼마나 느려지는지는 자료 양과 묻는 방식에 달렸습니다.
그래서 도형을 자료형으로 아는 그릇이 필요합니다. 관은 선, 밸브와 펌프는 점, 건물과 행정 경계는 면으로 담고, 그 도형에 속성 칸이 함께 붙어 있는 구조입니다. 지리정보시스템(GIS)이라고 부르는 것의 바탕이 이것입니다.
파일 하나가 곧 데이터베이스 — SQLite
SQLite 는 파일 하나가 그대로 데이터베이스인 방식입니다. 서버 프로그램을 따로 띄우지 않고, 프로그램이 그 파일을 직접 열어 읽고 씁니다. 형식이 공개돼 있고 읽는 도구도 여럿이라, 만든 회사의 프로그램이 없어져도 표와 속성 값을 못 여는 일은 드뭅니다. 다만 도형 칸은 다릅니다 — 그 까닭은 다음 절에 적었습니다.
관망 자료에 이 방식이 맞는 이유는 자료가 통째로 옮겨 다니기 때문입니다. 파일 하나만 챙기면 백업도 이관도 됩니다. 현장에 노트북을 들고 나가 같은 파일을 그대로 여는 것도 됩니다.
-wal)에 남아 있습니다. 열린 채로 본 파일만 떠 가면 그만큼이 빠집니다.
프로그램을 정상적으로 닫은 뒤에 복사하거나,
데이터베이스가 제공하는 백업 기능을 쓰십시오.
그 파일을 연 프로그램이 모두 닫히면 남아 있던 내용이 본 파일에 합쳐집니다.
도형을 다루게 해 주는 것 — SpatiaLite
SQLite 자체는 도형을 모릅니다. 여기에 공간 기능을 더한 확장이 SpatiaLite 이고, 크게 세 가지를 얹어 줍니다.
- 도형 자료형 — 점·선·면을 칸 하나에 통째로 담습니다. 관 한 줄이 지나온 꺾인 점들이 흩어지지 않고 한 값으로 붙어 있습니다
- 공간 색인 — 「이 근처」에 있을 만한 것을 먼저 골라내는 장치입니다. 책 뒤의 찾아보기처럼 볼 자리를 좁혀 줍니다. 다만 질의문에 색인을 쓰라고 적어야 쓰입니다
- 공간 함수 — 길이·면적을 구하거나 두 도형이 닿는지·품는지를 따지는 계산을 질의문 안에서 그대로 씁니다
공간 색인에 대해서는 한 가지를 짚어 두어야 합니다. 색인이 골라 준 것이 곧 답은 아닙니다. 색인은 도형을 감싸는 네모 상자를 기준으로 후보를 좁히는 단계이고, 실제로 걸치는지는 그다음에 도형끼리 다시 따집니다. 영역 안의 관을 뽑는 공간 검색도 질의문에 색인을 쓰도록 적었을 때 이 두 단계를 거쳐 답을 냅니다. 색인은 저절로 쓰이지 않아서, 적어 두지 않으면 전부 훑습니다. 검색 기능 자체는 따로 다룹니다.
OGC 표준이 정하는 자리
OGC(Open Geospatial Consortium)는 공간정보를 주고받는 방식을 표준으로 정하는 국제 단체입니다. 관망 자료와 맞닿는 대목은 단순 지형지물(Simple Features) 계열의 표준군이고, 크게 넷을 정합니다.
- 도형을 어떤 종류로 나눌지 — 점·선·면과 그것들의 묶음
- 도형을 어떻게 적을지 — 사람이 읽을 수 있는 글자로 적는 방식(WKT)과, 자리를 아끼고 빨리 읽히도록 이진으로 적는 방식(WKB)
- 그 도형이 어느 좌표계의 숫자인지를 함께 달아 둘 것
- 도형을 다루는 함수의 이름과 뜻 — 길이·면적·포함 판정 등
좌표계 항목은 특히 놓치기 쉽습니다. 도형은 결국 숫자 쌍의 나열이라, 어느 좌표계에서 잰 숫자인지 적혀 있지 않으면 다른 자료와 겹쳐 놓을 수 없습니다. 빠진 좌표계를 나중에 되찾을 수 없는 것은 아닙니다. 다만 그때는 자료를 만든 사람에게 물어보거나 아는 지점과 맞춰 보며 되짚어야 하고, 몇 해 지나면 물어볼 사람부터 없는 경우가 많습니다.
저장 형식 자체를 정해 둔 OGC 표준도 따로 있습니다 — 지오패키지(GeoPackage)입니다. 이것도 SQLite 파일 하나를 그릇으로 쓰지만, 표와 칸의 이름부터 도형을 적어 넣는 방식까지 표준이 정해 두었다는 점이 다릅니다. 그래서 「SQLite 에 담았다」와 「OGC 가 정한 저장 형식으로 담았다」는 같은 말이 아닙니다. 사양서에는 어느 쪽인지를 적어야 뜻이 섭니다.
- 단순 지형지물 접근 · 제1부 공통 구조 — 판 1.2.1 · 문서번호 06-103r4 · 발행일 2011-05-28
- 단순 지형지물 접근 · 제2부 SQL 방식 — 판 1.2.1 · 문서번호 06-104r4 · 발행일 2010-08-04
- 지오패키지 부호화 표준 — 판 1.4.0 · 문서번호 12-128r19 · 발행일 2024-02-06
「표준을 따른다」는 말을 어떻게 확인하나
표준을 따랐다는 말의 값어치는 지금 잘 도는 데 있지 않습니다. 몇 해 뒤 다른 도구로도 열리는가에 있습니다. 그 값어치는 시스템을 새로 놓을 때가 아니라 바꿀 때, 또는 자료를 다른 기관에 넘길 때 드러납니다.
다만 표준을 따랐다고 해서 어느 도구에서나 똑같이 열린다고 보기는 어렵습니다. 도구마다 지원하는 범위와 판이 다르기 때문입니다. 그래서 발주·인수 단계에서는 말이 아니라 아래를 확인합니다.
| 확인할 것 | 왜 |
|---|---|
| 저장 형식의 이름과 판 | 「GIS 자료로 납품」이라는 말만으로는 좁혀지지 않습니다. 특정 회사 도구가 있어야만 열리는 형식이면 나중에 발이 묶입니다 |
| 표준의 어느 부분까지 따르는가 | 「표준 준수」는 범위가 넓은 말입니다. 도형을 적는 방식까지인지, 함수와 색인까지인지가 다릅니다 |
| 도형에 좌표계가 적혀 있는가 | 적혀 있지 않으면 그대로는 다른 기관의 자료와 겹쳐 볼 수 없습니다. 뒤늦게 되짚을 수는 있으나 그 일에 사람과 시간이 듭니다 |
| 다른 도구로 실제 열어 봤는가 | 납품한 프로그램에서 잘 보이는 것은 확인이 아닙니다. 다른 회사 도구로 열어 보는 것이 값싸게 걸러 내는 방법입니다. 다만 도구 하나로 열렸다고 표준을 다 지켰다는 뜻은 아니므로, 어느 도구로 열지도 함께 정해 둡니다 |
인수 시험 항목에 「자료 파일을 다른 GIS 도구로 열어 관·밸브가 제자리에 보이는지 확인」 한 줄을 넣어 두면, 말로 오가던 다툼이 눈으로 보이는 결과로 바뀝니다.
한국디지탈콘트롤의 관망 블록 통합관리 시스템(자사 제품)도 자료를 SQLite 파일 하나에 담고, 도형은 SpatiaLite 확장으로 다룹니다. 현장에서 파일 하나를 그대로 들고 다니며 볼 수 있다는 점이 관망 자료에 맞기 때문입니다. 그래서 이 글에 적은 주의 사항도 자사 제품을 쓰실 때 그대로 따져 보셔야 합니다. 여러 사람이 온종일 나눠 입력하는 운영이라면 서버형을 함께 놓는 구성을 검토해야 하고, 자료를 다른 기관에 넘길 일이 있다면 어느 형식으로 내보낼지를 사양서에 적어 두어야 합니다. 「표준을 따른다」는 말도 범위를 밝혀야 뜻이 섭니다. 자사 제품을 검토하실 때도 그 범위를 물어보시는 것이 맞습니다.
