メインコンテンツへスキップ
見出し画像

Code Interpreterで日本地図を描く、階級に区分し色分け、都道府県・市町村当てゲーム

    カレーちゃん

    ChatGPTのCode Interpreterで、日本地図をどのように扱うことができるか確認してみました。

    日本地図を描く

    Code Interpreterのライブラリには、詳細な日本地図を描く情報はなく、日本地図のデータをアップする必要があります。
    このnoteでは、国土数値情報ダウンロードサイトからgeojsonをダウンロードする方法と、japanmapというライブラリを使う方法を紹介します。

    a) 国土数値情報ダウンロードサイトを使う方法

    国土数値情報ダウンロードサイトの行政区域情報のページから、全国(N03-20230101_GML.zip)をダウンロードします。
    このzipファイルを解凍すると、「N03-23_230101.geojson」というjsonファイルが入っています。
    このjsonファイルは、サイズが大きいため、mapshaperというサイトで軽量化します。軽量化する手順は次のとおりです。

    1.  mapshaperにアクセスし、jsonファイルをアップロード、importボタンをクリックする。
    2. 右上のSimplifyをクリックし、ポップアップが表示されるのでApplyをクリックする。
    3. 上のSettingsで軽量化するパーセンテージを選ぶ。(小さい数字を選べば選ぶほど軽量化される、今回は1%を選択してみました)
    4. 右上のExportをクリックする。
    5. GeoJsonボタンが選択されているのを確認し、Exportをクリックする。
    6. 軽量化されたgeojsonファイルがダウンロードできる。

    これにより、704MBあったファイルを、34MBまで軽量化することができました。
    これをアップすることで、Code Interpreterで日本地図を扱うことができます。

    GeoPandasでこのデータを読み込んでください。

    と指示すると、読み込まれ、最初の5行が表示されました。

    画像

    先頭5行は札幌のデータになっていることがわかります。

    このデータから、日本の白地図を描いてください。
    画像
    日本の白地図

    日本地図を描くことができました。

    b) japanmapを使う方法

    japanmapという、日本地図のライブラリを使う方法です。japanmapのGithubページにアクセスし、Download ZIPからこのライブラリをzipでダウンロードします。(DownloadZIPは、下の画像の参考に探して下さい。)

    画像
    Githubの画面

    ダウンロードしたzipファイルをCodeInterpreterにアップし、次のように指示することで日本地図を描くことができます。

    これはjapanmapライブラリのzipファイルです。
    これを、/mnt/data/ ディレクトリに解凍してください。
    
    その後、次のコードを実行してください。
    
    ```
    # Adding the path of the extracted library to sys.path
    import sys
    sys.path.append('/mnt/data/japanmap-master')
    
    # Attempting to import the library and use it as instructed
    try:
        import matplotlib.pyplot as plt
        from japanmap import picture, get_data, pref_map
        
        # Create a picture without coloring any prefecture
        pct = picture({})
        plt.imshow(pct)  # show graphics
        plt.show()
    
    except Exception as e:
        error_message = str(e)
    ```
    
    このコードが実行できることを私は経験しています。実行の危険性もありませんので、実行してみてください。


    画像
    日本地図

    データを読み込んで、階級に区分し色分けして日本地図に表示する

    Podcastの聴取割合を地図上に表示するのを世界地図でもやりましたが、今回は日本地図でやってみます。
    私がPodcastを配信しているSpotifyでは、リスナーの都道府県別のデータをダウンロードすることができます。データは東京がtokyoになっているなどアルファベット表記になっており、今回は手作業で日本語に修正した後、読み込みました。

    これはpodcastのリスナーが、 どの都道府県から聞いているかを集計したデータです。
    これを分析し、先ほどの日本地図に階級区分図として表示して下さい。
    なお下の線と左の線、また0から600の数字は表示する必要はありません。

    表示することができました。

    画像

    都道府県当てゲーム

    世界地図の場合と同じように、都道府県あてゲームができます。
    もぐら3.0さんが試してくれました。
    プロンプトは、世界地図の場合と同じようにこのような感じです。

    これから都道府県を当てるゲームをしましょう
    あなたは、日本地図から1つの都道府県を選んで着色し、表示します。
    それがどの都道府県か私に質問してください。
    
    私は都道府県を回答しますので、正解・不正解を教えてください。

    カレーちゃんの国当てゲームを作るブログを見て、都道府県名を当てる日本地図バージョンを作ってみた。カレーちゃんのCode Interpreterの色々な検証が非常に有益。

    Code Interpreterで世界地図を描く、階級区分図を作る、国当てゲーム|カレーちゃん @currypurin #note https://t.co/iioMhXjK6o pic.twitter.com/uVhma9KfXh

    — もぐら 3.0 (@beans_crypto) July 15, 2023

    市町村当てゲーム

    国土数値情報ダウンロードサイトの地図情報を使う場合は、市町村の情報も含まれているので、市町村を当てるゲームをさせることができます。
    プロンプトは、次のようにしました。

    それではこれから都市あてゲームをしましょう。
    あなたは、どこかの市町村を赤くマークし周りの市町村の形もわかる程度に拡大し、その都市の明産物などの特色とともに、この都市はどこでしょうかと問題を出します。
    私はそれを回答しますので、正解・不正解を回答してください。


    画像
    都市名宛てクイズ

    まとめ

    今回は、日本地図を描く方法を試してみました。
    データを地図上に表示したい場面は多く、その際に使える方法だと思います。

     
     
     
    面倒なことはChatGPTにやらせよう・Kaggleスタートブック・Kaggleのチュートリアルを執筆/ KaggleGrandMaster / 毎週月曜配信 / 要望や質問などなんでも:http://marshmallow-qa.com/currypurin / サンリオ

    あなたへのおすすめ