지리공간

공간 데이터란 무엇인가요? 지리공간 기본 사항, 데이터베이스 및 NoSQL 예제

몇 가지 지리공간 데이터 개념에 대한 이 간략한 소개에서는 공간 데이터베이스, 공간 인덱싱, NoSQL에서 GeoJSON 데이터 사용에 대해 다룹니다.

공간 데이터란 무엇인가요?

공간 데이터는 위치 인식 애플리케이션에서 사용할 수 있도록 지리 정보를 인코딩하는 데이터 유형(파일, 데이터베이스, 웹 서비스)입니다.

15년 전 웹 기반 매핑에 관한 책을 썼을 때 독자들은 대부분 새로운 기술을 배워야 했습니다. 지리학자는 기술을 배워야 했고 개발자는 도메인을 배워야 했습니다. 여기에는 웹 서버, SQL 애플리케이션, 약간의 PHP가 포함되었습니다. 하지만 가장 큰 '새로운 것'은 공간 데이터. 오늘날 더 널리 사용되고 있지만, 애플리케이션 개발자는 여전히 이 도메인별 공간 데이터 유형으로 작업하는 방법을 이해해야 합니다.

지리 정보 시스템(GIS)이란 무엇인가요?

지도 제작은 문명만큼이나 오래되었습니다. 바다를 건너는 것부터 도시를 계획하는 것까지, 정보를 수집하고 종이에 기록했습니다*.

우리가 텍스트와 숫자를 디지털화한 것처럼, 지도 제작자들도 점, 선, 다각형 데이터를 디지털 시스템에 넣기 시작했습니다.

이로 인해 지리 정보 시스템(GIS) 도메인. 공간 데이터를 지도에 그래픽 레이어로 그릴 수 있을 뿐만 아니라 지리적 특성과 위치 관계도 분석할 수 있었습니다. 산림 관리, 토지 이용 계획, 교통, 측량 등 다양한 분야에서 이러한 시스템을 활용했습니다.

Geospatial Blueprint view of the lands of the Leland Stanford Jr. University, City of Palo Alto and Estate of Timothy Hopkins.

1900 년 (추정) C. O. Taylor의 스탠포드 대학지도, 출처 : 스탠포드 대학 DavidRumsey.com 항목 1345400.

다음은 다음과 같습니다. 벡터 데이터 유형은 데이터의 점(x, y, z 좌표)과 이를 연결하는 방향으로 만들어지기 때문입니다. 여러 점을 선으로 연결하거나 루프를 닫아 다각형 영역을 만들 수 있습니다.

반면에 래스터 데이터는 위성 이미지, 고도 모델 등 픽셀 형태의 디지털 값 이미지 또는 격자로 만들어집니다. 이러한 유형의 데이터는 이 글의 범위를 벗어납니다.

* 베이 지역 주민들은 다음에서 고대 지도를 확인해 보시기 바랍니다. 데이비드 럼지 지도 컬렉션 온라인 에 보관 물리적 자산을 보유한 스탠포드

공간은 특별했습니다

관계형 데이터베이스 관리 시스템은 공간 객체를 지원했지만 주로 공간 분석가들이 사용했습니다. 이러한 특수한 유형의 벡터 데이터와 데이터베이스는 애플리케이션 및 웹 개발자에게는 다소 난해했습니다.

특수 GIS 소프트웨어의 특수 데이터를 사용하려면 특별한 지식이 있어야 했습니다. 그런 다음 추가 분석 및 애플리케이션 연결을 위해 데이터를 공간 데이터베이스에 로드해야 했습니다.

물론 Google 지도가 나온 후 사람들이 공간 데이터에 대해 더 많이 인식하기 시작했고, 타사 지도 데이터를 통합하는 방향으로 트렌드가 바뀌었지만, 이는 또 다른 이야기입니다.

지리학자들은 일반적으로 ESRI의 데스크톱 매핑 소프트웨어를 사용하여 (정적) 지도 이미지와 PDF를 만들었습니다. (최근에는 무료 오픈 소스인 QGIS.org 프로젝트가 전 세계를 강타했습니다.) 또한 해당 데이터를 내보내 완전히 다른 데이터베이스에서 사용할 수도 있었습니다. 웹 개발자는 해당 데이터를 공간 데이터베이스로 가져온 다음 위치 인식 웹 매핑 애플리케이션 계층으로 쿼리하여 사용자를 위한 이미지를 생성할 수 있습니다.

Map of vector data showing a normalized population distribution in QGIS

QGIS를 통한 바이러스 및 인구 분포 지도 저자 커트 멘케.

공간(지리공간) 데이터베이스란 무엇인가요?

'지리공간 데이터베이스'라고도 하는 공간 데이터베이스는 공간 데이터라고 하는 지도 제작 정보의 점, 선, 면적을 캡처하고 저장하기 위해 구축됩니다. 이러한 데이터베이스는 매우 평범하지만 필드 중 하나에 바이너리 객체(BLOB)를 처리하는 확장 기능이 있는 경우가 많습니다. SQL Server, Oracle, PostgreSQL, Ingres, SQLite에는 모두 공간 애드온이 있습니다.

데이터 양이 증가하고 워크플로우가 변화함에 따라 문제는 더욱 복잡해졌습니다. 개발자들은 단순히 데이터를 생산하고 공유하는 데 그치지 않고 데이터에서 더 많은 정보와 지식을 생산해야 한다는 압박을 받고 있었습니다. 또한 상호 운용성과 효율성에 대한 요구도 있었습니다.

이는 다른 위치 인식 애플리케이션에서 사용할 지도 이미지나 원시 표 형식 데이터를 공유하기 위한 웹에 최적화된 지리공간 서비스의 표준을 만들 수 있는 새로운 기회를 제공했습니다. ESRI의 파일 기반 형식(셰이프 파일, 지리 데이터베이스)가 데스크톱 사용자에게 인기가 있었을 때 많은 웹 개발자는 다음과 같은 엔터프라이즈 데이터베이스의 데이터를 원했습니다. PostgreSQL 는 수년 동안 선도적인 오픈 소스 공간 데이터베이스로 사용되어 왔습니다.

데이터가 데이터베이스에 저장되면 개발자는 워크플로우를 더 잘 제어할 수 있게 됩니다. 마찬가지로, 점점 더 많은 공간 분석가 데이터베이스 시스템의 공간 기능을 사용하기 시작했습니다.

GeoJSON이란 무엇인가요?

웹상의 공간 데이터에 대한 기술 표준이 더욱 발전함에 따라 개발자들은 지리적 인코딩 표준이 내장된 JSON(JavaScript 객체 표기법) 형식을 사용했습니다. GeoJSON 는 벡터 포인트, 선, 다각형을 정의하기 위해 점의 좌표 쌍과 함께 속성 데이터 필드를 보유할 수 있었습니다. 여러 개의 임베디드 객체, 목록, 키/값 매핑을 허용하는 JSON을 기반으로 하는 이 데이터는 지리 데이터에 매우 적합했습니다.

다음은 두 개의 속성 데이터 필드가 있는 기본 라인의 샘플입니다:

개발자들은 JSON이 플랫 파일이나 데이터베이스에서 데이터를 가져오는 한 가지 방법이라는 것을 알고 있습니다. 요청을 받으면 공간 DB는 테이블 형식에서 JSON으로 변환한 후 이를 소비하는 애플리케이션으로 전송합니다.

NoSQL 정렬

좋은 점은 NoSQL 데이터베이스 는 JSON을 직접 사용하도록 만들어졌습니다. 제가 가장 익숙한 Couchbase의 경우, 애플리케이션의 일부로 엄격한 테이블 구조의 스키마 유효성 검사가 필요하지 않은 유연한 스키마는 보너스이기도 합니다. 따라서 특히 데이터 유형과 스키마가 변경될 수 있는 프로토타이핑 단계에서 필요에 따라 쉽게 조정할 수 있습니다.

모든 공간 데이터가 표 형식으로 되어 있는 것은 아니며, 그렇게 하는 것이 합리적일 수도 없는데 굳이 그렇게 해야 할 이유가 있을까요? 예를 들어, 애플리케이션의 사용자 프로필에는 주소가 선택적 객체인 계층형 데이터가 필요할 수 있습니다. NoSQL 데이터 모델. 또는 여러 개의 전화번호를 가질 수 있는 옵션이 있지만 모든 사람이 전화번호를 가지고 있지 않을 수도 있습니다. 이러한 경우 만일을 대비하여 테이블에 빈 열을 유지하고 싶지 않을 것입니다.

공간 데이터를 좌표 목록이 있는 또 다른 객체로 생각하기 시작하면 NoSQL 데이터베이스와 얼마나 잘 맞는지 알 수 있습니다.

분산 컴퓨팅의 특성인 NoSQL은 까다로운 워크로드를 처리하도록 설계되었기 때문에 지리공간 애플리케이션에 사용할 때 항상 고급스러움을 더합니다. 클러스터 기반 컴퓨팅을 사용하면 시간이 지남에 따라 공간 데이터가 증가하고 필요에 따라 더 많은 쿼리 리소스를 쉽게 추가할 수 있습니다.

다음은 몇 가지 이유에 불과합니다. 기업이 NoSQL 데이터를 선택하는 이유 플랫폼.

지리공간 데이터베이스 기능

지도 그리기

개발자가 공간 데이터에 액세스하는 가장 일반적인 기능은 온라인, 모바일 앱 또는 데스크톱에서 지도를 만드는 것입니다. 이는 몇 가지 형태를 취할 수 있지만 주로 애플리케이션이 사용자를 위해 렌더링하는 특정 문서 세트에 대한 요청입니다.

지도 렌더링은 그 자체로 고유한 영역이지만, 이를 지원하는 대부분의 온라인 API(예: MapBox, Leaflet)에는 사용자가 빠르게 실행할 수 있는 몇 가지 기본값이 있습니다. 솔직히 대부분의 온라인 지도는 이미지 위에 몇 개의 포인트 마커만 표시합니다. 따라서 이것은 지도 데이터의 한 가지 사용 사례이기는 하지만 실제로 GIS 사용자가 분석을 수행할 때 선택하는 것은 아닙니다.

공간 데이터베이스는 단순히 문서 집합을 요청하는 것 외에도 쿼리를 기반으로 특정 기능/문서를 필터링할 수 있어야 합니다. 당연히 WHERE 절을 제공하는 SQL 언어를 사용하면 이를 가능하게 하는 데 도움이 됩니다. 특정 지역/구역과 같이 데이터를 필터링하는 보다 고급 지리적 방법도 있는데, 이에 대해서도 다뤄보겠습니다.

공간 인덱싱

지도를 그리기 위해 고급 공간 필터링을 수행하거나 공간 조인(지역 내 상점과 같이 가까운 위치를 기준으로 레코드를 조인)을 수행하려면 지리 데이터를 색인화해야 합니다. 데이터베이스의 다른 필드를 색인하는 것과 마찬가지로, 지리공간 필드 유형에 대한 특별한 색인 방법이 있습니다.

공간 데이터베이스는 일반적으로 데이터 집합의 각 피처를 중심으로 직사각형을 계산하고 이를 쿼리의 대략적인 인덱스로 사용합니다. 이를 최소 경계 사각형(MBR)이라고도 하며, 일종의 R-Tree 인덱스 도 사용됩니다.

spatial indexes shown in QGIS map

QGIS에 표시되는 공간 인덱스 경계 상자

그런 다음 데이터를 쿼리할 때 이러한 인덱스를 사용하여 다른 위치와 겹치거나 거리 내에 있는 공간적 특징을 찾습니다. MBR을 사용하여 특징들이 서로 얼마나 가까운지 확인하여 중요하지 않을 만큼 가깝지 않은 특징들은 무시할 수 있습니다.

카우치베이스는 공간 인덱스를 구축합니다. 전체 텍스트 검색 서비스. 지리적 데이터가 포함된 필드를 지정하면 인덱스가 어떤 종류의 인덱스를 작성할지 알 수 있습니다. 이후 지리적 공간 구성 요소가 포함된 검색 요청은 이러한 인덱스를 사용하지만 사용자가 직접 보거나 상호작용할 필요는 없습니다.

Configuring a geopoint type in the Couchbase search web GUI. That field contains GeoJSON point data.

카우치베이스 검색 웹 GUI에서 지오포인트 유형 구성하기. 'geo' 필드에는 GeoJSON 포인트 데이터가 포함됩니다. 사용 중인 블로그를 보려면 클릭하세요.

공간 쿼리 언어

매핑 애플리케이션은 보이지 않는 곳에서 사용되는 복잡한 공간 쿼리를 숨기는 데 탁월합니다. 예를 들어 사용자가 레이어를 켜거나 끄면 애플리케이션은 실행 중인 쿼리를 변경해야 하며, 필요하지 않은 데이터는 무시해야 합니다. 마찬가지로 사용자가 지도를 확대하면 지도 창이 변경되고 기본 쿼리는 새 지도 창에 대한 데이터만 요청합니다. 애플리케이션이 모든 데이터를 요청하면 항상 사용할 수 없게 됩니다.

쿼리 자체는 몇 가지 종류의 변수를 취하는 함수를 사용합니다:

  • 쿼리의 경계 상자 또는 영역
  • 포함할 레이어 또는 테이블 이름
  • 주어진 지점에서 쿼리까지의 거리
  • 쿼리 영역을 정의하는 다각형의 좌표입니다.

관계형 데이터베이스는 기본 SQL 쿼리를 통해 이 작업을 수행합니다. NoSQL 시스템은 접근 방식이 다양합니다. 예를 들어 Couchbase는 NoSQL 쿼리를 위해 N1QL/SQL 기반 언어를 사용하여 문서 요청을 수행할 수 있습니다.

그러면 다운스트림 애플리케이션에서 지리공간 객체를 직접 사용할 수 있습니다. 예를 들어, 이 블로그에서는 R 프로그래밍 언어 는 데이터를 쉽게 요청하고 리플렛 매핑 패키지를 사용하여 결과를 도출합니다. 고급 처리가 필요하지 않고 기본적인 N1QL/SQL 요청만 하면 됩니다.

하지만 더 많은 지리공간 관련 쿼리를 원할 경우, Couchbase에서는 지리공간 검색 요청 (전체 텍스트 검색 서비스에서) 한 점으로부터의 반경 거리, 직사각형 영역 내, 제공된 다각형 모양 내에서 검색할 수 있습니다. 이렇게 하면 추가적인 공간 라이브러리나 도구 없이도 관심 있는 문서/기록만 추출할 수 있습니다.

고급 공간 작업

하지만 쿼리는 전투의 절반에 불과합니다! 본격적인 GIS 애플리케이션과 공간 데이터베이스에는 더 많은 데이터 생성 기능이 있습니다. 여기에는 다각형의 중심점(중심) 계산, 겹치는 여러 도형 간의 부울 연산(교차, 차이, 결합), 다양한 직렬화 형식(이진, 텍스트, XML, JSON)으로의 변환이 포함됩니다.

오픈 지리공간 컨소시엄(OGC)은 이러한 모든 기능에 대한 사양을 다음과 같은 제목으로 유지 관리합니다. SQL을 위한 간단한 기능. 해당 사양에는 다양한 공간 특징 유형과 기능이 있습니다. 다음은 샘플입니다.

OGC SF SQL geospatial types and functions

다른 표준과 비교한 OGC 단순 지리공간 특징의 유형 및 기능 목록. 출처: https://www.ogc.org/standards/sfs

공간 조인은 예를 들어 점 집합을 연결하고 그 안에 속하는 다각형을 찾는 데에도 매우 유용합니다. 또는 다각형의 한 레이어를 다른 피처의 레이어에 연결할 수도 있습니다. 그러면 두 데이터 집합의 필드를 맵이나 보고서에서 사용할 수 있습니다.

이 모든 것은 분석가에게 매우 강력하고 유용합니다. 그러나 공간 인덱스는 쿼리의 일부에만 도움이 됩니다. 더 복잡한 부분은 새로운 피처를 계산하기 위해 계산 기하학을 수행하는 것입니다. 이를 수행하는 쉬운 방법은 없으므로 리소스 관리(그리고 좋은 커피 메이커)가 정말 중요합니다.

결론

지금까지 다양한 개념에 대해 아주 간략하게 소개해 드렸습니다. 공간 데이터베이스 도메인에 대해 더 자세히 알아가는 데 도움이 되셨기를 바랍니다. 더 많은 지리공간 중심 블로그와 리소스는 Couchbase에서 제공합니다.

Couchbase NoSQL 데이터베이스 다운로드 를 무료로 사용하세요. 노트북에서 개발하여 확장할 준비가 되면 클라우드에 쉽게 배포하세요. 이 튜토리얼을 설치한 다음 따라하세요:

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 타일러 미첼 - 선임 제품 마케팅 매니저

카우치베이스에서 선임 제품 마케팅 매니저로 일하면서 제품에 대한 지식을 대중에게 알리는 동시에 가치 있는 콘텐츠로 현장 팀을 지원하고 있습니다. 경력 절반을 GIS 분야에서 일한 그는 지리공간에 대한 개인적인 열정을 가지고 있습니다. 지금은 AI와 벡터 검색을 가장 중요하게 생각합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.