RESAS 도구를 만들어 보았습니다.

이번에는 RESAS-API를 사용하여 도도부현에서 시구정촌까지의 데이터를 그래프로 표시하는 툴을 만들어 보았습니다.

RESAS-API란?



RESAS는 행정이 제공하는 오픈 데이터 API입니다.
RESAS 홈페이지
RESAS-API 홈페이지
응답이 json이므로 매우 취급하기 쉽습니다.

어쨌든 보자.



RESAS 도구
와 - 내용이 꽉 찼습니다 - 도도부현을 클릭하십시오.

그러면 도도부현 일람이 나옵니다.
이것은 h tps:// Resa s-po rta l. . jp / 아피 / v1 / p 레후 c 트레 s 을 두드려 취득하고 있습니다.

그렇다면 자신이 살고있는 현을 찾아 "자세히"를 클릭하십시오.

나는 시즈오카현

그러면



이와 같이 현의 상세가 표시됩니다.



놀라운 포물선
상당히 줄어 듭니다 ...

대부분의 현을 보았습니다만, 인구 줄어 가겠네요・・・
그 밖에도 관광 자원이라든지 시구정촌 일람이라든지 표시됩니다.
관광 자원에서는 현의 관광 자원을 구글에서 검색할 수 있습니다.
시구정촌 일람에서 자신이 살고 있는 시의 「자세히」를 클릭해 주세요.
시구정촌의 데이터는 인구뿐입니다.
이것으로도 상당한 시구정촌의 인구가 줄어든다・・・

처리 흐름



어쨌든 PHP, JS 초보자이므로 상당히 비효율적인 방식이 되어 있을지도 모릅니다.
  • 【PHP】 필요한 RESAS 데이터를 API로부터 두드린다
  • 【PHP】 RESAS 데이터를 다루기 쉽도록 형성
  • 【PHP】Chart.js를 위한 데이터를 RESAS 형성 데이터로부터 작성
  • 【JavaScript】Chat.js에서 그래프 표시

  • 프로그램 소개



    이것도 PHP, JS 초보자이므로 (ry

    PHP에서 RESAS 정보를 얻기위한 프레임 워크 (거짓)



    RESAS-API를 두드리는 데도 코드가 필요하기 때문에 클래스화했습니다.

    PRO.php
    <?php
    class PRO{
      public $API_KEY;
      private $api;
    
      function __construct($apikey){
        $this->API_KEY = $apikey;
      }
    
      public function PrefCode2PrefName($prefCode){
        $prefs = $this->request('prefectures')['result'];
        for ($i=0; $i < count($prefs); $i++) {
          if($prefs[$i]['prefCode'] == $prefCode) return $prefs[$i]['prefName'];
        }
        return false;
      }
    
      public function GetCityByCode($cityCode){
        $prefs = $this->request('prefectures')['result'];
        for ($i=0; $i < count($prefs); $i++) {
          $cities = $this->request('cities',array("prefCode"),array($prefs[$i]['prefCode']))['result'];
          for ($j=0; $j < count($cities); $j++) {
            if($cities[$j]['cityCode'] == $cityCode) return $cities[$j];
          }
        }
        return false;
      }
    
      public function request($api,$parameters = array(),$values = array()){
        $parval = "?";
    
        foreach ($parameters as $key => $value) {
          $parval .= $value."=".$values[$key];
          if($key < count($parameters)) $parval .= "&";
        }
    
        $headers = array('X-API-KEY:'.$this->API_KEY);
    
        $context = stream_context_create(array(
            'http'=>array(
            'header' => implode("¥n",$headers),
          ),
        ));
    
        $json = file_get_contents("https://opendata.resas-portal.go.jp/api/v1/".$api.$parval,false,$context);
        $json = mb_convert_encoding($json,'UTF-8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
        $arr = json_decode($json,true);
        return $arr;
      }
    }
    ?>
    

    이 클래스는 다음과 같이 사용할 수 있습니다.
    <?php
    require("PRO.php");
    $pro = new PRO("ここにAPIキー");
    
    $pref = $pro->request("https://opendata.resas-portal.go.jp/api/v1/prefectures");
    
    foreach($pref as $key => $value): ?>
    <?=$value?>
    <br />
    <?php endforeach;?>
    

    Chart.js



    그래프의 표시에는 Chart.js 를 사용하고 있습니다.

    Chart.js에서 꺾은선형 차트를 그릴 때 주요 프로그램입니다.
    $ (function ()
    {
        const config = {
            type: 'line',
            data: barChartData
        }
    
        const context = $("#chart")
        const chart = new Chart(context,config)
    })
    
    const barChartData = {
        bezierCurve : true,
        labels : [/*x軸のラベル*/],
        datasets : [
            {
                backgroundColor: '背景色',
                borderColor: 'ボーダーの色',
                borderWidth: 'ボーダーの太さ',
                fill: false,
                label: "y軸のラベル",
                lineTension: 0,
                data : [/*グラフデータ*/]
            }
        ]
    }
    

    그리고는 라벨과 그래프 데이터를 PHP로 생성해 줍니다.

    단지','단락이므로 implode() 등으로 단락해 출력하지 않으면 안됩니다.

    마지막으로



    이번에 소개한 RESAS 툴은 앞으로도 컨텐츠를 늘려갈 예정입니다.

    고마워요.

    좋은 웹페이지 즐겨찾기