mapboxgl-jupyterでOpenStreetMap上に描画
5298 ワード
MapBoxのアカウントを作らずに、MapBoxGLを用いて地図上に描画を行いたい場合に利用
import os
import pandas as pd
from mapboxgl.utils import create_color_stops, df_to_geojson
from mapboxgl.viz import CircleViz
# ベースとなるレイヤの定義(OpenStreetMap)
style_json = '''
{
"version": 8,
"sources": {
"osmSource": {
"type": "raster",
"tiles": [
"https://a.tile.openstreetmap.org/{z}/{x}/{y}.png",
"https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"
],
"tileSize": 256
}
},
"layers": [
{
"id": "osmLayer",
"type": "raster",
"source": "osmSource",
"minzoom": 0,
"maxzoom": 22
}
]
}
'''
style = json.loads(style_json)
# サンプルデータDL -> DataFrame
data_url = 'https://raw.githubusercontent.com/mapbox/mapboxgl-jupyter/master/examples/data/points.csv'
df = pd.read_csv(data_url)
# DataFrame -> GeoJsonに直変換(簡略化のためファイルには起こさない)
df_geo = df_to_geojson(df,
properties=['Avg Medicare Payments', 'Avg Covered Charges', 'date'],
lat='lat', lon='lon', precision=3,
)
# 色設定
color_breaks = [0,10,100,1000,10000]
color_stops = create_color_stops(color_breaks, colors='YlGnBu')
# 描画
viz = CircleViz(df_geo,
style=style,
height='400px',
color_property = "Avg Medicare Payments",
color_stops = color_stops,
center = (-95, 40),
zoom = 3,
)
viz.show()
完全ではなさそうだが描画には成功
(Payments の値が10000しか描画されていない、ファイルに起こしていないことによるデータ点数起因?)
参考
Author And Source
この問題について(mapboxgl-jupyterでOpenStreetMap上に描画), 我々は、より多くの情報をここで見つけました https://qiita.com/leo-mon/items/95cffc808d3c1d2f2046著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .