본문 바로가기

GIS

[GIS] OGR 이란?

GIS(Geographic Information System) 개발을 하다 보면 GDAL, OGR, PostGIS, GeoJSON, Shapefile 같은 용어를 자주 접하게 된다. 특히 공간정보 데이터를 다루는 개발자라면 OGR이라는 이름을 한 번쯤은 들어봤을 것이다.

하지만 OGR이 정확히 무엇이며 어떤 역할을 하는지 설명할 수 있는 사람은 생각보다 많지 않다.

이번 글에서는 OGR의 개념부터 실제 활용 사례까지 정리해보자.


OGR이란?

OGR은 원래 OGR Simple Features Library라는 이름의 오픈소스 라이브러리였다.

현재는 GDAL 프로젝트에 통합되어 있으며, 일반적으로는 다음과 같이 이해하면 된다.

OGR = 벡터(Vector) 공간정보 데이터를 읽고, 쓰고, 변환하는 엔진

쉽게 말해 GIS 세계의 "벡터 데이터 통역사"라고 생각하면 된다.

다양한 공간정보 포맷을 서로 변환하고 동일한 방식으로 접근할 수 있도록 도와준다.

예를 들어 다음과 같은 데이터 형식을 모두 처리할 수 있다.

  • Shapefile (.shp)
  • GeoJSON (.geojson)
  • KML (.kml)
  • GeoPackage (.gpkg)
  • PostGIS
  • SQLite
  • GML
  • CSV

GDAL과 OGR의 차이

GIS 입문자들이 가장 많이 헷갈리는 부분이다.

실제로는 다음과 같이 구분하면 이해하기 쉽다.

 

구분
역할
GDAL 래스터(Raster) 데이터 처리
OGR 벡터(Vector) 데이터 처리

예를 들어

GDAL

다음과 같은 데이터를 다룬다.

  • 위성영상
  • 항공사진
  • DEM
  • DSM
  • DTM
  • GeoTIFF
각 픽셀이 값을 가지는 형태

OGR

다음과 같은 데이터를 다룬다.

  • 건물
  • 도로
  • 행정구역
  • 하천
  • 폐기물 영역
  • 객체 탐지 결과
Point
Line
Polygon

형태의 데이터를 처리한다.


OGR이 필요한 이유

만약 OGR이 없다면 개발자는 포맷마다 별도의 코드를 작성해야 한다.

예를 들어

Shapefile 읽기
GeoJSON 읽기
KML 읽기
PostGIS 읽기

를 각각 구현해야 한다.

OGR은 이를 통합한다.

개발자는 단순히

Layer
Feature
Geometry

구조만 이해하면 된다.

어떤 파일 형식을 사용하더라도 동일한 방식으로 데이터를 다룰 수 있다.


OGR의 데이터 구조

OGR은 매우 단순한 구조를 가진다.

DataSource
 └─ Layer
      └─ Feature
            ├─ Geometry
            └─ Attributes

예를 들어 건물 데이터가 있다고 가정해보자.

Layer : Building

건물 A

Geometry
  Polygon(...)

Attributes
  id = 1
  name = "Building A"

건물 B

Geometry
  Polygon(...)

Attributes
  id = 2
  name = "Building B"

이러한 구조는 Shapefile, GeoJSON, PostGIS 모두 동일하게 적용된다.


Geometry란?

OGR에서 가장 중요한 개념은 Geometry이다.

Geometry는 공간 객체의 형태를 의미한다.

대표적으로 다음 타입들이 존재한다.

Point

(127.1, 37.5)

예시

  • CCTV 위치
  • 가로등 위치
  • 센서 위치

LineString

도로
하천
전선

Polygon

건물
행정구역
폐기물 영역

MultiPolygon

여러 개의 Polygon 묶음

예시

  • 섬 지역 행정구역
  • 복수 건물 단지

GIS 개발에서 가장 유명한 명령어, ogr2ogr

OGR을 이야기할 때 빠질 수 없는 것이 바로 ogr2ogr이다.

ogr2ogr은 GIS 업계의 만능 변환기라고 불린다.


Shapefile → GeoJSON

ogr2ogr -f GeoJSON output.geojson input.shp

GeoJSON → GeoPackage

ogr2ogr -f GPKG output.gpkg input.geojson

좌표계 변환

ogr2ogr \
-t_srs EPSG:4326 \
output.geojson \
input.shp

PostGIS 적재

ogr2ogr \
-f PostgreSQL \
PG:"dbname=gis user=postgres" \
building.shp

실무에서는 이 명령 하나로 수많은 데이터 변환 작업을 수행한다.


OpenLayers 개발자라면 왜 알아야 할까?

OpenLayers를 사용한다면 사실상 OGR 기반 포맷을 매일 다루고 있는 셈이다.

예를 들어

new GeoJSON().readFeatures(...)
new WKT().readFeature(...)
new KML().readFeatures(...)

와 같은 코드가 모두 OGR이 지원하는 포맷을 읽는 과정이다.

즉 구조적으로는

OpenLayers
     ↑
GeoJSON
WKT
KML
GPKG
Shapefile
     ↑
    OGR

관계라고 볼 수 있다.


드론 및 변화탐지 프로젝트에서의 활용

드론 영상 분석이나 객체 탐지 프로젝트에서는 결과를 Polygon 형태로 저장하는 경우가 많다.

예를 들어 폐기물 탐지 결과가 다음과 같다고 가정해보자.

폐기물 영역 Polygon

이 데이터를

GeoJSON 저장
↓
GeoPackage 변환
↓
PostGIS 적재
↓
OpenLayers 시각화

하는 과정에서 OGR이 사용된다.

특히 GIS 시스템 간 데이터 연계에서는 사실상 필수적인 기술이다.


마무리

OGR은 단순한 라이브러리가 아니다.

GIS 세계에서 서로 다른 공간정보 포맷을 연결해주는 표준 인터페이스 역할을 수행한다.

건물, 도로, 행정구역, 객체 탐지 결과와 같은 벡터 데이터를 다룬다면 OGR을 이해하는 것은 선택이 아니라 필수에 가깝다.

한 문장으로 정리하면 다음과 같다.

OGR은 GIS 세계의 벡터 데이터 처리 엔진이며, 다양한 공간정보 포맷을 읽고 쓰고 변환하는 핵심 기술이다.

728x90

'GIS' 카테고리의 다른 글

[GIS] 공간정보 파일 확장자 정리  (0) 2026.06.22
[GIS] GDAL 이란?  (0) 2026.06.22
[GIS] DEM, DSM, DTM이란?  (0) 2026.06.22