배경
요즘 제가 지내고 있는 곳의 화산 폭파로 인해 화산재 예보를 주시하고 있습니다.
그래서 비 정기적으로 몇시간에 한번씩 업데이트 되는 이 예보를 확인하고 싶었고 그 예보에 제가 있는 위치가 화산재 영향 지역인지 아닌지를 쉽게 확인하고 싶었습니다.
그래서 TelegramBot 을 만들어 봤습니다. 네 모두 javascript로만 만들어져 있습니다.
주요 기능은 다음과 같습니다.
- 예보에 포함된 좌표 정보를 바탕으로 사용자의 위치가 포함되었는지를 판단하고
- 5분마다 한번씩 예보 사이트를 크롤링해서 예보를 확인하고 새로운 예보가 있다면 알림을 받고자 하는 사용자에게 메시지를 보냅니다.
heroku를 이용하고 heroku에서 손쉽게 연결 가능한 redis를 사용하고 있습니다. 소스 코드는 github에 공개되어있습니다.
Google Static Map 으로 지도 이미지 생성하기
그리고 어제 추가한 기능이 쉽게 시각적으로 확인할 수 있도록 예보를 지도에 그려 넣었습니다. 이를 구현하는 과정에서 Google Static Map을 처음 이용해봤습니다. 단지 url만으로 지도 위에 폴리곤이나 마커등의 정보를 표시할 수 있고 지도 스틸이미지를 생성할 수 있습니다. 동적일 필요가 없는 경우 html이나 js코딩이 필요 없고 Telegram같은 앱에서는 image url을 바로 대화창에서 preview 해주기에 링크를 클릭하지 않아도 쉽게 확인이 가능해서 좋았습니다.
다음과 같은 주소가
http://maps.googleapis.com/maps/api/staticmap?center=Agung&zoom=10&size=640x640&scale=2&path=color:0xff0000ff|weight:4|-7.883333333333333,115.43333333333334|-8.1,115.16666666666667|-8.4,115.46666666666667|-8.366666666666667,115.58333333333333|-7.966666666666667,115.81666666666666|-7.883333333333333,115.43333333333334&path=color:0xff8c00ff|weight:4|-8.033333333333333,115.76666666666667|-7.9,115.4|-8.133333333333333,115.15|-8.383333333333333,115.48333333333333|-8.366666666666667,115.58333333333333|-8.033333333333333,115.76666666666667&path=color:0xffff00ff|weight:4|-8.05,115.83333333333333|-7.883333333333333,115.55|-8.083333333333334,115.23333333333333|-8.383333333333333,115.48333333333333|-8.383333333333333,115.58333333333333|-8.05,115.83333333333333&path=color:0x008000ff|weight:4|-7.916666666666667,115.56666666666666|-8.15,115.25|-8.433333333333334,115.43333333333334|-8.416666666666666,115.56666666666666|-8.1,115.91666666666667|-7.916666666666667,115.56666666666666&markers=color:red|label:U|-8.481046,115.250316
다음과 같은 이미지가 됩니다.