Beekeeper Studio の中で、クエリ結果をインタラクティブな地図上にプロットできます。座標、ジオメトリ、地名を含む任意の結果セットを指定し、描画方法を選ぶだけです。ドット、サイズ付きバブル、番号付きマーカー、クラスター、ヒートマップ、パス、フローライン、塗りつぶし領域から選べます。

1.6倍速で再生しています。等速の動画を見る。
インストール
Beekeeper Studio では、コミュニティプラグインは初期状態で無効になっています。user.config.ini(Linux では ~/.config/beekeeper-studio/、macOS では ~/Library/Application Support/beekeeper-studio/、Windows では %APPDATA%\beekeeper-studio\)で有効にしてから、アプリを再起動してください:
[pluginSystem]
disabled = false
communityDisabled = false
プラグインがプラグインレジストリに掲載されたら、Tools → Manage Plugins から Map Visualization をインストールしてください。それまでは、開発の説明に従ってビルドし、プラグインフォルダにリンクしてください。
地図を開く
| 場所 | 動作 |
|---|---|
| 結果グリッドまたはテーブルビューの左上隅(または列ヘッダー)を右クリック → Plot on Map | 選択したセルを地図に表示します。クエリは再実行されません。 |
| クエリエディタで右クリック → Plot Query on Map | 選択したテキスト(またはカーソル位置のクエリ)を実行し、地図に表示します。 |
| サイドバーのテーブルを右クリック → View on Map | テーブルに対して SELECT * … LIMIT 10000 を実行します。 |
| 新規タブのドロップダウン、または Tools → New Map | 専用のクエリボックス付きの地図タブを開きます(Ctrl/Cmd+Enter で実行)。 |
クエリ結果はタブ下部の結果テーブルにも表示されるため、元の行データにいつでもワンクリックでアクセスできます。
位置情報の取得元
列は自動的に検出されます。検出結果は Location パネルで変更できます。
| データ | 例 |
|---|---|
| 緯度・経度の列 | lat/lng、latitude/longitude、pickup_lat/pickup_lon、storeLat/storeLng。10進数の度数または DMS(40°42'46"N) |
| Web メルカトルのメートル値 | EPSG:3857 の x/y。自動的に変換されます |
| ジオメトリ列 | PostGIS EWKB の16進数、WKB、WKT / EWKT、GeoJSON(テキストまたはオブジェクト)、MySQL / GeoPackage バイナリ、{lat, lng} または {x, y} オブジェクト、Mongo の GeoJSON ポイント |
| テキスト形式の座標 | "40.7128, -74.0060", (40.7, -74.0), S33.92 E18.42 |
| ジオハッシュ | dr5regw3p |
| 国 | 国名、別名(UK、South Korea、Côte d'Ivoire)、ISO alpha-2/3 または数値コード |
| 米国の州 | 州名、郵便略号、FIPS コード |
| 都市 | Paris、Paris, TX、London, Ontario。国・州の列で絞り込むことも可能。約34k都市、オフライン対応 |
| 米国の ZIP コード | 02134、02134-1234、または先頭のゼロが欠落した数値 |
曖昧な入力は慎重に扱われます。緯度と経度の列が入れ替わっている場合は反転され(警告付き)、曖昧な都市名は最も人口の多い候補に解決されます。正確な中心点がない ZIP コード(私書箱)は3桁の ZIP エリアで代用され、配置できなかった行は件数としてカウントされます。ステータスバーの「位置情報なし N 件」をクリックすると、それらの行をテーブルで確認できます。他の SRID で投影されたジオメトリは、ST_Transform(geom, 4326) を使うヒントとともに報告されます。
描画方法
| レイヤー | 用途 | オプション |
|---|---|---|
| ポイント | ドット、バブル、番号付きマーカー | 列に応じたサイズ(線形、平方根(面積比例)、対数)、外れ値を99パーセンタイルで上限処理、カテゴリまたは数値による色分け(線形、対数、分位数クラス。連続または発散)、ラベル(行番号または列)、不透明度 |
| クラスター | 重なり合う数千のポイント | クラスターごとの件数表示、ズームインで分割 |
| ヒートマップ | 密度(列による重み付けも可能) | 半径、ぼかし、重みスケール。強度はズームごとに正規化されるため、どの縮尺でもホットスポットが見やすく表示されます |
| パス | GPS トラック、ルート、順序付きの訪問 | グループ列ごとに1本のパス。任意の列(時刻、連番)または行順で並べ替え。開始・終了マーカー |
| ライン | 出発地 → 目的地のフロー(移動、配送) | 目的地の列、曲線または直線、列に応じた太さと色 |
| 塗りつぶし領域 | 国または米国の州のコロプレス図 | 行数のカウント、または列の合計・平均・最小・最大。線形、対数、分位数のカラースケール |

マークにカーソルを合わせると概要が、クリックすると行全体が表示され、Show in table と Copy as JSON が使えます。凡例のカテゴリはクリックで非表示に、Alt+クリックでそのカテゴリのみ表示にできます。地図ツールバーのテーブルボタンを押すと、現在の表示範囲内のすべての行が下の結果テーブルに送られます。


ベースマップとエクスポート
このプラグインにはオフライン地図が付属しています。OpenStreetMap のデータから作成した20 MBの世界地図で、インターネット接続やサードパーティのタイルサーバーなしで地図を描画できます。国、地域、都市、主要道路を含み、国単位から都市圏単位までの地図をカバーします。街路レベルまでズームすると詳細が不足するため、ステータスバーからオンラインのベースマップに切り替えられます。
ベースマップの一覧は、オフラインで使える Built in の地図と、タイルサーバーからタイルをダウンロードする Online の地図に分かれています。選択中の地図には Offline または Online の表示と、使用するサーバーが示されます。
- Built in: Match app theme(デフォルト)はオフライン地図をライトまたはダークで表示します。Country outlines は最もシンプルな地図です。
- Online: Esri の道路地図、地形図、衛星画像、OpenStreetMap、OpenTopoMap、または任意のカスタム
{z}/{x}/{y}タイル URL。 - PNG(地図と凡例)としてエクスポート、画像をクリップボードにコピー、またはプロットした行を GeoJSON として保存できます。
より詳細なオフライン地図
Settings → Basemap の Detailed area → Load file… で、Protomaps ベースマップの .pmtiles ファイルを世界地図の上に重ねられます。たとえば pmtiles CLI で作成した、特定の都市や国の街路レベルの抽出データなどです。ファイルの範囲外では通常どおり世界地図が表示されます。
# street detail for New York City (about 100 MB)
pmtiles extract https://build.protomaps.com/20261014.pmtiles nyc.pmtiles --bbox=-74.26,40.48,-73.69,40.92 --maxzoom=15
最近のビルド日付のものを使用してください。他のタイルスキーマ(OpenMapTiles、ラスター)のファイルは読み込めません。
設定、クエリ、表示範囲はタブとともに保存されます。復元されたタブでクエリが自動的に再実行されるのは、以前に実行済みで、かつ単一の読み取り専用 SELECT の場合のみです。
既知の問題
6.1.5 以前の Beekeeper Studio には、このプラグインに影響する3つのバグがあります。修正はアップストリームで対応中です:
- Community エディションでは、結果パネル付きのプラグインタブ(このプラグインなど)の高さが約150pxしか表示されません。
- クエリエディタのコンテキストメニューの Plot Query on Map が動作しません(ホストがクエリテキストを渡さないため)。
- Copy image はエラーで失敗します。Save as PNG… は動作します。
それまでの間は、他の起動方法をご利用いただけます。
開発
必要環境: Beekeeper Studio 5.5+、Node.js 20.19+、Yarn 1。
yarn install
yarn dev # links the plugin into Beekeeper Studio's plugins folder and hot-reloads
yarn test # unit tests (vitest)
yarn build # type-check + production build into dist/
yarn dev はこのフォルダをプラグインディレクトリ(Linux では ~/.config/beekeeper-studio/plugins/bk-plugin-map-visualization)にシンボリックリンクします。リンク名は manifest.json の id と一致している必要があります。
src/
App.vue data sources, state, popups, export
components/ settings panel, legend, icons
lib/geo/ WKB / WKT / geohash / DMS parsing, regions, offline geocoding
lib/detect.ts column auto-detection
lib/build.ts rows -> plottable items (CRS, axis order, geocoding)
lib/model.ts sizes, colors, aggregates, legends
lib/renderer.ts Leaflet layers
lib/pack.ts offline map packs: validation, PMTiles source
lib/offlineMap.ts bundled world map + detailed area (IndexedDB), shared by all map tabs
data/ generated lookup tables (see below)
basemaps/world.pmtiles the offline world map, bundled into dist/
src/data/ のルックアップテーブルは公開データセットから生成されています:
# download cities15000.zip, countryInfo.txt and admin1CodesASCII.txt from https://download.geonames.org/export/dump/
# and 2023_Gaz_zcta_national.zip from the US Census gazetteer, unzip them into one folder, then:
yarn geodata /path/to/that/folder
basemaps/ のオフライン世界地図は、ズーム6までに切り詰めた Protomaps ビルドで、土地利用、土地被覆、POI のレイヤーを除外しています(サイズは約半分になり、データ地図ではこれらを描画しないため):
pmtiles extract https://build.protomaps.com/<YYYYMMDD>.pmtiles world-z6.pmtiles --maxzoom=6
yarn basemap world-z6.pmtiles basemaps/world.pmtiles
プラグインのダウンロードサイズを小さくしたい場合は、--maxzoom=5 にすると町や道路が少ない5 MBの地図になります。
リリース
bin/make-release.sh を実行します。既存のタグから次のバージョンを提案し、manifest.json と package.json の version を設定してコミットし、v1.0.0 のような対応するタグをプッシュします。リリースワークフローがテストとビルドを行い、manifest.json とプラグインの zip を含む GitHub リリースの下書きを作成します。
データソースとライセンス
- 都市データ © GeoNames、CC BY 4.0。
- 国と州の形状は
world-atlas経由の Natural Earth、およびus-atlas経由の US Census(パブリックドメイン)のものです。 - ZIP コードの中心点は US Census Bureau の ZCTA gazetteer(パブリックドメイン)のものです。
- オフライン地図は © OpenStreetMap contributors(ODbL)および Natural Earth のデータで、Protomaps のベースマップビルドを使用し、protomaps-leaflet(BSD-3-Clause)で描画しています。
- 地図タイルは各サービス(Esri、OpenStreetMap、OpenTopoMap)がそれぞれの利用規約に基づいて提供しています。帰属表示は地図上に表示されます。
- Leaflet、Leaflet.markercluster、Leaflet.heat を使用して構築されています。
このプラグインは GPL-3.0 でライセンスされています。LICENSE をご覧ください。