読者です 読者をやめる 読者になる 読者になる

takanao’s diary

やったこととか思ったこととか。

NASA Space Apps Challenge ハッカソンに参加しました。(中編)

さて、前編から引き続き、NASA Space Apps Challengeハッカソンの参加報告です。

チームの構築と開発する内容も決まり、あとは作り込んでいくだけ。水没した都市をどうやって表現しようか・・・希望が見えてきたところで後編です。

 

前編終了時点で、すでに1日目の夜になっていましたが方向性は決まりました。まず、地球全体の水没は諦める。 都市を絞って表現していくことにしました。 そして、水没しているように見せる都市は、開催地の大阪としました。 これは、身近な都市であるとともに、大阪は海抜が低いため、水没の表現がとてもしやすい為でもあります。

 

そして、技術的には以下の方法を。

  • 大阪の等高線を1m単位でとり、海の画像(青い画像)を用意
  • GoogleMapの画像オーバーレイ機能を使って海の画像を被せる

等高線に沿った海の画像ついては、埼玉大学様がWeb等高線メーカーというページを公開してくれて居た為、これを使用すればなんとか作成できるのでは?と思いました。そして、GoogleMapの画像オーバーレイは過去にやったことがあった為。両方目処が立っている為、この二つができれば、大阪が水没している画像を用意できるはずです。 

 

まずは、Web等高線メーカーで大阪周辺の等高線をとります。そして、等高線のみ表示。取得間隔の設定は、5M単位となって居ますが下限と上限を1m単位で設定することにより、1m単位の等高線を1本ずつ、5mまで取得して行きます。

f:id:takahashi_nk:20170507230500p:plain

(こんな画像が取得できます。)

 

そして、その画像をGIMPで加工。自分は、昔からいろんなことに手を出している為、典型的な器用貧乏・・・なのですが、この時は色々やっておいてよかったなー。と思いました。(と言いつつ、塗るのに結構手こずる。笑)

 

f:id:takahashi_nk:20170507230640p:plain

(こんな画像になります。)

 

あとは、これをGoogleMapにオーバーレイ画像として重ねていくだけなのですが・・・正直、これが一番時間かかりました。 なかなか上手く重ならない。 (オーバーレイについては、Googleのページを参照してください。)

 

 画像設定時の引数に、南西と北東の座標を渡すみたいなのですが、これの意味がいまいち分からず。 おそらく経度と緯度を設定するのだと思うのですが、それと画像を配置する位置との調整にすごく時間がかかってしまいました。 なんとか簡単にする方法ないのかなあ? と考えましたが考えるより先に行動。 ということでWebページを更新しつつ微調整。 うーん。だれかうまい方法を知って居たら教えてください。

 

この辺りで、徹夜組以外は一旦帰宅。自分たちのチームは2人が徹夜組として残りました。そして、22時が過ぎ会場も施錠され、そこからさらに時間が過ぎ、日が変わった頃、ようやく大阪の画像が完成。これで、やっと明日の15時にデモが実施できる目処が立ちました。

f:id:takahashi_nk:20170507231559p:plain

 

この時点で、一旦帰宅したリーダーからMessenger経由で連絡。自分たちのチームは当初、「Planetary Blues(惑星の青)」の「Icy Polar Opposites(向かい合う氷の極)」というテーマをChallengeとして選んで居たのですが、今の方向性ではどうもテーマと合わないのではないか? という相談。 これ、実は作りながらテーマを読んだ際に(データの内容などから)自分も感じていたのですが、そこはエンジニア。まずは何か作ることを優先して黙殺してました。汗

 

で、Messengerで急遽会議を行い、色々と話し合ったのですが、全員が納得いく方向性はなく、、、そのまま話は終わりかけたのですが、その間自分はあまり発言せず、テーマに目を通していると、「Icy Polar Opposites(向かい合う氷の極)」の下に「Water, Water, Everywhere!(水、水、どこまでも!)」という洪水リスクの地図を提供するツールを開発してくださいというチャレンジが。

あ。これやん。と思い、提案。今のアプリもテーマにドンピシャな為、誰も反対する人もなく、開発も半分進んだところでしたが、急遽Challengeのテーマを変更することになりました。(これが今回のハッカソンで、自分が出した案で一番のヒットだったかも。笑)

 

後編に続きます)