mcpField
G
geo-visualizer

geo-visualizer

github.com/dkyazzentwatwaデータ・データベース12467 回インストール29 週間前に更新
リポジトリ

geo-visualizer について

geo-visualizerは、地理データからインタラクティブなHTMLマップを作成するPythonツールです。位置データの確認に使え、マーカー、密度表示、地域別の色分け、ルート、レイヤーに対応します。

主な機能

  1. 01アイコンやポップアップ付きマーカー
  2. 02密度ヒートマップ
  3. 03値に応じたコロプレスマップ
  4. 04ルートと範囲を示す円
  5. 05レイヤー制御とマーカークラスタリング

活用シーン

  1. 01CSVの位置データを地図に表示
  2. 02売上密度の可視化
  3. 03クラスターマーカーで店舗を表示
  4. 04配送ルートの表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill geo-visualizer

インストール後、Claude Code で/geo-visualizerを入力して読み込まれたか確認します。

同梱ファイルscripts/geo_visualizer.pyscripts/requirements.txt

詳細

地理ビジュアライザー

Folium を使用して、地理データからインタラクティブな HTML マップを作成します。

機能

  • マーカー:カスタムアイコン、ポップアップ、ツールチップ付きで地点をプロットします
  • ヒートマップ:密度/強度データを可視化します
  • コロプレスマップ:データ値に応じて地域を色分けします
  • ルート/ライン:地点間の経路を描画します
  • 円/エリア:半径に基づく範囲を表示します
  • レイヤーコントロール:複数のレイヤーを切り替えます
  • クラスタリング:密集したマーカーを自動的にクラスタリングします

クイックスタート

from geo_visualizer import GeoVisualizer

# Simple marker map
viz = GeoVisualizer()
viz.add_markers([
    {"lat": 40.7128, "lon": -74.0060, "name": "New York"},
    {"lat": 34.0522, "lon": -118.2437, "name": "Los Angeles"}
])
viz.save("cities.html")

# From CSV
viz = GeoVisualizer()
viz.from_csv("locations.csv", lat_col="latitude", lon_col="longitude")
viz.save("map.html")

CLI の使用方法

# Plot markers from CSV
python geo_visualizer.py --input locations.csv --lat latitude --lon longitude --output map.html

# Add heatmap
python geo_visualizer.py --input data.csv --lat lat --lon lng --heatmap --output heat.html

# With clustering
python geo_visualizer.py --input stores.csv --lat lat --lon lon --cluster --output stores.html

# Choropleth map
python geo_visualizer.py --geojson states.geojson --data stats.csv --key state --value population --output choropleth.html

API リファレンス

GeoVisualizer クラス
class GeoVisualizer:
    def __init__(self, center=None, zoom=10, tiles="OpenStreetMap")

    # Data loading
    def from_csv(self, filepath, lat_col, lon_col, **kwargs) -> 'GeoVisualizer'
    def from_dataframe(self, df, lat_col, lon_col, **kwargs) -> 'GeoVisualizer'
    def from_geojson(self, filepath) -> 'GeoVisualizer'

    # Markers
    def add_marker(self, lat, lon, popup=None, tooltip=None, icon=None, color="blue")
    def add_markers(self, locations: list, name_col=None, popup_cols=None)
    def cluster_markers(self, enabled=True) -> 'GeoVisualizer'

    # Layers
    def add_heatmap(self, points=None, weight_col=None, radius=15) -> 'GeoVisualizer'
    def add_choropleth(self, geojson, data, key_on, value_col, **kwargs) -> 'GeoVisualizer'
    def add_route(self, points, color="blue", weight=3) -> 'GeoVisualizer'
    def add_circle(self, lat, lon, radius_m, color="blue", fill=True)

    # Output
    def save(self, filepath) -> str
    def get_html(self) -> str
    def fit_bounds(self) -> 'GeoVisualizer'

マーカーのオプション

# Custom icons
viz.add_marker(lat, lon, icon="fa-coffee", color="red")

# With popup content
viz.add_marker(lat, lon, popup="<b>Store #123</b><br>Open 9-5")

# From CSV with popup columns
viz.from_csv("stores.csv", lat_col="lat", lon_col="lon")
viz.add_markers(viz.data, popup_cols=["name", "address", "phone"])

ヒートマップのオプション

# Basic heatmap
viz.add_heatmap()

# Weighted heatmap (e.g., by sales volume)
viz.add_heatmap(weight_col="sales", radius=20, blur=15, max_zoom=12)

コロプレスマップ

# Color regions by data
viz.add_choropleth(
    geojson="us-states.geojson",
    data=state_data,
    key_on="feature.properties.name",  # GeoJSON property
    value_col="population",
    fill_color="YlOrRd",  # Color scale
    legend_name="Population"
)

タイルレイヤー

利用可能なベースマップ:

  • OpenStreetMap(デフォルト)
  • CartoDB positron(明るく、シンプル)
  • CartoDB dark_matter(ダークテーマ)
  • Stamen Terrain(地形情報)
  • Stamen Toner(高コントラストの白黒)
viz = GeoVisualizer(tiles="CartoDB positron")

ワークフローの例

店舗検索マップ
viz = GeoVisualizer()
viz.from_csv("stores.csv", lat_col="lat", lon_col="lon")
viz.add_markers(viz.data, popup_cols=["name", "address", "hours"])
viz.cluster_markers(True)
viz.fit_bounds()
viz.save("store_locator.html")
売上ヒートマップ
viz = GeoVisualizer(tiles="CartoDB dark_matter")
viz.from_csv("sales.csv", lat_col="lat", lon_col="lon")
viz.add_heatmap(weight_col="revenue", radius=25)
viz.save("sales_heat.html")
配達ルート
viz = GeoVisualizer()
stops = [(40.7, -74.0), (40.8, -73.9), (40.75, -73.95)]
viz.add_route(stops, color="blue", weight=4)
for i, (lat, lon) in enumerate(stops):
    viz.add_marker(lat, lon, popup=f"Stop {i+1}")
viz.save("route.html")

出力

  • HTML:あらゆるブラウザーで表示できるインタラクティブなマップ
  • 自動フィット:すべてのデータが表示されるように自動でズームします
  • レスポンシブ:モバイルデバイスで動作します

依存関係

  • folium>=0.14.0
  • pandas>=2.0.0
  • branca>=0.6.0

コメント