본문 바로가기

SIA 인턴

OpenLayers 개념 및 용어 정리

이 글에서는 백마 인턴쉽으로 들어가게된 SIA에 출근하기 전에 Openlayer 라이브러리에 대해 학습한 내용을 정리합니다.

 

SIA에서는 Openlayer 기반의 지도 서비스를 제공하고 있습니다. 따라서 Openlayer에 라이브러리에 대한 이해와 이를 리액트없이 사용해보고(바닐라) 리액트에서 간단한 프로젝트를 진행해보는 것을 목표로 학습을 진행합니다.

용어

OpenLayers: Completely free and open source, front-end JavaScript library for building interactive web maps. OpenLayers Can display different types of geospatial data such as raster, vector, markers from any source.

 

 

GPS(Global Positioning System)는 세개 이상의 위성 신호를 통해 수신기의 위치를 계산할 수 있는 기법이다. 다양한 방면에서 사용되는 GPS를 통해 우리는 공간정보라는 디지털 시대에서 공간을 디지털화한다는 것이 어떤 능력을 발휘하는지 엿볼 수 있다.

 

GIS(Global Information System)은 GPS와 같이 공간 정보를 다루는 모든 기술에 대해 포괄적인 기술을 의미한다. GPS 뿐만 아니라, 지도,  좌표계와 같이 공간과 엮이는 모든 기술은 GIS라는 커다란 범주로 묶인다.

 

공간이란 무엇으로 이루어져있을까? 공간은 점(Point), 선(Line), 면(Polygon)으로 이루어진다.

- 공간에 점을 하나 찍으면 점이 생긴다.

- 무수히 많은 점을 연달아 찍으면 선이 생긴다.

- 무수히 많은 선을 연달아 그으면 면이 생긴다.

 

- 점: 하나의 (x, y)로 이루어진다.

- 선: 다수의 (x, y)로 이루어진다. 단, 가장 처음 (x, y)와 마지막 (x, y)가 달라야 한다.

- 면: 다수의 (x, y)로 이루어진다. 단, 가장 처음 (x, y)와 마지막 (x, y)가 서로 같아야 한다.

 

SHP(Shape)

가장 대표적인 공간정보 데이터 포맷이다. 미국의 ESRI에서 공간정보 데이터를 위해 고안한 형식이다. SHP는 일반 데이터 컬럼은 데이터 형식에 맞게 저장하고(VARCHAR, NUMBER, DATE 등) 위치정보만 정해진 규격으로 저장한다. 해당 바이너리를 통해 데이터의 형식 및 좌표 데이터를 산출할 수 있다. 

 

SHP 파일은 기본적으로 아래 4가지 파일로 이루어져있다.

 

- shp: 벡터 도형 데이터(핵심)

- shx: 벡터 도형 인덱스

- dbf: 각 도형의 속성 데이터

- prj: 좌표 정보

 

공간정보 뿐만 아니라 다양한 부가 데이터를 쉽게 저장할 수 있으며, 구조 상 데이터베이스와 매우 유사하다는 이점이 있으며, 거의 대부분의 GIS 툴이 SHP를 지원한다. 이러한 범용성에 힘입어 공간정보 데이터의 표준이 되었고, 대부분의 공간 정보는 기본적으로 SHP로 제공된다고 봐도 무방하다. 즉 공간 정보 데이터는 SHP 하나만 알고 있어도 된다.

GeoJSON

공간 정보를 표현하기 위해 정해진 방식으로 구성된 JSON이다. JavaScript와 친숙한 JSON을 차용함으로써, HTTP 통신으로 공간정보를 쉽게 호출하는데 쓰인다. 이러한 특성 때문에, 공간 정보 데이터를 보관한다는 목적보다는 HTTP 데이터 통신시 주로 사용한다. 물론 GeoJSON도 공간 정보를 보관하는데 무리가 없으며, 인지도 있는 GIS 툴은 GeoJSON을 지원한다. 또한 SHP와 달리 데이터의 CRUD에 별다른 툴이 필요하지 않다는 장점이 있다.

 

QGIS

SHP를 여는 대표적인 툴은 두가지가 있다.

- ArcGIS: ESRI에서 개발한 강력한 퍼포먼스를 가진 프로그램. GIS 업계에서 압도적인 파이를 가지고 있지만 비싸다.

- QGIS: 오픈소스 프로그램. 무료이지만, 대용량 처리 시 좀 버벅인다.

 

타일맵 제작이나 초대용량 데이터 처리가 아니라면, 대부분은 QGIS로 충분히 커버할 수 있다. 공간 정보 데이터에 대한 충분한 이해 없이 OpenLayers를 다뤄봤자, 혼란만 가중된다. 때문에 QGIS를 통해 SHP를 다루는 방법을 먼저 다루고 넘어가야한다.

 

QGIS는 Open Street Map(이하 OSM) 레이어를 기본으로 제공한다.

 

OSM(Open Street Map)

OSM이란, 전세계 지도 종사자들이 자율적으로 관리하는 세계지도이다. 각국의 지도는 해당 국가의 개발자들이 기여하므로, 로컬라이징은 물론, 세계화도 잘 되어잇어 당장 간편하게 쓰기 좋은 지도이다. 단 네이버나 카카오처럼 국내에 특화된 지도는 아니라서, 국내 한정 서비스에 적용하기에는 다소 아쉽다.

 

OpenLayers 개념

Map 객체 구조

OpenLayers의 핵심이 되는 Map 객체엔 다양한 객체가 있다. 이 객체들이 서로 모이고 역여서 하나의 상호작용 가능한 맵이 구성된다. 하나의 맵에 많은 객체들이 연관된 만큼, 각각의 객체들이 무엇을 의미하는지 파악하지 못하면 원하는 걸 구현하기 위해 어떤걸 사용해야하는지 모르는 사태가 벌어진다. 

 

 

위 그림은 OpenLayers의 주요 객체들을 도식화한 것이다.(그림의 객체가 OpenLayers의 전부는 아님)

 

- Feature: 점, 선, 면과 같은 요소(벡터 레이어 한정)

- Source: 레이어의 데이터 원천. Feature의 모음과 같다.(SHO, GeoJSON)

- Layer: 데이터 원천을 토대로 정의한 데이터셋(벡터, 이미지)

- View: 사용자가 현재 맵을 바라보는 방식의 정보

- Interaction: 맵의 상호작용 요소(Zoom in, out 버튼 등)

- Overlay: 맵에 표시할 요소

 

이를 잘 알아두면, 내가 필요한 정보에 따라 어떤 객체에 접근해야하는지 설계할 수 있다. 예를 들어, 각 Feature에 접근하고 싶다면, Map의 Layer 객체에 접근해야한다. 또한 사용자가 바라보는 위치의 중심, 영역이 필요하다면 View 객체에 접근해야한다. 

 

 

Reference

아래 블로그의 내용을 정리했습니다.

 

OpenLayers를 여행하는 개발자를 위한 안내서 - 1. 머릿말 - 𝝅번째 알파카의 개발 낙서장

공간정보, 지리쪽에 업이 있거나 관심있는 사람이 아니라면, GIS라는 단어는 다소 생소한 단어다. 혹자는 GIS가 아니라 GPS 아니냐고 반문하기도 한다. GPS(Global Positioning System)는 3개 이상의 위성 신

blog.itcode.dev

 

 

'SIA 인턴' 카테고리의 다른 글

Ovision Admin 페이지 개발 | SIA 인턴  (0) 2023.03.14
Protocol Buffer  (0) 2023.03.02