上へ戻る

PHPでオープンデータのJSONを取得してみよう!ロリポップサーバーでも行ける取得方法。

Pocket

0221_eyecatch-720x320

先日滋賀県でおこなわれたINTERNATIONAL OPEN DATA DAYに参加しました。
このイベントはオープンデータを使った全世界同時に行われるイベントのことで、滋賀県では守山市のホタルに関する内容とびわ湖ホールで行われるラ・フォル・ジュルネ2015のオープンデータを使ったアプリ製作の開発ワークショップが行われました。

私は、守山ホタルのオープンデータを使ってアプリを作成。
その際にJSONデータをロリポップ!のサーバーで取得する方法を、今後の為にまとめてみました。


「2015(第12回)守山ほたるパーク&ウォーク」に関するオープンデータについて




JSONの取得はURLを指定してfile_get_contents→json_decodeで。



JSONをまず取得するにはこちら。
    $url = "http://2015.moriyamahotaru.com/fireflywatch/json/";//飛翔情報のみを取得
$json = file_get_contents($url);
$obj = json_decode($json,true);


これで$objに指定したURLのJSONデータが配列では入ります。
json_decode関数はtrueにすることで連想配列となり、falseにするとオブジェクト型になります。

今回は連想配列で取得。




配列に入ったJSONデータはforeachで個別取得


JSONデータが配列に入ったら、foreachで繰り返し処理して個別に取得していきます。

foreach ($obj as $value) {
print $value['@id']."
";
print $v['schema:latitude'][0];
}
守山ホタルのほたる飛翔地の場合は下記パラメータを指定すれば取得することができます。

内容パラメータ
ページURL$value[‘@id’]
経度$value[‘schema:latitude’][0];
緯度$value[‘schema:longitude’][0];
最終更新日$value[‘fireflywatch:lastupdated’][0];
場所$value[‘fireflywatch:location’][0];
KMLデータ$value[‘fireflywatch:location-shape’][0];
飛翔情報$value[‘fireflywatch:status’][0];
飛翔量$value[‘fireflywatch:amount’][0];



オープンデータのイベント時はほたる飛翔量が「まずまず」や「ぼちぼち」だったのですが、これでは並び替えや比較などが出来ないため、数量としての変更になるかもということでした。
まちづくり守山の方によると、当日はボランティアによる数字のカウントも行われているようなので、もしかしたらリアルタイムの数字が入るかも?(期待しています。)




オープンデータをPHPで取得して加工できればブラウザでのWEBサービスが作れる!


こちらが全コード。

$url = "http://2015.moriyamahotaru.com/json/";
$json = file_get_contents($url);
$obj = json_decode($json,true);
foreach ($obj as $value) {
print $value['@id']."
";
print $v['schema:latitude'][0];
}

PHPでオープンデータのJSONデータが取得できれば、ブラウザでWEBサービスが作れて、何より簡単!

サーバーもロリポップとかで大丈夫なので、製作コストもグッと下げられます。
オープンデータってなに?という方でもPHP使って一度アプリを作っておくと、他のオープンデータも使ってみたいと思えるようになります。

今回は守山ホタル以外にもラ・フォル・ジュルネに関するプログラムのオープンデータもあるので興味のある方はぜひ。

私が作ったアプリに関しては今プラス5でまた報告します。

最新投稿された記事はいかがですか?

1987年2月生まれ、滋賀県湖南市育ち、現在湖南市の三雲駅から徒歩20分超の場所でコワーキングスペース「今プラス」の管理人をしております。
続きを読む