아키텍처란
시스템 구성 및 동작 원리, 구성요소에 대한 설계,
구성 요소 간의 관계 및 외부환경의 관계 묘사
라이브러리들의 관계(자바 라이브러리들과의 관계 등 구성)
핵심 구성, 구성관의 관계를 아키택처라고 한다web을 기준으로 아키텍처를 그려본다면 다음과 같다.
- 전자정부프레임워크(app)
- jquery(client)
- postgresql(postgis - DB)
배경지도란
배경지도란 예를 들면 네이버지도를 열고 지도를 움직였을때 network로 받아오는 이미지이다.
공식적으론 바로e맵, Vworld, 사적으론 네이버, 다음이 있다
전국적으론 google, 오픈스트리트가 있다.
공공기업에선 사기업의 지도를 신뢰할 수 없다고 생각해 바로e맵(OpenLayers 2.0)과 Vworld(구글과 오픈스트리트는 Openlayers버전이 같다)를 사용한다
GIS 오픈소스 자바 스크립트의 종류
OpenLayers > OSGeo에서 제공함
Leaflet
ESRI javascript 4.0(3.0)
openlayers는 2.0과 3.0으로 구성되는데 2.0은 개발된지 10년이 넘었다(ES5문법으로 사용됨) 2.0과 3.0의 문법은 조금 다름
이런 script를 이용해서 지도 서비스를 만들 수 있다.
OpenLayers 특징
라이브러리가 700~ 800메가의 용량을 가지고 있다 > 즉 백터 처리가 강하다(연산)
GIS 전문가가 유리하게 다룰 수 있고, 코드가 길다.
Leaflet 특징
라이브러리 : 120MB
이미지 처리가 강하다
백터처리가 약하다
전산 전공 및 GIS 초보자가 다루기 편하다
가벼운 지도 어플을 사용할 때 편하다.
간단한 지도 페이지에 최적화되어있다.
원래는 모바일 전용으로 만들어졌고, 2018년도부터 점유율이 높아졌다
코드가 짧다
leafletjs.com에서 leaflet과 관련된 도큐먼트 등을 쉽게 확인할 수 있다
ESRI JavaScript 4.0 (3.0)
seri 소프트웨어와 최적화 되어 있어, esri제품이 없다면 사용할 수 없고, 그 만큼 개발하는 경우가 적다
프로그 윅스
프로그웍스를 참고한다.
https://progworks.tistory.com/17?category=811597
레이어 종류
api와 api document를 사용해 레이어를 script에서 map을 불러올 수 있다.
그럼 이 레이어는 어디서 제공해 주나?
raster 레이어와 백터 레이어가 있다
https://leafletjs.com/reference-1.7.1.html
raster는 이미지를 작게 짤라서 만든 레이어이다.(타일링 개념을 가진 이미지만 허용한다)
vector는 포인트를 입력받아서 그 포인트에 대한 값을 읽어와서 client에서 그려진다(서버입장에서 보면 클라이언트가 지도를 그림)
맵 캠버스에서 extend의 개념이 붙는다.
1. 사각형의 꼭지점의 좌표를 의미한다
2. setcenter를 해서 센터를 실제 좌표와 일치시켜서 사용
정사영상
정사영상이란 측량할 때 찍은 카메라의 각도와 좌표를 계산해서 3D화 한 사진을 정사영상이라고 한다
용량이 큰 지도를 표기하는 방법
- 피라미드 형식 : 레벨별로 나눠서 뿌릴 지도를 정하는 것.
- 타일 개념 : 256픽셀 이미지를 기본으로 한다. 마우스의 줌 레벨을 가져와서 몇개의 픽셀(2의 몇승 - 기본0 , 1장 레스터)을 표기할지 결정한다.
GIS 형식
gis형식에는 두가지의 형식이 있다
google은 xyz형식(y가 음 방향), ogc에서는 tms형식(y가 양 방향)
tms형식, xyz형식 : 이 형식들의 차이점은 y의 방향을 어디로 읽는지의 차이점이다.
QGIS는 xyz형식을 사용한다
GIS Server와 통신 방법
ogc에서 wms, wfs의 표쥰을 만들었다
통식 방식의 표준이다.
wms : web map service의 약자, 이 방식으로 요청하면 이미지로 리턴이온다.
wfs : web feature service(shape파일에서 row로 변환한 데이터를 feature(속성과 위치에 대한 정보를 가진)라고 한다), 이 방식으로 요청하면 json등 좌표(GeoJson)로 리턴된다.
gis server는 위의 요청을 받았을 때 리턴형식에 맞게 데이터를 리턴할 수 있는 서버를 말한다.
정리
정리하자면 맵 캠버스를 뿌리는 라이브러리를 map mapping library라고 한다.
이 lib는 map에 관한 영역만 컨트롤하고 나머지는 컨트롤하지 않는다.이상적인 GIS개발자란 client에서 사용하는 자바스크립트와, gis서버에서 데이터를 가져오는 능력 등이 뛰어난 개발자를 말한다.
ㅋㅋ 건모씨 수정할거 많네.