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