Datasette的瓦片服务器,用于从MBTiles包中提供服务瓦片
项目描述
datasette-tiles
Datasette插件,用于服务MBTiles地图瓦片
安装
在Datasette相同的环境中安装此插件。
$ datasette install datasette-tiles
演示
您可以在https://datasette-tiles-demo.datasette.io/-/tiles尝试此插件
使用方法
此插件会扫描所有连接到Datasette的数据库文件,以查看其中是否有有效的MBTiles数据库。
然后,它可以在以下URL中从这些数据库提供服务瓦片
/-/tiles/db-name/zoom/x/y.png
在/-/tiles/db-name
中可以找到每个数据库的示例地图,以演示该数据库配置的最小和最大缩放级别 - 这也可以通过数据库的表和数据库操作菜单访问。
访问/-/tiles
以查看附加有效数据库的索引页面。
您可以使用datasette-basemap插件来获取默认的basemap
瓦片集,处理0到6级的缩放级别,使用OpenStreetMap。
瓦片坐标系统
在线地图中常用两种瓦片坐标系统。第一个由OpenStreetMap和Google Maps使用,第二个来自名为瓦片地图服务或TMS的规范。
两个系统都使用三个组件:z/x/y
- 其中z
是缩放级别,x
是列,y
是行。
区别在于y
值的计数方式。OpenStreetMap中y=0位于顶部。TMS中y=0位于底部。
示例说明:在缩放级别2时,地图分为16个总瓦片。OpenStreetMap方案按如下方式编号
0/0 1/0 2/0 3/0
0/1 1/1 2/1 3/1
0/2 1/2 2/2 3/2
0/3 1/3 2/3 3/3
TMS方案如下
0/3 1/3 2/3 3/3
0/2 1/2 2/2 3/2
0/1 1/1 2/1 3/1
0/0 1/0 2/0 3/0
datasette-tiles
可以使用这两种标准之一来提供瓦片。对于OpenStreetMap / Google Maps 顶部为0的系统,使用以下URL
/-/tiles/database-name/{z}/{x}/{y}.png
对于底部为0的TMS系统,使用此URL
/-/tiles-tms/database-name/{z}/{x}/{y}.png
配置Leaflet瓦片层
以下JavaScript将配置一个Leaflet瓦片层以用于此插件
var tiles = leaflet.tileLayer("/-/tiles/basemap/{z}/{x}/{y}.png", {
minZoom: 0,
maxZoom: 6,
attribution: "\u00a9 OpenStreetMap contributors"
});
瓦片堆栈
datasette-tiles
可以被配置为从多个附加的MBTiles文件中提供瓦片,按顺序在每个数据库中搜索瓦片,如果找不到该瓦片,则回退到下一个。
要查看此功能的演示,请访问https://datasette-tiles-demo.datasette.io/-/tiles-stack并放大到日本。一旦您放大到缩放级别6和7,它应该开始显示Stamen的Toner地图。
/-/tiles-stack/{z}/{x}/{y}.png
端点提供了此功能。
如果您这样启动Datasette
datasette world.mbtiles country.mbtiles city1.mbtiles city2.mbtiles
来自/-/tiles-stack
路径的任何瓦片请求将首先检查city2
数据库,然后是city1
,然后是country
,然后是world
。
如果您已安装datasette-basemap插件,则它将受到特殊处理:始终将basemap
数据库作为最后一个数据库检查瓦片。
您可以选择使用tiles-stack-order
插件设置显式配置顺序,而不是依赖于数据库附加的顺序。将以下内容添加到您的metadata.json
文件中
{
"plugins": {
"datasette-tiles": {
"tiles-stack-order": ["world", "country"]
}
}
}
然后您可以像这样运行Datasette
datasette -m metadata.json country.mbtiles world.mbtiles
此端点使用OpenStreetMap / Google Maps坐标系统提供瓦片。要使用TMS坐标系统加载瓦片,请使用此端点。
/-/tiles-stack-tms/{z}/{x}/{y}.png
开发
要本地设置此插件,首先检出代码。然后创建一个新的虚拟环境
cd datasette-tiles
python3 -mvenv venv
source venv/bin/activate
或者如果您使用pipenv
pipenv shell
现在安装依赖项和测试
pip install -e '.[test]'
要运行测试
pytest