HTTP 프로토콜은 캐시 메커니즘을 정의하고 있다. 프록시 웹서버는 페이지, 파일, 이미지 등을 캐시 할 수 있다. 클라이언트가 서버로 요청을 보낼 때, 클라이언트는 서버에게 요청하는 웹페이지가 갱신되었는지 아닌지 확인하는 요청을 보낼 수 있다. 클라이언트는 Conditional GET Request라는 특별한 파라미터를 가진 요청을 서버로 보냄으로써 서버에 있는 웹페이지와 같은 리소스가 갱신되었는지 안 되었는지 확인할 수 있다. 이 요청에는 If-Modified-Since라는 특별한 헤더 정보가 붙게 된다. 이 해더는  RFC 2822 형태로 날짜와 시간 값이 붙게 된다. 서버와 클라이언트 사이의 프록시 서버는 이 날짜와 시간 값을 확인하여 조건이 맞으면 캐시된 웹페이지를 전달하게 되고 304 Not Modified 헤더를 클라이언트에 응답으로 보낸다.

Posted by 강부자아들
,

gdal_merge.py

Open Source 2012. 4. 5. 10:48

 

 

gdal_merge.py

여러 개의 이미지들을 결합시켜 하나로 합쳐준다. FWTools보다는 OSGEO4W를 설치해서 사용하기를 권장한다.

OSGEO4W를 설치하고 gdal16을 입력하여 gdal1.6라이브러리를 활성화 한 뒤 사용하기를 바란다. –co(Creation Options)과 같은 경우 출력될 파일 포멧에 따라 다른 옵션을 지정할 수 있다. http://www.gdal.org/formats_list.html에 가서 출력될 파일 포멧을 찾은 후 Creation Options 항목을 찾아 적절한 옵션을 기입하면 된다. GeoTIFF의 경우 .tfw파일을 생성하게 하고 싶으면 http://www.gdal.org/frmt_gtiff.html에 가서 Creation Options 항목을 찾은 후 .tfw와 관련된 Creation Options을 찾은 후 TFW=YES와 같은 형식으로 기입하는 것을 확인한다. 이후 gdal_merge.py 커맨드의 옵션에 –co TFW=YES와 같은 형식으로 기입한다. -co은 여러번 지정이 가능하다.

 

개요

gdal_merge.py [-o 출력될_파일] [-of 출력될_파일포멧] [-co NAME=VALUE]*
              [-ps pixelsize_x pixelsize_y] [-tap] [-separate] [-v] [-pct]
              [-ul_lr ulx uly lrx lry] [-n nodata_value] [-init "value [value...]"]
              [-ot datatype] [-createonly] input_files

설명

이 유틸리티는 여러 개의 이미지들을 자동적으로 결합시켜 준다. 결합이 되어질 이미지들을 모두 같은 좌표계(coordinate system)와 같은 이미지 밴드를 가지고 있어야 한다. 하지만 이미지들이 겹치거나 다른 해상도를 가지는 것은 상관이 없다. 이미지가 겹칠 경우에는 마지막에 입력되어진 이미지가 그 전에 입력된 이미지 위에 올라가게 된다.

-o out_filename:
중복되는 파일이름이 없다면 출력될 결과 파일의 이름(기본값으로 "out.tif").
-of format:
출력될 결과 파일의 파일 포멧명. 기본값은 GeoTIFF (GTiff).
-co NAME=VALUE:
출력될 파일의 생성 옵션으로 여러 개를 지정할 수 있다. 
-ot datatype:
지정된 출력 타입으로 결과 이미지 밴드의 타입을 만들게 한다. 다음과 같은 이름을 데이터 타입을 지정하면 된다.(Byte, Int16,...)
-ps pixelsize_x pixelsize_y:

결과 파일의 픽셀 사이즈. 만약 이 –ps 옵션이 지정되지 않으면 첫 번째 입력 파일의 해상도로 사이즈가 결정된다.

-tap:

(GDAL >= 1.8.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent.

-ul_lr ulx uly lrx lry:
출력될 결과 파일의 범위. 이 옵션이 지정되지 않는다면 모든 입력 이미지 파일로부터 전체적으로 합쳐진 범위가 사용되게 된다.
-v:
이미지 결합 작업이 일어날 때마다 그 결과의 진행과정을 출력하게 함.
-separate:
각각의 입력 파일을 분리된 stacked 밴드로 배치
-pct:
첫 번째 입력 이미지로부터 pseudocolor 테이블을 얻어와서 그 테이블을 결과 이미지의 각각의 화소 값에 을 맵핑되게 한다. 이러한 방식으로 결합된 pseudocolor 이미지들은 입력된 모든 이미지들이 똑같은 컬러 테이블을 사용하고 있다고 가정한다.
(참고: http://blog.daum.net/niast0158/8746026)
-n nodata_value:
이 픽셀 값을 가지고 있을 경우 픽셀들을 무시해 버린다.
-a_nodata output_nodata_value:
(GDAL >= 1.9.0) 출력 밴드에 지정된 nodata 값을 할당한다.
-init "value(s)":
이 값들을 가지고 결과 이미지의 밴드 값을 미리 초기화 시킨다. 하지만 이 값은 결과파일에 nodata 값으로는 기록되지 않는다. 만약 값이 하나만 지정된다면 지정된 그 하나의 값은 이미지의 모든 밴드에 적용된다. 
-createonly:
입력 이미지 값은 복사되지 않고 오로지 결과 파일만 생성됨(아마도 –init 옵션에 지정된 색으로 이미지가 생성됨).

주의: gdal_merge.py는 파이썬 스크립트이며 파이썬을 지원하는 GDAL에 빌드된 버전만 지원한다.

 

예제

모든 밴드에서 255 값으로 초기화된 값을 가진 픽셀을 가진 이미지를 생성한다.

% gdal_merge.py -init 255 -o out.tif in1.tif in2.tif

데이터가 없는 픽셀을 파랑색(0 0 255)으로 보여주는지를 RGB 이미지를 생성한다. 앞에 2 개의 벤드는 0으로 초기화 되고 3번째 밴드는 255 값으로 초기화 된다.

% gdal_merge.py -init "0 0 255" -o out.tif in1.tif in2.tif
 
 참고
http://www.gdal.org/gdal_merge.html
http://www.mikejcorey.com/wordpress/2011/02/05/tutorial-create-beautiful-hillshade-maps-from-digital-elevation-models-with-gdal-and-mapnik/
 
Posted by 강부자아들
,

 

올해에도 어김 없이 구글에서 만우절 기념 서비스를 런칭하였습니다.

http://maps.google.co.kr/ 혹은 http://maps.google.com/에 가셔서 오른 쪽 위에 지도모드 선택 모드에서 "탐험" 버튼을 누르면 8비트 퀘스트 구글지도를 보실 수 있습니다.

 

탐험 버튼을 누르면 구글클라우드에서 지도 이미지를 퀘스트 지도로 보여줍니다.

 

 

 

 

 

 

심지어는 스트리트 뷰도 8비트 이미지로 만들어 버리네요.

 

 

Posted by 강부자아들
,