반응형

회사에서 최근 GIS 와 관련된 프로젝트를 맡게 되어서

공부를 하며 정리한 내용들을 포스팅 해볼까 합니다.

 

철저하게 개발자적 관점에서 GIS에 대해 아무것도 모르던 상태에서 공부한 것들이기 때문에

많은 오류가 있을수도 있으니 철저하게 지적해주시면 감사하겠습니다.

(이후로는 개인적으로 정리한 것이기 때문에 ~다 체를 사용하였으니 양해부탁드립니다... (-.-) (_ _) (-.-) 꾸벅)

 


우선 GIS는 기본적으로 공간데이터와 속성데이터로 이루어졌다.

지구상의 한 점의 위도, 경도값을 이용하여 POINT 를 만들고,

POINT 들이 모여 LINE 을 만들고,

LINE 들이 모여 POLYGON 을 만든다.

 

그리고 저 공간에 예를들면 고도는 얼마인지, 온도는 얼마인지, 지역 이름이 뭔지 같은 데이터들이 속성데이터들이다.

그리고 그 데이터들은 대부분 데이터베이스에 테이블로 관리된다.

위도

경도

이름

고도

온도

시간

37.5651171

126.9814028

서울시청

5m

20

20190517

이런식으로 관리되고

저 위의 테이블에서 위도 경도값이 공간데이터, 나머지들이 속성데이터이다.

물론 저 위도, 경도 값만으로는 개발을 할 수 없기 때문에 저 값을 다시 공간데이터로 바꾸어야 하지만

추후 다시 얘기하도록 하고 우선은 넘어가도록 하자..

 

공간데이터는 다시 크게 두 종류로 나누어 지는데

Vector 데이터와 Raster 데이터다.

벡터 데이터는 위도, 경도 절대좌표값 등을 이용하여 점,,면의 정보를 저장하는 방식이고,

래스터데이터는 격자(cell)로 이루어진 데이터로 항공영상, 위성영상 등의 정보를 표현하는데 용이하다.

 

벡터와 래스터의 예

 

공간데이터에서 가장 중요한 파일 포맷 중 하나가 .shp 라는 파일 포맷으로 된 SHAPEFILE 이다.

쉐이프 파일은 ESRI 사에서 개발한 GIS 프로그램에 사용되는 표준 포맷 파일이다. 거의 세계 공통으로 쓰이며 지리현상에 대한 기하학적 위차와 속성정보를 저장, 제공해주는 데이터 포맷이다.

보통 3~5 개의 파일묶음으로 구성되어 있으며 각각의 역할은

 

       .shp : 지리 사상의 기하학 정보를 저장

 

       .shx : 지리 사상의 기하학 정보의 인덱스를 저장(shp파일의 인덱스)

 

       .dbf : 지리 사상의 속성 정보를 제공하는 dBASE 파일(table)

 

       .prj : 좌표계의 정보가 담겨있음. 따라서 prj 파일이 없는 경우 별도로 좌표계를 지정해줘야함

 

       .qpj : prj 파일과 연동된 파일로 Qgis에서 쉐이프 파일을 활용할 때 필요하다. Qgis에서 prj 파일을 호출할 때

       좌표계를 혼동하는 오류가 발생해 이를 보완하는 역할

 

 

등의 역할을 한다. 이 중 prj와 qpj 는 생략되어있기도 하다.

 


내가 가지고 있는 위치정보를 서비스하기 위해선

위와 같은 과정이 필요하다.

우선 본인이 가지고 있는 공간데이터들을 Postgresql 이라는 데이터베이스에 저장한다.

MYSql 이나 오라클처럼 잘 알려진 데이터베이스를 놔두고 굳이 Postgresql 을 사용하는 이유는

바로 공간데이터에 관련된 함수를 가장 잘 제공하기 때문이다.

Postgresql 은 자체적으로 Postgis 라는 확장 프로그램을 제공하는데

Postgis 에서 공간데이터로처리할 수 있는 거의 모든 함수를 기본적으로 제공하기 때문에

다른 DB들보다 GIS를 서비스하기에 유용하다.

MYSql 도 자체적으로 공간함수를 제공하지만 직접 사용해본 결과

Postgresql 에 비해서 현저히 떨어진다.

게다가 Postgresql shp 파일도 바로 임포트 시킬 수 있다.

 

이렇게 Postgresql 에 저장된 데이터들을 개인적으로 내 로컬PC에서 다루고 가공하고 싶다면

QGIS 혹은 uDig 라는 툴을 사용하면 된다.

QGIS 밖에 사용을 해보지 않았기 때문에

만약 추후 포스팅을 하더라도 QGIS 위주로 포스팅을 하게될 것 같다.

QGIS 에서는 Postgresql 뿐만 아니라 다른 DB에 저장되어 있는 공간데이터들을 쉽게 불러올 수 있고

직관적으로 지도 위에 표시해주는데에 용이하다.

때문에 내가 가지고 있는 자료들을 개인적으로 시각화하여 다루고싶다면

QGIS 라는 툴을 사용하면 된다.

 

만약 공간데이터를 웹에 서비스 하고 싶다면

Postgis 에서 Geoserver 라는 서버를 거쳐 OpenLayers 라는 스크립트 라이브러리를 통해

웹브라우저에 표시하면 된다.

 

Geoserver는 지리공간데이터를 공유하고 편집할 수 있는 Java로 개발된 오픈소스 GIS 소프트웨어 서버로

상호운용성을 전제로 개발되었기 때문에, 개방형 표준을 사용하여 다양한 공간 데이터 소스를 서비스할 수 있다.

 

OpenLayers 는 자바스크립트 라이브러리의 일종으로

Geoserver 를 통해 생성된 레이어를 스크립트 언어를 이용하여 시각적으로 가공하여 웹 상에 표시할 수 있다. OpenLayers 의 장점은 우선 오픈소스이기 때문에

다양한 지도 (Google Maps, OSM, Bing Maps) 서비스들과 호환이 잘 되고

거의 모든 OGC(Open Geospatial Consortium) 표준을 지원하여 사용이 가능하다.

 OGC 표준을 간단하게 정리하면

 

   Web Map Service(WMS)

 - GIS 데이터에 접근하기 위한 인터페이스로써 웹을 통해 지도 이미지(형식)로 서비스함. 다시 말해, 데이터서버에 저장된 레이어 또는 분석을 통해 생성된 벡터 및 래스터 데이터를 시각화 하는 서비스

 

   Web Feature Service(WFS)

- 웹을 통해 벡터형식으로 GIS 데이터를 제공하기 위한 인터페이스로, 데이터서버에 저장된 벡터 레이어를 공간 및 속성조건을 이용해서 불러오거나 관리(피쳐의 추가, 수정, 삭제) 하기 위한 서비스

 

   Web Coverage Service(WCS)

-  웹을 통해 래스터 형식을 GIS 데이터를 제공하기 위한 인터페이스, 위성영상 등과 같은 자료를 서비스

   

-  Web Processing Service(WPS)

- 지리정보에 대한 다양한 처리 서비스(Geo-Processing Service)를 웹상에서 정의하고 접근할 수 있도록 하기 위한 인터페이스, 모든 OGC 표준 웹 서비스들과 상호호환성을 갖도록 정의

 

가 되겠다.

 

여기까지가 내가 이해한 GIS 의 개념적인 이해이다.

 

마지막으로 GIS 와 관련해서 정보를 얻기 좋은 사이트들은

 

http://www.gisdeveloper.co.kr/

https://www.slideshare.net/lenablue1212/postgis-37751544

https://www.slideshare.net/jinifor/5open-layers

https://www.slideshare.net/kimseonggeon/geoserver-30424128

https://www.spacein.kr/main/index.do

https://openlayers.org/en/latest/examples/

http://www.biz-gis.com/

 

등이 있다.

반응형

+ Recent posts