[M_Map Tutorial] M_Map Coastlines and Bathymetry

SEANDOPREP·2023년 11월 5일
0

[M_Map Tutorial]

목록 보기
2/4

M_Map Tutorial 시리즈는 M_Map 공식 User Guide를 기반으로 작성되었음을 미리 밝힙니다.

이번 포스트에서는 Coastlines and Bathymetry에 대해 알아보겠습니다. M_Map의 설치 방법이나 Projection 방법이 궁금하신 분들은 궁금하신 분들은 지난 포스트를 참고해주시길 바랍니다.

M_Map은 m_coast 명령어를 입력하면 1/4도의 해상도를 가진 해안선 정보를 제공합니다. UTM 좌표계를 적용했다고 가정하면 1도는 대략 100km이므로, 1/4도면 해상도가 25km 정도 되겠네요. 진행하고자 하는 Task에 따라 다르겠지만, 일반적으로 고해상도라고 불리긴 힘든 해상도입니다. 이처럼, M_Map은 고해상도 해안선 데이터를 제공하진 않기 때문에 원하는 데이터가 있다면 스스로 처리해야 합니다. 원하는 고해상도 데이터를 추가하는 방법은 추후에 section 8,9에서 다룰 예정이니 이번 포스트에서는 m_coast, m_elev 명령어들을 통해 해안선과 고도 정보를 표시하는 방법을 알아봅시다.

Coastline options

m_coast는 총 세 가지 방법으로 그릴 수 있습니다. 선분, 패치(patch), 그리고 점(speckle)들을 사용하는 방법인데요. 하나씩 살펴보겠습니다.

Coastline with lines

m_coast('line', ...optional line arguments );
m_coast( optional line arguments );

위의 두 코드 중 원하는 방식으로 그릴 수 있습니다. 이때 optional line arguments에는 일반적으로 matlab에서 선을 표시할 때 설정해줄 수 있는 다양한 설정들을 의미합니다. 예를 들어, 선 두께가 5인 파란 선으로 해안선을 표시하고 싶다면 아래와 같이 코드를 작성하면 되겠네요(좌표계는 Satellite라고 가정합시다).

figure;
m_proj('Satellite'); 
m_coast('color', 'blue', 'linewidth', 5);
m_grid;

Coastline with patches

m_coast('patch', ...optional patch arguments );
m_coast('patch',[.7 .7 .7],'edgecolor','g');

패치를 사용하면 땅 : 회색, 바다 및 강과 호수 : 배경색, 해안선 : 원하는 색으로 표현 가능합니다. 활용 예시는 아래와 같습니다.

figure;
m_proj('Satellite'); 
m_coast('patch',[.7 .7 .7],'edgecolor','g');
m_grid;

위 코드에서 [.7, .7, .7] 인자는 땅의 색깔을 의미합니다. 이 숫자를 낮출수록 땅의 색깔이 검정색에 가까워지는데요. 아래는 위의 코드에서 .7만 .2로 바꾼 결과입니다.

Coastline with speckles

이 방법은 점으로 해안선을 표시합니다. 해안선이 비교적 단순할 때 적용하면 예쁘게 표현 가능합니다만, 위의 두 방법보다는 제한된 상황에서 효과적입니다.

m_coast('speckle', ....optional m_hatch arguments);

예시는 아래와 같습니다.

figure;
m_proj('Satellite'); 
m_coast('speckle', 'color', 'red');
m_grid;

이후에 있을 예제 소개 포스트에서 Speckle을 활용한 지도 그리기를 다룰 것이므로, 그때 더 상세히 설명하겠습니다. 추가로, 위의 세 방법 중 선분으로 그리는 방법이 제일 빠르다는 것 정도까지만 알아두고 다음으로 넘어갑시다.

Topography/Bathymetry options

$MATLAB/toolbox/matlab/demos/earthmap.m에 있는 전세계 고도 정보를 그려줍니다.

m_elev('contour',LEVELS, optional contour arguments);
m_elev('contour',LEVELS,'edgecolor','b');

위의 코드에서 LEVELS에는 몇 개의 등고선 level로 표현할지를 정수 형태의 숫자로 넣어주면 됩니다. 예시는 아래와 같습니다.

figure;
m_proj('Satellite'); 
m_elev('contour',5,'edgecolor','b');
m_grid;

figure;
m_proj('Satellite'); 
m_elev('contour',10,'edgecolor','b');
m_grid;

m_elev('contourf',LEVELS, optional contourf arguments);

만약 등고선 내부를 채우고 싶다면 위처럼 contourf를 인자로 넣어주면 됩니다. 예시는 아래와 같습니다.

figure;
m_proj('Satellite'); 
m_elev('contourf',5,'edgecolor','r');
m_grid;

단순히 고도 정보를 추출하고 싶다면 아래 예시를 참고합시다.

[Z,LONG,LAT]=m_elev([LONG_MIN LONG_MAX LAT_MIN LAT_MAX]);

이번 포스트에서는 m_coast, m_elev 명령어들을 통해 해안선과 고도 정보를 표시하는 방법을 알아봤습니다. 더 자세한 내용들은 실제 예제를 통해 이해하는 것이 좋을 것 같아 여기서 마무리하겠습니다. 그럼 다음번에 Customizing axes라는 포스트로 돌아오겠습니다. 감사합니다.

profile
SATELLITE GEOSCIENCE & AI

0개의 댓글