目次
1. leafmapの概要
1.1 leafmapとは
1.2 主な機能
2.実験
2.1 環境準備
2.2 地図の作成
2.3 Basemapの設定
2.4 線パスの追(geojson)
2.5 ヒートマップ(heatmap)
2.6 csvファイルで位置追加
2.7 地図の表示
2.8 LeapmapとKeplerの組み合わせ
1. leafmapの概要
1.1 leafmapとは、
Leafmapは、Jupyter notebook環境でインタラクティブなマッピングと地理空間分析を行うための無料でオープンソースのPythonパッケージです。Leafmapには、ユーザーがコーディングせずにベクターデータとラスターデータをマップにロードできるようにするさまざまなインタラクティブツールを備えたツールセットがあります。
WhiteboxToolsライブラリには、現在、以下のような高度な地理空間分析用の500以上のツールが含まれています。
GIS Analysis, Geomorphometric Analysis, Hydrological Analysis, LiDAR Data Analysis, Mathematical and Statistical Analysis, and Stream Network Analysis.
サンプル画面:
1.2 主な機能
- 1行のコードのみでインタラクティブマップを作成
- コーディングせずにインタラクティブにさまざまなベースマップから変換
- XYZ、WMS、およびベクタータイルサービスをマップに追加が可能
- CSVをポイントに変換し、ポイントをマーカークラスターとして表示が可能
- コーディングせずに、ローカルのベクターデータ(シェープファイル、GeoJSON、KMLなど)を地図に追加します。
- コーディングせずにローカルラスターデータ(GeoTIFFなど)を地図に追加します。
- Cloud Optimized GeoTIFF(COG)とSpatialTemporal Asset Catalog(STAC)をマップに追加します。
- 1行のコードでOpenStreetMapデータを地図に追加します。
- 1行のコードでGeoPandasGeoDataFrameをマップに追加します。
- ポップアップ属性を持つポイントレイヤーをマップに追加します。
- PostGISデータベースからマップにデータを追加します。
- カスタムの凡例とカラーバーをマップに追加します。
- WhiteboxToolsとwhiteboxguiを使用して地理空間分析を実行します。
- 分割パネルマップとリンクマップを作成します。
- 1行のコードでインタラクティブマップを公開します。
- 1行のコードでOpenStreetMapデータをダウンロードして表示します。
Github: https://github.com/giswqs/leafmap
Tutorial: https://www.youtube.com/c/QiushengWu
2.実験
2.1 環境準備
ライブラリのインストール
!pip install leafmap !pip install keplergl |
ライブラリのインポート
import leafmap import keplergl
print(f”leafmap version: {leafmap.__version__}”) print(f”keplergl version: {keplergl.__version__}”) |
leafmap version: 0.10.2
keplergl version: 0.3.2
2.2 地図の作成
一行のコードで地図が出来ます。位置とズームの設定が可能です。
画面左には地図のズーム、図型の追加などのアイコンがあります。
画面右には地図のスタイル、地図のスプリット、データインポート、データエクスポートなどの詳細設定のアイコンがあります。
m = leafmap.Map(center=(35, 140), zoom=5) # center=[lat, lon] m |
マップのメニューを設定が可能です。メニューを表示・非表示を設定しました。
m = leafmap.Map( draw_control=False, measure_control=False, fullscreen_control=False, attribution_control=True, ) m |
地図のサイズもできます。
m = leafmap.Map(height=”250px”, width=”400px”) m |
2.3 Basemapの設定
地図のスタイルの設定が可能です。数10スタイルから選ぶことができます。
m = leafmap.Map() m.add_basemap(“Esri.NatGeoWorldMap”) m |
XYZタイルレイヤーの追加
m = leafmap.Map() m.add_tile_layer( url=”https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}”, name=”Google Satellite”, attribution=”Google”, ) m |
ラベルを表示します。
m = leafmap.Map() url = “https://www.mrlc.gov/geoserver/mrlc_display/NLCD_2016_Land_Cover_L48/wms?” m.add_wms_layer( url, layers=”NLCD_2016_Land_Cover_L48″, name=”NLCD 2016 CONUS Land Cover”, format=”image/png”, transparent=True, ) m.add_legend(builtin_legend=’NLCD’) m |
2.4 線パスの追(geojson)
線パスの追加が可能です。
m = leafmap.Map(center=[0, 0], zoom=2) in_geojson = ‘https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/cable_geo.geojson’ m.add_geojson(in_geojson, layer_name=”Cable lines”) m |
2.5 ヒートマップ(heatmap)
ヒートマップの機能
m = leafmap.Map() in_csv = “https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/world_cities.csv” m.add_heatmap( in_csv, latitude=”latitude”, longitude=’longitude’, value=”pop_max”, name=”Heat map”, radius=20, ) m |
2.6 csvファイルで位置追加
csvファイルのデータを利用して、位置のポイントを追加します。
in_csv = ‘https://raw.githubusercontent.com/giswqs/data/main/world/world_cities.csv’ df = leafmap.csv_to_df(in_csv) df |
Map = leafmap.Map() Map.add_xy_data(in_csv, x=”longitude”, y=”latitude”, layer_name=”World Cities”) Map |
2.7 地図の表示
複数地図を表示します。
layers = [‘ROADMAP’, ‘HYBRID’] leafmap.linked_maps(rows=1, cols=2, height=’400px’, layers=layers) |
地図をスプリットします。
leafmap.split_map( left_layer=”NLCD 2001 CONUS Land Cover”, right_layer=”NLCD 2016 CONUS Land Cover”, left_label=”2001″, right_label=”2016″, label_position=”bottom”, center=[36.1, -114.9], zoom=10, ) |
2.8 LeapmapとKeplerの組み合わせ
LeapapとKeplerのパッケージを利用して、下記のようなグラフを作成できます。
import leafmap.kepler as leafmap m = leafmap.Map(center=[37.7621, -122.4143], zoom=12) in_csv = ‘https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/hex_data.csv’ config = ‘https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/hex_config.json’ m.add_csv(in_csv, layer_name=”hex_data”, config=config) m |
Geopandasのデータで地図にグラフを追加します。
import geopandas as gpd gdf = gpd.read_file(“https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/world_cities.geojson”) m = leafmap.Map(center=[20, 0], zoom=1) m.add_gdf(gdf, “World cities”) m |
まとめ
Leapmapはインタラクティブな地図の可視化するpythonのパッケージです。インストールし易いし、利用しやすいし、便利なパッケージです。他のパッケージと組み合わせると、さらに高度な事も可能です。
担当者:KW
バンコクのタイ出身 データサイエンティスト
製造、マーケティング、財務、AI研究などの様々な業界にPSI生産管理、在庫予測・最適化分析、顧客ロイヤルティ分析、センチメント分析、SaaS、PaaS、IaaS、AI at the Edge の環境構築などのスペシャリスト