12
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Python】foliumで日本地図と市町村の線を描く

Posted at

日本地図に市町村の線を引きたい

Pythonのfoliumで、手軽に市町村の地図を描きます。
今回は東京都の八王子市のラインが必要だと仮定します。

必要なもの

  • python(folium)
  • curl

手順は2つです。

  1. 市町村のgeojsonデータをcurlで取得
  2. pythonで可視化

1. 市町村のgeojsonデータをcurlで取得

geoJsonがまとまっているすごいrepositoryを発見しました。

  • 以下から必要な市町村を選択

  • rawのリンクを取得
    image.png

  • curlでデータ取得してjson形式で保存

get_json.sh
$ curl https://raw.githubusercontent.com/niiyz/JapanCityGeoJson/master/geojson/13/13201.json > cityline.json

これで必要なデータが取得できるので、pythonで扱う際に都合の良い場所に置きます。
今回はdata/フォルダに移動させます。

$ mv cityline.json data/cityline.json 

2.python(folium)で可視化

  • pythonで地図を描いて、cityline.jsonを表示させる

線がわかりやすいように、白地の地図をベースに指定しております。

map.py
# 地図のベースを指定
copyright_st = '© ' \
            'Map tiles by <a href="http://stamen.com">Stamen Design</a>,' \
            ' under <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>.' \
            'Data by <a href="http://openstreetmap.org">OpenStreetMap</a>,' \
            'under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.'

# ベースマップにlineを描く関数
def jap_map(base_map, geojson_path):
    # geojson読み込み
    base_map.choropleth(geo_data=geojson_path, 
                        line_color="red", 
                        line_weight=5, 
                        fill_color='white', 
                        fill_opacity=0.1, 
                        line_opacity=0.5)

# ベースマップ定義
base_map = folium.Map(location=[35.655616, 139.338853], 
                      attr=copyright_st,
                      tiles='https://stamen-tiles-{s}.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png',
                      zoom_start=10.0)

# ベースマップに八王子駅のpopup追加
folium.Marker([35.655616, 139.338853],
              popup='八王子駅',
              icon=folium.Icon(color='red', icon='train', prefix='fa')).add_to(base_map)

# ベースマップに枠線追加
jap_map(base_map=base_map, geojson_path='data/cityline.json')

base_map
  • 市町村のlineが入った地図が表示される

image.png

niiyx/JapanCityGeoJsonの偉業のおかげでとても低コストでいい感じの地図がかけました!

参考

Folium 0.5.0 documentation

niiyx/JapanCityGeoJson

12
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?