Exiba resultados de consultas em um mapa interativo, direto no Beekeeper Studio. Aponte para qualquer conjunto de resultados com coordenadas, geometria ou nomes de lugares e escolha como desenhá-lo: pontos, bolhas dimensionadas, marcadores numerados, clusters, mapas de calor, trajetos, linhas de fluxo ou regiões preenchidas.

Acelerado 1.6×. Assista ao vídeo em velocidade normal.
Instalação
O Beekeeper Studio vem com os plugins da comunidade desativados. Ative-os no user.config.ini (~/.config/beekeeper-studio/ no Linux, ~/Library/Application Support/beekeeper-studio/ no macOS, %APPDATA%\beekeeper-studio\ no Windows) e reinicie o app:
[pluginSystem]
disabled = false
communityDisabled = false
Quando o plugin estiver listado no registro de plugins, instale o Map Visualization em Tools → Manage Plugins. Até lá, compile-o e crie um link na pasta de plugins conforme descrito em Desenvolvimento.
Abrindo um mapa
| Onde | O que acontece |
|---|---|
| Clique com o botão direito no canto superior esquerdo (ou no cabeçalho de uma coluna) de uma grade de resultados ou visualização de tabela → Plot on Map | Mapeia as células selecionadas. Nenhuma consulta é executada novamente. |
| Clique com o botão direito no editor de consultas → Plot Query on Map | Executa o texto selecionado (ou a consulta sob o cursor) e a mapeia. |
| Clique com o botão direito em uma tabela na barra lateral → View on Map | Executa SELECT * … LIMIT 10000 na tabela. |
| Menu de nova aba ou Tools → New Map | Abre uma aba de mapa com sua própria caixa de consulta (Ctrl/Cmd+Enter executa). |
Os resultados da consulta também aparecem na tabela de resultados inferior da aba, então as linhas brutas estão sempre a um clique de distância.
De onde vêm as localizações
As colunas são detectadas automaticamente. A detecção pode ser substituída no painel Location.
| Dados | Exemplos |
|---|---|
| Colunas de latitude / longitude | lat/lng, latitude/longitude, pickup_lat/pickup_lon, storeLat/storeLng; graus decimais ou DMS (40°42'46"N) |
| Metros Web Mercator | x/y em EPSG:3857, convertidos automaticamente |
| Colunas de geometria | PostGIS EWKB hex, WKB, WKT / EWKT, GeoJSON (texto ou objetos), binário MySQL / GeoPackage, objetos {lat, lng} ou {x, y}, pontos GeoJSON do Mongo |
| Coordenadas em texto | "40.7128, -74.0060", (40.7, -74.0), S33.92 E18.42 |
| Geohashes | dr5regw3p |
| Países | nomes, apelidos (UK, South Korea, Côte d'Ivoire), códigos ISO alfa-2/3 ou numéricos |
| Estados dos EUA | nomes, siglas postais, códigos FIPS |
| Cidades | Paris, Paris, TX, London, Ontario, opcionalmente refinadas por colunas de país / estado; ~34 mil cidades, offline |
| CEPs dos EUA (ZIP) | 02134, 02134-1234 ou números que perderam o zero à esquerda |
Entradas ambíguas são tratadas com cautela: colunas de lat/lng trocadas são invertidas (com um aviso), nomes de cidades ambíguos resolvem para a correspondência mais populosa, ZIP codes sem centroide exato (caixas postais) recorrem à área de ZIP de 3 dígitos, e tudo o que não pode ser posicionado é contado. Clique em “N sem localização” na barra de status para ver essas linhas na tabela. Geometrias projetadas em outros SRIDs são informadas com uma dica para usar ST_Transform(geom, 4326).
Formas de desenhar
| Camada | Use para | Opções |
|---|---|---|
| Pontos | Pontos, bolhas, marcadores numerados | Tamanho por coluna (linear, raiz quadrada (fiel à área) ou log), limite de outliers no percentil 99, cor por categoria ou número (classes linear, log ou quantil; sequencial ou divergente), rótulos (número da linha ou uma coluna), opacidade |
| Clusters | Milhares de pontos sobrepostos | Contagem por cluster, aproxime para separar |
| Mapa de calor | Densidade, opcionalmente ponderada por uma coluna | Raio, desfoque, escala de peso. A intensidade é normalizada por zoom para que os pontos quentes fiquem visíveis em qualquer escala |
| Trajeto | Trilhas de GPS, rotas, visitas ordenadas | Um trajeto por coluna de agrupamento, ordenado por qualquer coluna (horários, números de sequência) ou pela ordem das linhas; marcadores de início / fim |
| Linhas | Fluxos origem → destino (viagens, remessas) | Colunas de destino, curvas ou retas, largura e cor por coluna |
| Regiões preenchidas | Mapas coropléticos de países ou estados dos EUA | Contagem de linhas ou soma / média / mín / máx de uma coluna; escala de cores linear, log ou por quantil |

Passe o mouse sobre uma marca para ver um resumo e clique nela para ver a linha completa, com Show in table e Copy as JSON. Clique nas categorias da legenda para ocultá-las, ou use Alt+clique para mostrar só aquela categoria. O botão de tabela na barra de ferramentas do mapa envia todas as linhas da visualização atual para a tabela de resultados abaixo.


Mapas base e exportação
O plugin inclui um mapa offline: um mapa-múndi de 20 MB feito com dados do OpenStreetMap, para que os mapas sejam desenhados sem conexão com a internet nem servidores de tiles de terceiros. Ele tem países, regiões, cidades e estradas principais, o que cobre mapas de países até regiões metropolitanas; ao aproximar até o nível das ruas, faltam detalhes, e a barra de status oferece um mapa base online no lugar.
A lista de mapas base é dividida em mapas Built in, que funcionam offline, e mapas Online, que baixam tiles de um servidor. O mapa selecionado é identificado como Offline ou Online, com o servidor que utiliza.
- Built in: Match app theme (padrão) usa o mapa offline em claro ou escuro; Country outlines é o mapa mais simples.
- Online: ruas, topografia e imagens de satélite da Esri, OpenStreetMap, OpenTopoMap ou qualquer URL de tiles personalizada
{z}/{x}/{y}. - Exporte como PNG (mapa e legenda), copie a imagem para a área de transferência ou salve as linhas plotadas como GeoJSON.
Mapas offline mais detalhados
Detailed area → Load file… em Settings → Basemap adiciona um arquivo .pmtiles de mapa base Protomaps sobre o mapa-múndi, como um recorte em nível de rua de uma cidade ou país feito com a CLI pmtiles. Fora da área do arquivo, o mapa-múndi aparece normalmente.
# 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
Use uma data de build recente. Arquivos em outros esquemas de tiles (OpenMapTiles, raster) são rejeitados.
As configurações, a consulta e a área visível são salvas com a aba. Uma aba restaurada só executa a consulta novamente de forma automática se ela já tiver sido executada e for um único SELECT somente leitura.
Problemas conhecidos
Três bugs do Beekeeper Studio afetam este plugin na versão 6.1.5 e anteriores; as correções estão pendentes upstream:
- Na Community Edition, abas de plugin com painel de resultados (como esta) são renderizadas com apenas cerca de 150px de altura.
- Plot Query on Map no menu de contexto do editor de consultas não faz nada (o host não repassa o texto da consulta).
- Copy image falha com um erro; Save as PNG… funciona.
Os outros pontos de entrada funcionam enquanto isso.
Desenvolvimento
Requisitos: 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 cria um symlink desta pasta no diretório de plugins (~/.config/beekeeper-studio/plugins/bk-plugin-map-visualization no Linux). O nome do link deve corresponder ao id em manifest.json.
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/
As tabelas de consulta em src/data/ são geradas a partir de datasets públicos:
# 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
O mapa-múndi offline em basemaps/ é um build do Protomaps cortado no zoom 6, sem as camadas de uso do solo, cobertura do solo e POIs (cerca de metade do tamanho, e um mapa de dados não as desenha):
pmtiles extract https://build.protomaps.com/<YYYYMMDD>.pmtiles world-z6.pmtiles --maxzoom=6
yarn basemap world-z6.pmtiles basemaps/world.pmtiles
--maxzoom=5 gera um mapa de 5 MB com menos cidades e estradas, caso o download do plugin precise ser menor.
Publicação
Execute bin/make-release.sh. Ele sugere a próxima versão com base nas tags existentes, define version em manifest.json e package.json, faz o commit e envia uma tag correspondente, como v1.0.0. O workflow de release testa, compila e cria um rascunho de release no GitHub com o manifest.json e o zip do plugin.
Fontes de dados e licenças
- Dados de cidades © GeoNames, CC BY 4.0.
- Formas de países e estados do Natural Earth via
world-atlas, e do US Census viaus-atlas(domínio público). - Centroides de ZIP codes do gazetteer ZCTA do US Census Bureau (domínio público).
- O mapa offline é © colaboradores do OpenStreetMap (ODbL) e Natural Earth, a partir de um build de mapa base do Protomaps, desenhado com protomaps-leaflet (BSD-3-Clause).
- Os tiles de mapa são fornecidos pelos respectivos serviços (Esri, OpenStreetMap, OpenTopoMap) sob seus próprios termos; a atribuição é exibida no mapa.
- Feito com Leaflet, Leaflet.markercluster e Leaflet.heat.
Este plugin é licenciado sob a GPL-3.0. Veja LICENSE.