Pythonに基づいて個人のフットプリントマップを描く

序文

最初の2年間、小さなフットプリントのマッププログラムは友人の輪で人気があり、しばらくの間、誰もが自分の旅行マップを公開するのに人気がありました。しかし、最近、フットプリントマップの小さなプログラムをいくつか経験しました。これらの小さなプログラムはフットプリントマップと呼ばれていますが、せいぜい州レベルで表示され、都市レベルでは正確ではないことがわかりました。そのため、週末にPythonを使用して時間を過ごしました。自分のフットプリントマップを描くため。これは都市レベルまで正確です。

次のパートでは、個人のフットプリントマップを簡単に描画する方法を紹介します。

まず、Python用に次のサードパーティモジュールをインストールする必要があります。

echarts-china-cities-pypkg==0.0.9
echarts-china-provinces-pypkg==0.0.3
pyecharts==1.6.2
PyYAML==5.3.1

このプロジェクトの完全な構造は次のとおりです。

プロジェクトでYAMLファイルを使用して、旅行した州と州の下の都市を構成します。作成者の構成ファイルは次のとおりです。

北京:-ヤンチン地区
 - チャンピン地区
 - ハイディアン地区
 - 東城エリア
 - Xicheng地区
 - ダクシン地区
 - チャオヤン地区
上海:-Jiading地区
 - 青浦地区
 - 松江地区
 - 宝山区
 - ミンハン地区
 - Fengxian地区
 - プドン新エリア
 - チョンミン地区
 - Xuhui地区
 - 黄浦地区
 - ジンアン地区
 - ヤンプ地区
 - 紅光地区
 - 金山地区
 - チャンニン地区
 - プトゥオ地区
天津:-ビンハイニューエリア
 - 南海地区
 - ヘクシ地区
 - ヘピン地区
ヘベイ:-Baoding
 - ラングファンシティ
シャンドン:-やんたい
 - 青島市
江蘇:-南京市
 - 蘇州市
 - 楊州
 - ジェンジャン
 - 武士市
浙江:-杭州市
 - Shaoxing City
 - 寧波市
 - 周山
 - 湖州
 - Jiaxing City
 - 大州
 - 金華市
江西:-ナンチャン
 - 九江市
アンフイ:-黄山市
ふべい:-ウーハン
湖南:-チャンシャ市
ハイナン:-ハイコウ
 - 三亜市
四川:-成都
広東:-張江

次に、Pythonスクリプトを使用してフットプリントマップを生成します。 1つ目は、中央政府直下の州や市町村の状況を表示するために使用される全国地図です。china_map.pyのコードは次のとおりです。

g: utf-8-*-
# author: Jclian91
# place: Pudong Shanghai
# time:2020/5/319:午前21時
# 個人の足跡のマッピング:全国
import yaml
from pyecharts.charts import Map
from pyecharts import options as opts

# 州および市町村
withopen("travel_config.yml",'r', encoding='utf-8')as ymlfile:
 province_city_dict = yaml.safe_load(ymlfile)

province_dict =dict(zip(province_city_dict.keys(),[1]*len(province_city_dict.keys())))print(province_dict)

# maptype='china'国の自治体と州のみを表示
map =Map(init_opts=opts.InitOpts(width='1200px', height='800px'))
map.set_global_opts(
 title_opts=opts.TitleOpts(title="個人用フットプリントマップ"),
 visualmap_opts=opts.VisualMapOpts(max_=1, is_piecewise=True,
     pieces=[{"max":1,"min":1,"label":"なっている","color":"#4EA397"},{"max":0,"min":0,"label":"未なっている","color":"#FFFFFF"},]) #最大データ範囲、セグメント
                   )
map.add("個人用フットプリントマップ", data_pair=province_dict.items(), maptype="china", is_roam=True)
map.render('全国.html')

上記のスクリプトを実行すると、national.htmlが生成されます。画像が中央に表示されるようにするために、HTMLで次の行を使用します。

< div id="a438407081634ceab6af1c965034ae16" class="chart-container" style="width:1200px; height:800px;" </div

次のコンテンツをスタイルに追加します。

margin:auto;top:30px

全国フットプリントマップのレンダリングは次のとおりです。

パーソナルフットプリントマップ-全国

次に、province_map.pyスクリプトを使用して、各州と都市のフットプリントマップを生成しましょう。コードは次のとおりです。

# - *- coding: utf-8-*-
# author: Jclian91
# place: Pudong Shanghai
# time:2020/5/3110:午前1時
# 個人のフットプリントマップを描く:州と都市
import yaml
from pyecharts.charts import Map
from pyecharts import options as opts

# 州や市町村の下の都市
withopen("travel_config.yml",'r', encoding='utf-8')as ymlfile:
 province_city_dict = yaml.safe_load(ymlfile)for province, cities in province_city_dict.items():

 map =Map(init_opts=opts.InitOpts(width='1200px', height='800px'))
 map.set_global_opts(
 title_opts=opts.TitleOpts(title="個人用フットプリントマップ-%s"% province),
 visualmap_opts=opts.VisualMapOpts(max_=1, is_piecewise=True,
      pieces=[{"max":1,"min":1,"label":"なっている","color":"#4EA397"},{"max":0,"min":0,"label":"未なっている","color":"#FFFFFF"},]) #最大データ範囲、セグメント
                     )
 city_dict =dict(zip(cities,[1]*len(cities)))
 map.add("個人用フットプリントマップ-%s"% province, data_pair=city_dict.items(), maptype=province, is_roam=True)
 map.render('./provinces/%s.html'% province)print("個人用フットプリントマップを生成する-%の成功"% province)

このとき、各州または市町村のフットプリントマップが州ディレクトリに生成され、画像が中央に配置されるように各HTMLを個別に変更します。ここでは、3つの州と都市の状況のみを示しています。

パーソナルフットプリントエリア-ハイナン

個人フットプリントマップ-江蘇

個人フットプリントマップ-Zhejiang

最後のステップであり、最も重要なステップは、国のフットプリントマップと各州および都市のフットプリントマップの間のリンクを開く必要があることです。つまり、国のフットプリントマップで訪問した州をクリックすると、クリックして州と都市を表示できます。どの都市が訪問されたかなどのフットプリントマップの状況。

この点で、マップの画像ハンドルがchart_a438407081634ceab6af1c965034ae16であると仮定して、生成された国の.htmlファイルを変更し、最後に<script 对中添加内容如下:(确保点击去过的省份,可以查看该省市的足迹地图)

chart_a438407081634ceab6af1c965034ae16.on('click',function(param){var selected = param.name;if(selected){switch(selected){case'北京':
    location.href ="provinces/北京.html";break;case'上海':
    location.href ="provinces/上海.html";break;case'天津':
    location.href ="provinces/天津.html";break;case'四川':
    location.href ="provinces/四川.html";break;case'アンフイ':
    location.href ="provinces/アンフイ.html";break;case'シャンドン':
    location.href ="provinces/シャンドン.html";break;case'江蘇':
    location.href ="provinces/江蘇.html";break;case'江西':
    location.href ="provinces/江西.html";break;case'ヘベイ':
    location.href ="provinces/ヘベイ.html";break;case'浙江':
    location.href ="provinces/浙江.html";break;case'ハイナン':
    location.href ="provinces/ハイナン.html";break;case'ふべい':
    location.href ="provinces/ふべい.html";break;case'湖南':
    location.href ="provinces/湖南.html";break;case'広東':
    location.href ="provinces/広東.html";break;default:break;}}});

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonに基づいて個人のフットプリントマップを描く
WordPress-Ubuntu16.04に基づいて個人ブログを作成する
パイソンの描画|スペースマップ上にバブルの描画を分散させる
pythonに基づいてマトリックスの計算結果を確認する
Pythonのインターフェースに基づいてプログラミングする方法
PythonはQQメールボックスに基づいてSSL送信を実装します
Pythonに基づくデータタイプの詳細な説明
FMEに基づくPythonプロセスの使用図
pythonに基づく名刺管理システムの実装
pythonに基づいて凸型船体の問題を解決します
pythonに基づく残りの問題の詳細な説明(%)
Ubuntu14.04にPython3をインストールします
Ubuntu16.04にPython3をインストールします
UbuntuにPython3.7をインストールする
python Tic-Tac-Toe-テキストバージョン(オン)