IDL/Mapping

지도의 국경선 데이터의 변경 및 표출

이상우_IDL 2023. 12. 14. 18:35
728x90

IDL에서 지도를 표출하면서 국경선을 함께 표시해야 하는 경우가 종종 있습니다. 그러한 표출을 위해서는 NG 체계 기준으로는 MAPCONTINENTS 함수에서 /COUNTRIES 키워드를 사용하면 됩니다. 이러한 방법을 사용하여 동남아시아 지역을 국경선과 함께 표시하는 예제를 보면 다음과 같습니다.

 

win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR)
limit = [0, 90, 50, 140]
m = MAP('Geographic', LIMIT=limit, $
  FILL_COLOR='light blue', ASPECT_RATIO=0, $
  LABEL_POSITION=0, FONT_SIZE=11, CLIP=0, $

  MARGIN=0.1, /CURRENT)
mc = MAPCONTINENTS(FILL_COLOR='orange', /COUNTRIES)
m.MapGrid.LINESTYLE = 1
m.MapGrid.HORIZON_LINESTYLE = 0

 

이와 같은 방식으로 표출하면 결과는 다음 그림과 같습니다.

 

 

이 방법은 IDL에 기본적으로 내장된 국경선 데이터를 기반으로 한 것이며, 확인된 바로는 2008년도 기준이라고 합니다. 그런데 국경선이라는 것이 시대에 따라 조금씩 바뀌는 경우가 종종 있기 때문에 최신의 데이터를 반영하고 싶을 수도 있습니다. 물론 한반도 주변 영역의 경우는 지난 15년여 사이에 별다른 변화는 없었지만 그 외 다른 지역의 경우는 그간의 정치 상황에 따라 변화가 있을 수도 있습니다. 어쨌든 가장 최근의 국경선 데이터를 반영하고 싶을 경우에는 해당 shapefile을 외부에서 받아서 사용해야 합니다. 가장 추천할만한 곳은 ESRI에서 각종 경계선 데이터들을 제공하는 웹페이지입니다. 그래서 일단 여기서 World Countries Generalized라는 데이터를 해당 링크를 통하여 받아서 사용해보겠습니다. 이 링크의 웹페이지에서 다운로드 버튼을 누르고 다운로드 옵션에서 '쉐이프파일'을 선택하여 다운로드하면 됩니다. 이렇게 하면 압축파일(zip)로 받게 되는데 PC 내 적절한 위치에 압축을 풀어놓고 사용하면 됩니다. 이와 같이 다운로드받은 새로운 국경선 데이터를 사용하여 지도를 표출하는 과정은 다음과 같습니다.

 

win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR)
limit = [0, 90, 50, 140]
m = MAP('Geographic', LIMIT=limit, $
  FILL_COLOR='light blue', ASPECT_RATIO=0, $
  LABEL_POSITION=0, FONT_SIZE=11, CLIP=0, $

  MARGIN=0.1, /CURRENT)
shp_file = 'data/World_Countries_Generalized/World_Countries_Generalized.shp'
mc = MAPCONTINENTS(shp_file, FILL_COLOR='orange')
m.MapGrid.LINESTYLE = 1
m.MapGrid.HORIZON_LINESTYLE = 0

 

기본적으로는 맨 처음에 제시된 예제 코드를 기반으로 하지만 외부에서 받아온 shapefile을 사용하도록 수정된 부분(진한 색)만 다릅니다. 그리고 shp 파일의 폴더 경로는 제 기준이며 실제로는 각 유저의 상황에 맞춰서 수정해야 합니다. 이와 같이 외부에서 가져온 shp 파일을 사용하여 지도상에 경계선을 표시하려면 위와 같이 MAPCONTINENTS 함수에 해당 파일명을 경로와 함께 인수로 부여하면 됩니다. 표출 결과는 다음과 같습니다.

 

 

다만 이 그림을 잘 보면 맨 처음에 그냥 IDL의 내장 데이터를 사용한 결과와 동일하다는 것을 알 수 있습니다. 이와 같은 경위도 범위의 영역 내에서는 국경선의 변화가 적어도 최근 15년 사이에는 없었다고 볼 수 있습니다. 제가 따로 확인해본 바로는 유럽 지역도 별다른 변화가 없었던 것 같습니다. 그러면 실제로 변화가 있었던 지역을 살펴보기로 합시다. 대표적인 지역이 아프리카 대륙입니다. 그러면 위의 예제 코드들에서 경위도 범위인 limit만 다음과 같이 변경해봅시다.

 

limit = [-35, -20, 40, 55]

 

이렇게 영역만 변경하여 두 표출 결과를 비교해보겠습니다. 먼저 IDL의 기본 내장 데이터 기반의 결과입니다.

 

 

그리고 외부 shp 파일을 적용한 결과입니다.

 

 

잘 보면 변화가 있는 부분 두 군데를 찾을 수 있습니다. 먼저 동경 30, 북위 10 쯤인 위치를 보면 새로운 국경선이 추가되어 있는데 남수단(South Sudan)이라는 국가입니다. 원래는 수단이라는 하나의 국가였다가 분쟁 이후 나눠진 것으로 알고 있습니다. 그리고 서경 10, 북위 30 쯤의 위치를 보면 원래 있던 국경선이 사라진 것을 볼 수 있는데요. 지금은 이 지역이 모로코인데 예전에는 북쪽은 모로코(Morocco)이고 남쪽은 서사하라(Western Sahara)였다가 분쟁 이후 서사하라가 모로코에 병합된 것으로 알고 있습니다. 하여간 그러한 변화들이 지도의 국경선에서 반영된 것을 확인할 수 있습니다. 그 외에도 다른 대륙에도 변동 사항이 또 있을 수도 있습니다.

 

사실 국경선의 변화가 있었던 지역을 주로 다루게 되지 않는다면 그냥 IDL에 기본 내장된 국경선 데이터를 그냥 사용해도 별 문제는 없을 것입니다. 다만 혹시라도 변화가 있었던 지역을 다뤄야 할 경우에는 오늘 소개된 방식으로 별도로 shp 파일을 받아서 사용하는 것이 필요할 수도 있습니다. 참고로 앞서 언급된 ESRI의 웹페이지에는 오늘 다뤘던 World Countries Generalized 외에도 해안선 디테일이 좀 더 자세한 버전인 World Countries, 그리고 국가별 내부 행정구역 경계선 데이터가 수록된 World Administrative Divisions 등과 같은 자료들도 함께 제공되고 있으므로 유저의 필요에 따라 별도로 다운로드받아서 사용하면 됩니다.

 

그리고 오늘 소개된 예제는 NG(New Graphics) 체계 기반의 그래픽 표출 방법을 기준으로 하였습니다. 다만 이렇게 외부 shp 파일을 사용하는 방식이 DG(Direct Graphics) 체계의 경우는 매우 까다롭습니다. 따라서 웬만하면 NG 체계의 방식으로 처리하는 것을 권장합니다.

LIST