IDL/Programming

Yale Bright Star Catalog 데이터를 읽고 처리하기 [4]

이상우_IDL 2025. 4. 8. 15:16
728x90

지난 회차 게시물에서는 Yale Bright Star Catalog(예일 밝은 별 목록, YBSC) 공식 웹페이지에서 바이너리 파일(Binary File)로 제공되는 데이터를 IDL에서 배열로 읽어들이고, 별들의 좌표 데이터(RA, Dec)를 이용하여 별들을 맵(Map) 상에 표시하는 작업을 진행하였습니다. 이 작업에서는 기본적으로 IDL의 지도 표출 기능을 사용하였습니다. 다만 경도 및 위도 대신 RA 및 Dec 좌표값들이 표시되어야 하는 천체 지도의 특성을 반영하기 위하여 라벨 문자들의 표시 내용 맟 형식을 유저가 직접 커스터마이즈하는 역할을 하는 함수형 부프로그램(mapgrid_labels_bsc5.pro)을 별도로 제작하여 활용한 바 있습니다. 이러한 방법을 동원하여 지난 회차에서 표출했던 그림을 다시 보면 다음과 같습니다.

 

오늘은 이어지는 순서로서 지도의 좌표 범위를 좀 더 좁혀서 표출해보고자 합니다. 즉 앞서 표출했던 그림은 RA 및 Dec의 전체 범위에 걸쳐 모든 별들이 표시되는 방식이었는데, 오늘은 지도의 좌표 범위를 더 좁혀서 국지적인 영역으로 한정하여 개개의 별들이 좀 더 잘 보이도록 표출해봅시다. 그러면 그래픽창을 띄우고 바탕 맵부터 표출해볼텐데요. 지난번에는 전체 범위를 커버하기 위하여 'Mollweide' 투영법을 사용하였지만, 오늘은 좌표 범위가 더 좁기 때문에 그냥 'Geographic'으로 설정합니다. 그리고 지도의 범위는 RA가 5H~7H 그리고 Dec이 -10~+10이 되도록 하고자 합니다. 다만 MAP 함수를 사용하여 지도의 좌표 범위를 설정할 때에는 여전히 경도 및 위도 기준으로 값들을 부여해야 한다는 것을 유의해야 합니다. 따라서 RA 범위 5H~7H은 경도 단위로는 75도~105도가 됩니다. Dec 범위 -10~+10은 그냥 위도 단위로도 -10~+10이 됩니다. 이러한 방식으로 바탕 맵을 표출하는 과정은 대략 다음과 같습니다.

 

win = WINDOW(DIMENSIONS=[800, 600], /NO_TOOLBAR)
limit = [-10, 75, 10, 105]
m = MAP('Geographic', LIMIT=limit, MARGIN=0.05, CLIP=0, /CURRENT)
m.MapGrid.LABEL_POSITION = 0
m.MapGrid.LABEL_FORMAT = 'MapGrid_Labels_BSC5'
m.MapGrid.GRID_LONGITUDE = 7.5
m.MapGrid.GRID_LATITUDE = 5
m.MapGrid.LINESTYLE = 1
m.MapGrid.HORIZON_LINESTYLE = 0
m.MapGrid.FONT_SIZE = 11

 

여기서는 앞서 정의한 좌표 범위가 적용되도록 하기 위하여 MAP 함수의 LIMIT 키워드에 좌표 범위 한계값들을 부여하였습니다. 또한 이전 게시물에서 라벨 문자들의 형식 지정을 위하여 사용했던 함수형 부프로그램이 이번에도 사용되었습니다. 그리고 경도 방향의 격자 간격이 7.5도가 되도록 하였는데 이것은 RA 단위로 환산하면 0.5H에 해당됩니다. 위도 간격 즉 Dec 간격은 5도가 되도록 하였습니다. 위와 같은 내용을 실행하여 표출되는 바탕 맵의 모습은 다음과 같습니다.

 

그 다음은 이러한 좌표 범위 내에 분포한 별들을 표시해야 합니다. 이전 게시물에서는 SCATTERPLOT 함수를 사용하여 이러한 처리를 한 바 있습니다. 동일한 방식으로 별들을 표시해본다면 다음과 같은 과정을 추가로 실행하면 됩니다.

 

sp = SCATTERPLOT(ra_degs, dec_degs, SYMBOL='circle', SYM_SIZE=0.7, /SYM_FILLED, $
  /OVERPLOT)

 

이와 같이 SCATTERPLOT 함수를 사용하여 별들이 적당한 크기의 원형 점들로 표시되도록 하면 표출 결과는 다음 그림과 같습니다.

 

물론 별들을 이와 같이 그냥 점들로 표시하는 것도 괜찮지만, 이번에는 좀 더 나아가서 밝기 등급 데이터를 반영하여 별의 색상이 등급 값에 따라 다르게 표시되도록 해보는 것은 어떨까 합니다. 이러한 표출은 SCATTERPLOT 함수로도 물론 가능하지만 이번에는 BUBBLEPLOT 함수를 사용해보는 것이 더 좋을 것 같습니다. 이를 위하여 앞서 SCATTERPLOT 함수가 사용되었던 내용은 삭제하고 그 대신 다음과 같은 내용으로 대체해봅시다.

 

sp = BUBBLEPLOT(ra_degs, dec_degs, SIZING=0.15, $
  RGB_TABLE=74, COLOR=BYTSCL(vmags, MIN=-2, MAX=8), /OVERPLOT)
cb = COLORBAR(TARGET=sp, POSITION=[0.2, 0.96, 0.8, 0.99], RANGE=[-2, 8], $
  TITLE='Visual Magnitude', /BORDER)

 

BUBBLEPLOT 함수를 이러한 목적으로 사용하는 방법에 관해서는 예전에 관련 게시물을 통하여 소개한 바 있고, 오늘도 이 내용을 바탕으로 하여 위와 같이 적용을 해본 것입니다. 여기서는 밝기 등급 값들로 구성된 배열인 vmags의 값들을 -2~8의 범위로 바이트스케일링한 결과를 BUBBLEPLOT 함수의 COLOR 속성에 부여하였습니다. 또한 등급의 값과 색상 사이의 관계 대조를 위하여 COLORBAR 함수를 사용하여 컬러바를 상단에 표시하였습니다. 이러한 과정을 실행하면 결과는 다음 그림과 같습니다.

 

이 그림에서는 등급의 값이 작은 즉 밝기가 비교적 밝은 별들이 붉은색 계열의 색상으로 표시되고, 등급의 값이 큰 즉 밝기가 비교적 어두운 별들이 푸른색 계열의 색상으로 표시되어 있습니다. 따라서 대략 이와 같은 요령으로 표출을 하면 비교적 좁은 영역 내에 분포한 별들의 개별 밝기를 파악하기가 좀 더 용이할 것입니다. 그리고 RA 및 Dec의 범위를 변경하면 다른 영역의 별들도 같은 요령으로 볼 수 있습니다. 범위를 변경하려면 맨 처음에 사용된 MAP 함수의 LIMIT 키워드에 부여되는 값들만 변경해주면 됩니다. 이를 위하여 다음과 같이 limit의 내용만 바꿔서 범위를 변경해봅시다.

 

limit = [30, 270, 50, 300]

 

여기서는 RA의 범위가 18H~20H가 되도록 하고 Dec의 범위가 30~50이 되도록 한 것입니다. 참고로 RA의 범위 18H~20H는 경도 단위로는 270~300이 됩니다. 이렇게 범위를 변경하는 것 이외에 다른 내용은 그대로 두고 전체 프로그램을 다시 실행하면 결과는 다음 그림과 같습니다.

 

이와 같이 범위를 변경해가면서 좀 더 국지적인 영역의 별들을 표시하면서 밝기 등급에 따라 색상이 다르게 보이도록 표출하는 것도 얼마든지 가능합니다. 이번에 소개된 표출 방식은 YBSC 목록의 별들 뿐 아니라 다른 종류의 천체 데이터를 사용하여 IDL에서 천체 지도(Celestial Map) 상에 그 천체들을 표시하는데 있어서 참고해볼만한 방법이 아닐까 합니다.

 

그러면 YBSC 목록 데이터 파일을 읽고 이 데이터를 사용하여 별들을 맵상에 표출하는 방법에 관한 소개는 이 정도로 마무리하도록 하겠습니다.

 

 

이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.

LIST