A Datasette plugin that detects tables with latitude
and longitude
columns and then plots them on a map using Leaflet.markercluster.
More about this project: Datasette plugins, and building a clustered map visualization
datasette-cluster-map-demo.datasettes.com hosts a demo of this plugin running against several different tables.
Run pip install datasette-cluster-map
to add this plugin to your Datasette virtual environment. Datasette will automatically load the plugin if it is installed in this way.
If you are deploying using the datasette publish
command you can use the --install
option:
datasette publish now mydb.db --install=datasette-cluster-map
If any of your tables have a latitude
and longitude
column, a map will be automatically displayed.
If your columns are called something else you can configure the column names using plugin configuration in a metadata.json
file. For example, if all of your columns are called xlat
and xlng
you can create a metadata.json
file like this:
{
"title": "Regular metadata keys can go here too",
"plugins": {
"datasette-cluster-map": {
"latitude_column": "xlat",
"longitude_column": "xlng"
}
}
}
Then run Datasette like this:
datasette mydata.db -m metadata.json
This will configure the required column names for every database loaded by that Datasette instance.
If you want to customize the column names for just one table in one database, you can do something like this:
{
"databases": {
"polar-bears": {
"tables": {
"USGS_WC_eartag_deployments_2009-2011": {
"plugins": {
"datasette-cluster-map": {
"latitude_column": "Capture Latitude",
"longitude_column": "Capture Longitude"
}
}
}
}
}
}
}
You can also use a custom SQL query to rename those columns to latitude
and longitude
, for example:
select *,
"Capture Latitude" as latitude,
"Capture Longitude" as longitude
from [USGS_WC_eartag_deployments_2009-2011]
datasette publish now \
--install=datasette-cluster-map \
--name="datasette-cluster-map-demo" \
--alias="datasette-cluster-map-demo.datasettes.com" \
polar-bears.db sf-trees.db