Zeig Abfrageergebnisse auf einer interaktiven Karte, direkt in Beekeeper Studio. Nimm ein beliebiges Ergebnis mit Koordinaten, Geometrien oder Ortsnamen und wähl die Darstellung: Punkte, skalierte Blasen, nummerierte Marker, Cluster, Heatmaps, Pfade, Flusslinien oder gefüllte Regionen.

1,6× beschleunigt. Video in Originalgeschwindigkeit ansehen.
Installation
In Beekeeper Studio sind Community-Plugins standardmäßig deaktiviert. Aktiviere sie in user.config.ini (~/.config/beekeeper-studio/ unter Linux, ~/Library/Application Support/beekeeper-studio/ unter macOS, %APPDATA%\beekeeper-studio\ unter Windows) und starte die App neu:
[pluginSystem]
disabled = false
communityDisabled = false
Sobald das Plugin in der Plugin-Registry gelistet ist, installierst du Map Visualization über Tools → Manage Plugins. Bis dahin baust du es selbst und verlinkst es in den Plugin-Ordner, wie unter Entwicklung beschrieben.
Eine Karte öffnen
| Wo | Was passiert |
|---|---|
| Rechtsklick auf die linke obere Ecke (oder einen Spaltenkopf) eines Ergebnisrasters oder einer Tabellenansicht → Plot on Map | Zeigt die ausgewählten Zellen auf der Karte. Es wird keine Abfrage erneut ausgeführt. |
| Rechtsklick im Abfrage-Editor → Plot Query on Map | Führt den markierten Text (oder die Abfrage unter dem Cursor) aus und zeigt sie auf der Karte. |
| Rechtsklick auf eine Tabelle in der Seitenleiste → View on Map | Führt SELECT * … LIMIT 10000 auf der Tabelle aus. |
| Dropdown „Neuer Tab“ oder Tools → New Map | Öffnet einen Karten-Tab mit eigenem Abfragefeld (Ctrl/Cmd+Enter führt es aus). |
Abfrageergebnisse erscheinen auch in der Ergebnistabelle unten im Tab, die Rohdaten sind also immer nur einen Klick entfernt.
Woher die Orte kommen
Spalten werden automatisch erkannt. Die Erkennung kannst du im Bereich Location überschreiben.
| Daten | Beispiele |
|---|---|
| Breiten-/Längengrad-Spalten | lat/lng, latitude/longitude, pickup_lat/pickup_lon, storeLat/storeLng; Dezimalgrad oder DMS (40°42'46"N) |
| Web-Mercator-Meter | x/y in EPSG:3857, automatisch umgerechnet |
| Geometrie-Spalten | PostGIS EWKB hex, WKB, WKT / EWKT, GeoJSON (Text oder Objekte), MySQL- / GeoPackage-Binärdaten, {lat, lng}- oder {x, y}-Objekte, Mongo-GeoJSON-Punkte |
| Koordinaten als Text | "40.7128, -74.0060", (40.7, -74.0), S33.92 E18.42 |
| Geohashes | dr5regw3p |
| Länder | Namen, Aliasse (UK, South Korea, Côte d'Ivoire), ISO-Alpha-2/3- oder numerische Codes |
| US-Bundesstaaten | Namen, Postkürzel, FIPS-Codes |
| Städte | Paris, Paris, TX, London, Ontario, optional eingegrenzt über Länder-/Bundesstaat-Spalten; ca. 34.000 Städte, offline |
| US-Postleitzahlen | 02134, 02134-1234 oder Zahlen ohne führende Null |
Unscharfe Eingaben werden vorsichtig behandelt: Vertauschte lat/lng-Spalten werden umgedreht (mit Warnung), mehrdeutige Städtenamen werden dem bevölkerungsreichsten Treffer zugeordnet, Postleitzahlen ohne exakten Mittelpunkt (Postfächer) fallen auf ihr 3-stelliges ZIP-Gebiet zurück, und alles, was sich nicht verorten lässt, wird gezählt. Klick in der Statusleiste auf „N ohne Ort“, um diese Zeilen in der Tabelle zu sehen. Projizierte Geometrien in anderen SRIDs werden mit einem Hinweis auf ST_Transform(geom, 4326) gemeldet.
Darstellungsarten
| Layer | Geeignet für | Optionen |
|---|---|---|
| Punkte | Punkte, Blasen, nummerierte Marker | Größe nach Spalte (linear, Quadratwurzel (flächentreu) oder logarithmisch), Ausreißer beim 99. Perzentil kappen, Farbe nach Kategorie oder Zahl (lineare, logarithmische oder Quantil-Klassen; sequenziell oder divergierend), Beschriftungen (Zeilennummer oder Spalte), Deckkraft |
| Cluster | Tausende überlappende Punkte | Anzahl pro Cluster, zum Aufteilen hineinzoomen |
| Heatmap | Dichte, optional nach Spalte gewichtet | Radius, Unschärfe, Gewichtungsskala. Die Intensität wird pro Zoomstufe normalisiert, damit Hotspots in jedem Maßstab sichtbar bleiben |
| Pfad | GPS-Tracks, Routen, geordnete Besuche | Ein Pfad pro Gruppierungsspalte, sortiert nach beliebiger Spalte (Zeiten, Sequenznummern) oder Zeilenreihenfolge; Start-/Endmarker |
| Linien | Ströme von Start → Ziel (Fahrten, Lieferungen) | Zielspalten, gebogen oder gerade, Breite und Farbe nach Spalte |
| Gefüllte Regionen | Choroplethenkarten von Ländern oder US-Bundesstaaten | Zeilen zählen oder Summe / Durchschnitt / Min / Max einer Spalte; lineare, logarithmische oder Quantil-Farbskala |

Fahr mit der Maus über eine Markierung für eine Zusammenfassung und klick sie an für die ganze Zeile, mit Show in table und Copy as JSON. Legendenkategorien kannst du per Klick ausblenden oder per Alt-Klick als einzige anzeigen. Der Tabellen-Button in der Kartenleiste schickt alle Zeilen der aktuellen Ansicht an die Ergebnistabelle darunter.


Basiskarten und Export
Das Plugin bringt eine Offline-Karte mit: eine 20 MB große Weltkarte aus OpenStreetMap-Daten, sodass Karten ohne Internetverbindung oder fremden Tile-Server gezeichnet werden. Sie enthält Länder, Regionen, Städte und Hauptstraßen und deckt damit Karten vom Land bis zum Ballungsraum ab; auf Straßenebene reichen die Details nicht mehr, und die Statusleiste bietet stattdessen eine Online-Basiskarte an.
Die Liste der Basiskarten ist aufgeteilt in Built in-Karten, die offline funktionieren, und Online-Karten, die Tiles von einem Tile-Server herunterladen. Die gewählte Karte ist als Offline oder Online gekennzeichnet, inklusive des genutzten Servers.
- Built in: Match app theme (Standard) nutzt die Offline-Karte in hell oder dunkel; Country outlines ist die einfachste Karte.
- Online: Esri-Straßenkarte, topografische Karte und Satellitenbilder, OpenStreetMap, OpenTopoMap oder eine beliebige eigene
{z}/{x}/{y}-Tile-URL. - Export als PNG (Karte und Legende), Bild kopieren in die Zwischenablage oder die dargestellten Zeilen als GeoJSON speichern.
Detailliertere Offline-Karten
Detailed area → Load file… unter Settings → Basemap legt eine Protomaps-Basiskarte als .pmtiles-Datei über die Weltkarte, etwa einen Ausschnitt einer Stadt oder eines Landes auf Straßenebene, erstellt mit der pmtiles-CLI. Außerhalb des Dateibereichs wird wie gewohnt die Weltkarte angezeigt.
# 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
Nutze ein aktuelles Build-Datum. Dateien in anderen Tile-Schemas (OpenMapTiles, Raster) werden abgelehnt.
Einstellungen, Abfrage und Kartenausschnitt werden mit dem Tab gespeichert. Ein wiederhergestellter Tab führt seine Abfrage nur dann automatisch erneut aus, wenn sie schon einmal lief und ein einzelnes, rein lesendes SELECT ist.
Bekannte Probleme
Drei Bugs in Beekeeper Studio betreffen dieses Plugin in Version 6.1.5 und älter; die Fixes stehen upstream noch aus:
- In der Community Edition werden Plugin-Tabs mit Ergebnisbereich (wie dieser) nur etwa 150px hoch dargestellt.
- Plot Query on Map im Kontextmenü des Abfrage-Editors tut nichts (die App übergibt den Abfragetext nicht).
- Copy image schlägt mit einem Fehler fehl; Save as PNG… funktioniert.
Die anderen Einstiegspunkte funktionieren in der Zwischenzeit.
Entwicklung
Voraussetzungen: 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 verlinkt diesen Ordner per Symlink in das Plugin-Verzeichnis (~/.config/beekeeper-studio/plugins/bk-plugin-map-visualization unter Linux). Der Linkname muss der id in manifest.json entsprechen.
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/
Die Lookup-Tabellen in src/data/ werden aus öffentlichen Datensätzen erzeugt:
# 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
Die Offline-Weltkarte in basemaps/ ist ein Protomaps-Build, auf Zoomstufe 6 beschnitten und ohne die Layer für Landnutzung, Bodenbedeckung und POIs (etwa halb so groß, und eine Datenkarte zeichnet sie ohnehin nicht):
pmtiles extract https://build.protomaps.com/<YYYYMMDD>.pmtiles world-z6.pmtiles --maxzoom=6
yarn basemap world-z6.pmtiles basemaps/world.pmtiles
--maxzoom=5 ergibt eine 5 MB große Karte mit weniger Orten und Straßen, falls der Plugin-Download kleiner sein soll.
Release erstellen
Führ bin/make-release.sh aus. Das Skript schlägt anhand der vorhandenen Tags die nächste Version vor, setzt version in manifest.json und package.json, committet und pusht einen passenden Tag wie v1.0.0. Der Release-Workflow testet, baut und erstellt einen GitHub-Release-Entwurf mit manifest.json und dem Plugin-Zip.
Datenquellen und Lizenzen
- Städtedaten © GeoNames, CC BY 4.0.
- Länder- und Bundesstaatsformen von Natural Earth über
world-atlasund vom US Census überus-atlas(gemeinfrei). - Mittelpunkte der Postleitzahlen aus dem ZCTA-Gazetteer des US Census Bureau (gemeinfrei).
- Die Offline-Karte ist © OpenStreetMap-Mitwirkende (ODbL) und Natural Earth, aus einem Protomaps-Basiskarten-Build, gezeichnet mit protomaps-leaflet (BSD-3-Clause).
- Karten-Tiles werden von den jeweiligen Diensten (Esri, OpenStreetMap, OpenTopoMap) zu deren eigenen Bedingungen bereitgestellt; die Quellenangabe wird auf der Karte angezeigt.
- Gebaut mit Leaflet, Leaflet.markercluster und Leaflet.heat.
Dieses Plugin steht unter der GPL-3.0-Lizenz. Siehe LICENSE.