【TileServer GL】TileServer GL官方文档翻译

2024-04-17 03:04

本文主要是介绍【TileServer GL】TileServer GL官方文档翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方文档:
maptiler-tileserver: https://maptiler-tileserver.readthedocs.io/en/latest/index.html
TileServer GL: https://tileserver.readthedocs.io/en/latest/index.html

TileServer GL 说明

  • 1 安装
    • Docker
    • npm
      • 使用npm.js全局安装
      • 从源代码本地安装
      • 本机依赖项
    • `tileserver-gl-light on npm`
  • 2 用法
  • 3 配置文件
    • `options`
      • `paths`
      • `domains`
      • `frontPage`
      • `formatQuality`
      • `maxScaleFactor`
      • `maxSize`
      • `tileMargin`
      • `minRendererPoolSizes`
      • `maxRendererPoolSizes`
      • `serveAllStyles`
      • `watermark`
    • `styles`
    • `data`
    • 从 JSON 样式引用本地文件
      • MBTiles
      • PMTiles
      • `Sprites`
      • `Fonts (glyphs)`
  • 4 部署
    • 缓存
      • Cloudflare 缓存规则
      • Nginx 缓存
    • 安全
    • 在代理或负载均衡器后面运行
  • 5 可用端点
    • Styles
    • 渲染瓦片
    • WMTS 功能
    • 静态图像
    • 源数据
    • TileJSON 数组
    • 可用字体列表
    • 健康检查

1 安装

Docker

运行 docker 镜像时,无需特殊安装 - 如果镜像不存在,docker 会自动下载。
docker run --rm -it -v $(pwd):/data -p 8080:80 maptiler/tileserver-gl
其他选项(请参阅用法)可以通过将其附加到此命令的末尾来传递到 TileServer GL。例如,您可以执行以下操作:

  • docker run ... maptiler/tileserver-gl --mbtiles my-tiles.mbtiles– 明确指定要使用的 mbtiles(如果文件夹中有更多)
  • docker run ... maptiler/tileserver-gl --verbose– 查看自动创建的默认配置

npm

安装了本机依赖项的以下平台支持 npm 。

  • 操作系统:
    • Ubuntu 22.04(x64/arm64)
    • macOS 12 (x64/arm64)
    • Windows (x64)
  • Node.js 18,20

使用npm.js全局安装

npm install -g tileserver-gl

从源代码本地安装

git clone https://github.com/maptiler/tileserver-gl.git
cd tileserver-gl
npm install
node 

本机依赖项

如果您计划在不使用 Docker 的情况下本机运行 TileServer GL,则需要确保安装一些本机依赖项。您需要安装的确切包名称在不同平台上可能有所不同。
Debian 11 需要这些:

  • libgles2-mesa
  • libegl1
  • xvfb
  • xauth
  • libopengl0
  • libcurl4
  • curl
  • libuv1-dev
  • libc6-dev
  • http://archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_2.0.3-0ubuntu1_amd64.deb
  • http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu66_66.1-2ubuntu2_amd64.deb

Ubuntu 20.04 需要这些:

  • libcairo2-dev
  • libjpeg8-dev
  • libpango1.0-dev
  • libgif-dev
  • build-essential
  • g++
  • xvfb
  • libgles2-mesa-dev
  • libgbm-dev
  • libxxf86vm-dev

MacOS 12 (x64/arm64)¶

  • brew install pkg-config cairo libpng jpeg giflib

Windows (x64)

  • Microsoft Visual C++ 2015-2022 Redistributable

tileserver-gl-light on npm

或者,您可以使用tileserver-gl-light包,它是纯 JavaScript(没有任何本机依赖项)并且可以在任何地方运行,但不包含栅格化要素切片。

2 用法

Usage: main.js tileserver-gl [file] [options]Options:--file <file>             MBTiles or PMTiles fileignored if the configuration file is also specified--mbtiles <file>          (DEPRECIATED) MBTiles fileignored if file is also specifiedignored if the configuration file is also specified-c, --config <file>       Configuration file [config.json] (default: "config.json")-b, --bind <address>      Bind address-p, --port <port>         Port [8080] (default: 8080)-C|--no-cors              Disable Cross-origin resource sharing headers-u|--public_url <url>     Enable exposing the server on subpaths, not necessarily the root of the domain-V, --verbose             More verbose output-s, --silent              Less verbose output-l|--log_file <file>      output log file (defaults to standard out)-f|--log_format <format>  define the log format:  https://github.com/expressjs/morgan#morganformat-options-v, --version             output the version number-h, --help                display help for command

默认预览样式和配置:

  • 如果未指定配置文件,则使用默认预览样式(与 openmaptiles 兼容)。
  • 如果未指定数据文件(并且在当前工作目录中未找到),则下载示例文件(显示苏黎世区域 Zurich area)

重新加载配置:

通过向节点进程发送 SIGHUP 信号,可以重新加载配置文件,而无需重新启动整个进程。

  • 运行tileserver-gl docker容器时,可以使用docker kill -s HUP tileserver-gl命令。
  • 当tileserver -gl作为docker-compose服务运行时,可以使用docker-compose Kill -s HUPtileserver-gl-service-name 。

Docker 和–port
在 Docker 容器中运行tileserver-gl 时,使用–port选项会使容器错误地显得不健康。相反,建议使用 Docker 的端口映射并将默认端口 8080 映射到所需的外部端口。

3 配置文件

配置文件定义应用程序的行为。这是一个常规的 JSON 文件。
例子:

{"options": {"paths": {"root": "","fonts": "fonts","sprites": "sprites","styles": "styles","mbtiles": ""},"domains": ["localhost:8080","127.0.0.1:8080"],"formatQuality": {"jpeg": 80,"webp": 90},"maxScaleFactor": 3,"maxSize": 2048,"pbfAlias": "pbf","serveAllFonts": false,"serveAllStyles": false,"serveStaticMaps": true,"tileMargin": 0},"styles": {"basic": {"style": "basic.json","tilejson": {"type": "overlay","bounds": [8.44806, 47.32023, 8.62537, 47.43468]}},"hybrid": {"style": "satellite-hybrid.json","serve_rendered": false,"tilejson": {"format": "webp"}}},"data": {"zurich-vector": {"mbtiles": "zurich.mbtiles"}}
}

options

paths

定义在哪里查找不同类型的输入数据。

root的值用作所有数据类型的前缀。

domains

您可以使用它来选择指定在哪些域上可以访问渲染的图块。这可用于基本负载平衡或绕过浏览器对每个域的连接数的限制。

frontPage

root用作首页的html 路径(相对于路径)。

使用true(或不使用)为默认的 TileServer GL 首页提供样式和数据列表。用于false完全禁用首页 (404)。

formatQuality

各个图像格式的压缩质量。[0-100]

maxScaleFactor

允许栅格图块和静态地图请求的最大比例因子(例如@3x后缀)。另请参阅maxSize下文。默认值为3最大值9

maxSize

允许渲染的最大图像边长(包括比例因子)。更改此值时要小心,因为需要考虑硬件限制。默认为2048

tileMargin

在图块渲染期间添加的附加图像边长是从提供的图块中裁剪出来的。这对于解决裁剪标签的问题很有用,但它确实会降低性能,因为需要加载额外的相邻矢量切片来生成单个切片。默认是0禁用此处理。

minRendererPoolSizes

每个比例因子的栅格图块渲染器的最小数量。该值是一个数组:第一个元素是比例因子一的最小渲染器数量,第二个元素是比例因子二的渲染器的最小数量,依此类推。如果数组的元素少于maxScaleFactor,则最后一个元素也用于所有剩余的比例因子。选择渲染器池大小是内存使用和速度之间的权衡。合理的值取决于您的硬件以及样式数量和比例因子。如果您有足够的内存,您需要将其设置为等于maxRendererPoolSizes以避免由于渲染器破坏和重新创建而增加延迟。如果您需要节省内存,则需要低于 的值maxRendererPoolSizes,可能会为更常见的比例因子分配更多渲染器。默认为[8, 4, 2]

maxRendererPoolSizes

每个比例因子的栅格切片渲染器的最大数量。价值和考虑因素与上面类似minRendererPoolSizes。如果您有足够的内存,请尝试将这些值设置为等于或略高于您的处理器数量,例如,如果您有四个处理器,请尝试将值设置为[6]。如果需要节省内存,请尝试使用较低的不太常见的比例因子值。默认为.[16, 8, 4]

serveAllStyles

paths.styles如果启用此选项,将提供所有样式。(没有递归,仅.json使用文件。)该过程还将监视此目录中的更改并动态删除/添加更多样式。建议serveAllFonts在使用该选项时也使用该选项。

watermark

要作为水印(左下角)渲染到栅格图块(和静态地图)中的可选字符串。可用于硬编码属性等(也可以按样式指定)。默认情况下不使用。

styles

该对象中的每一项都定义一种样式(地图)。它可以有以下选项:

  • style– 样式 json 文件的名称 [必需]
  • serve_rendered– 是否渲染此样式的栅格瓦片
  • serve_data– 是否允许访问原始图块、精灵和所需的字形
  • tilejson– 添加到为栅格数据创建的 TileJSON 的属性
    • format和bounds有特别用处

data

每一项指定一个应由服务器访问的数据源。它必须具有以下选项之一::

  • mbtiles– mbtiles 文件的名称
  • pmtiles– pmtiles 文件或 url 的名称。

除非您明确想要提供原始数据,否则不需要在此处指定 mbtiles 文件。

例如:

"data": {"source1": {"mbtiles": "source1.mbtiles"},"source2": {"pmtiles": "source2.pmtiles"},"source3": {"pmtiles": "https://foo.lan/source3.pmtiles"}
}

从 JSON 样式引用本地文件

您可以从 JSON 样式链接各种数据源(例如甚至远程 TileJSON)。

MBTiles

要指定您要使用本地 mbtile,请使用以下语法:mbtiles://switzerland.mbtilesswitzerland.mbtilesTileServer-GL 将尝试在root+路径中查找文件mbtiles。

例如:

"sources": {"source1": {"url": "mbtiles://switzerland.mbtiles","type": "vector"}
}

或者,您可以使用mbtiles://{zurich-vector}从配置引用现有数据对象。在这种情况下,服务器将查看config.json以确定使用哪个 mbtiles 文件。对于上面的配置,这相当于mbtiles://zurich.mbtiles.

PMTiles

要指定您要使用本地 pmtile,请使用以下语法:pmtiles://source2.pmtiles。source2.pmtilesTileServer-GL 将尝试在root+路径中查找文件pmtiles。

要指定您要使用基于 url 的 pmtile,请使用以下语法:pmtiles://https://foo.lan/source3.pmtiles。

例如:

"sources": {"source2": {"url": "pmtiles://source2.pmtiles","type": "vector"},"source3": {"url": "pmtiles://https://foo.lan/source3.pmtiles","type": "vector"},
}

或者,您可以使用pmtiles://{source2}从配置引用现有数据对象。在这种情况下,服务器将config.json通过数据 ID 来查看以确定要使用哪个文件。对于上面的配置,这相当于pmtiles://source2.mbtiles.

Sprites

如果您的样式需要任何精灵图,请确保样式 JSON 在属性中包含正确的路径sprite

它可以是本地路径(例如my-style/sprite)或远程 http(s) 位置(例如https://mycdn.com/my-style/sprite)。此路径中添加了几个可能的扩展名,因此应存在以下文件:

  • sprite.json
  • sprite.png
  • sprite@2x.json
  • sprite@2x.png

您还可以在精灵图路径中使用以下占位符以方便使用:

  • {style}– 替换为样式文件的名称 ( xxx.json)
  • {styleJsonFolder}– 替换为样式文件的路径

Fonts (glyphs)

与精灵图类似,样式 JSON 也需要包含字体字形的正确路径(在属性中glyphs),并且可以是本地的和远程的。
它应包含以下占位符:

  • {fontstack}– 字体和变体的名称
  • {range}– 字形的范围

例如,"glyphs": "{fontstack}/{range}.pbf" 将指示TileServer GL查找字体 fonts/Open Sans/0-255.pbf等文件(fonts 来自上面config.json示例的path属性)。

4 部署

通常 - 您应该在前端使用 nginx/lighttpd/apache - 并且tileserver-gl 服务器在生产部署中隐藏在其后面。

缓存

您可以使用很多选项来创建适当的缓存基础设施:Varnish、CloudFlare……

Cloudflare 缓存规则

Cloudflare 支持用于配置缓存的自定义规则: https://developers.cloudflare.com/cache/about/cache-rules/
tileserver-gl 以多种格式渲染图块 - 渲染栅格数据的格式有.png、.jpg (jpeg)、.webp,对于矢量数据有.pbf格式。另外,生成.json格式的样式信息。

端点数据可以由 Cloudflare 配置生成缓存。例如,要缓存矢量端点,您需要为数据配置 Cloudflare.pbf规则和.json数据。

创建匹配hostname (equal)URI Path (ends with).pbf.json字段的规则。将缓存状态设置为可缓存以启用缓存,并将Edge TTL 覆盖为 Browser TTL7天(取决于您的应用程序使用情况)。

这将确保您的瓦片在客户端和 Cloudflare 缓存 7 天。如果瓦片服务器关闭或用户无法访问互联网,它将尝试使用缓存的瓦片。

请注意,Browser TTL将覆盖客户端设备上的过期日期。如果您重建地图,旧的瓦片将一直呈现,直到其过期或被客户端设备上的缓存清除。

Nginx 缓存

如果您在tileserver前面设置了反向代理,您可能需要启用缓存,因为它将大大减轻应用程序的请求。
配置代理缓存路径指令来初始化缓存存储:

proxy_cache_path /var/cache/nginx/tileserverkeys_zone=TileserverCache:50mlevels=1:2inactive=2wmax_size=10g;

确保为 /var/cache/nginx/tileserver 文件夹授予适当的权限。通常 nginx 使用 www-data 用户运行。在特定代理通道上启用缓存:

location / {include proxy_params;proxy_pass http://127.0.0.1:8080/;proxy_cache TileserverCache;proxy_cache_valid 200 1w;# add_header X-Cache-Status $upstream_cache_status;
}

如果您需要确认缓存是否有效,请取消注释 X-Cache-Status 标头。这将返回带有HIT或MISS标头值的响应标头,该标头值指示 nginx 是否缓存了响应。
更改样式或图块信息后,请确保通过删除配置目录中的文件来清理缓存。您可以尝试使用缓存值来满足您的需求。
有关 Nginx 缓存的更多信息:https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/

安全

Nginx 可用于通过 https、密码、引用者、IP 地址限制、访问密钥等添加保护。

在代理或负载均衡器后面运行

如果您需要在代理后面运行 TileServer GL,请确保代理将X-Forwarded-*标头发送到服务器(最重要的是X-Forwarded-Host和X-Forwarded-Proto),以确保 TileJSON 等内部生成的 URL 使用所需的域和协议。

5 可用端点

如果您通过配置的端口(默认 8080)访问服务器,您可以看到您的地图出现在浏览器中。

Styles

  • 样式位于/styles/{id}/style.json(+ array at /styles.json)
    • 精灵图位于/styles/{id}/sprite[@2x].{format}
    • 字体样式位于/fonts/{fontstack}/{start}-{end}.pbf

渲染瓦片

  • 渲染后的瓦片供应于/styles/{id}/{z}/{x}/{y}[@2x].{format}
    • 可选@2x(或@3x, @4x)部分可用于渲染 HiDPI(视网膜)瓦片
    • 可用格式:png, jpg( jpeg),webp
    • TileJSON 位于/styles/{id}.json
  • 渲染的图块在该tileserver-gl-light版本中不可用。

WMTS 功能

  • WMTS 功能的服务地点为/styles/{id}/wmts.xml

静态图像

  • 几个端点:
    • /styles/{id}/static/{lon},{lat},{zoom}[@{bearing}[,{pitch}]]/{width}x{height}[@2x].{format}(以中心为基础)
    • /styles/{id}/static/{minx},{miny},{maxx},{maxy}/{width}x{height}[@2x].{format}(基于区域)
    • /styles/{id}/static/auto/{width}x{height}[@2x].{format}(自动调整路径 - 见下文)
  • 所有静态图像端点还支持以下查询参数:
    • path - 逗号分隔lng,lat管道分隔对
      • 例如5.9,45.8|5.9,47.8|10.5,47.8|10.5,45.8|5.9,45.8
    • latlng- 表示path坐标是lat,lng有序的,而不是通常的lng,lat
    • fill- 用作填充的颜色(例如red, rgba(255,255,255,0.5), #0000ff)
    • stroke- 路径描边的颜色
    • width- 笔画的宽度
    • padding- 拟合端点的“百分比”填充(基于区域和路径自动拟合)
      • 值0.1意味着“向每边添加 10% 的大小,以确保感兴趣的区域清晰可见”
  • 您还可以使用/styles/{id}/static/raw/...具有原始球面墨卡托坐标 (EPSG:3857) 的(实验)端点,而不是 WGS84。
  • tileserver-gl-light版本不提供静态图像。

源数据

  • 源数据服务路径/data/{mbtiles}/{z}/{x}/{y}.{format}
    • 格式取决于源文件(通常png或pbf)
      • 如果原始格式是pbf,那么也可以获取 geojson 格式(对于检查瓦片很有用)
    • TileJSON 位于/data/{id}.json

TileJSON 数组

所有 TileJSON 的数组位于[/{tileSize}]/index.json ([/{tileSize}]/rendered.json; /data.json)

  • 可选瓦片大小/{tileSize}(例如/256、/512)。如果省略,tileSize默认为256。

可用字体列表

可用字体名称的数组位于/fonts.json

健康检查

报告健康状态的端点/health当前返回:

  • 503启动 - 在一切初始化之前的一小段时间
  • 200OK - 当服务器运行时

这篇关于【TileServer GL】TileServer GL官方文档翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/910631

相关文章

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取